1. Trang chủ
  2. » Luận Văn - Báo Cáo

giải phương trình vi phân bằng phương pháp runge-kuta 4

9 2,4K 20
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giải phương trình vi phân bằng phương pháp Runge-Kuta 4
Tác giả Nguyễn Phước Lộc, Võ Nhựt Tiến, Cù Văn Tiến, Huỳnh Trung Trực, Nguyễn Kim Triển, Phan Đức Trí
Người hướng dẫn Lê Thị Quỳnh Hà
Trường học Trường Đại Học Bách Khoa - Đại Học Quốc Gia Thành Phố Hồ Chí Minh
Chuyên ngành Toán ứng dụng, Giải tích, Phương trình vi phân
Thể loại Đề tài
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 9
Dung lượng 0,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA *** KHOA ĐIỆN – ĐIỆN TỬ Giáo viên hướng dẫn: Lê Thị Quỳnh Hà Các thành viên trong nhóm:... Đề tài: Viết chương trình g

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCH KHOA

***

KHOA ĐIỆN – ĐIỆN TỬ

Giáo viên hướng dẫn: Lê Thị Quỳnh Hà

Các thành viên trong nhóm:

Trang 2

Đề tài: Viết chương trình giải phương trình bằng phương pháp Runge-Kutta bậc 4

Vẽ đồ thị hàm nhận được

Trang 3

M t ph ng trình vi phân c p 1 cĩ th vi t d i d ng gi i c

ki n:

) a ( y

) y , x ( ) x ( y

(1)

tho mãn i u ki n Lipschitz:

2 1 2

1) (x,y ) L y y y

, x (

t c và b ch n thì f tho mãn i u ki n Lipschitz

) y , , y , y , x ( f y

) y , , y , y , x ( f y

) y , , y , y , x ( f y

n 2

1 n n

n 2

1 2 2

n 2

1 1 1

Ta ph i tìm nghi m y1, y2, , yn sao cho:

) a ( Y

) X , x ( ) x ( Y

v i:

n

2 1

y

y y Y

n

2 1

f

f f F

n

2 1

y

y y Y

CƠ SỞ LÝ THUYẾT

BÀI TOÁN CAUCHY

Trang 4

N u ph ng trình vi phân có b c cao h n (n), nghi m s ph thu c vào

Bài toán s có giá tr u n u v i giá tr xo ã cho ta cho y(xo), y (xo), y (xo),

) a ( y , )

a

(

y

) y , y , x ( y

) v , u , x ( g v

v u

§2 PH NG PHÁP EULER

Trang 5

ch a chính xác i v i các bài tốn th c t

y(xi) và mu n tính yi+1 c a y(xi+1) Tr c h t ta vi t cơng th c Taylor:

) c ( y

! m

h ) x ( y

! m

h )

x ( y 2

h ) x ( y h ) x ( y ) x

(

1 m

i ) m ( m

i

2

i i

1

v i c (xi, xi+1) và:

) x ( y , x f )

x

(

) x ( y , x f dx

d ) x

(

1 k

i )

k

(

) c ( y

! m

h ) x ( y

! m

h )

x ( y 2

h ) x ( y h y

1 m i

) m ( m i

2 i

i 1

) i ( 4 4 ) i ( 3 3 ) i ( 2 2 ) i ( 1 1 i 1

trong ĩ:

) k k

y , bh x

( hf k

) k y

, ah x ( hf k

) y , x ( hf k

) i ( 2 ) i ( 1 i

i )

i

(

3

) i ( 1 i

i )

i

(

2

i i )

i

(

1

(14)

Khi dùng cơng th c Runge Kutta b c hai ta cĩ:

) k y

, ah x ( hf k

) y , x ( hf k

) i ( 1 i

i )

i

(

2

i i )

i

(

1

(15)

2 2 ) i ( 1 1 i 1

Ta cĩ:

y (x) = f[x,y(x)]

) x ( y , x f ) x ( y , x f )

x

(

Do ĩ v ph i c a (12) là:

) x ( y ) y , x ( f ) y , x ( f 2

h ) y , x

(

2 i

M t khác theo (15) và theo cơng th c Taylor ta cĩ:

PHƯƠNG PHÁP RUNGE KUTTA

Trang 6

i i

i )

i

(

1 hf(x ,y ) hy

k

] ) y , x ( f k ) y , x ( f ah ) y , x ( [ h

Do ó v ph i c a (16) là:

)]

y , x ( f y r ) y , x ( f ar [ h ) y , x ( ) r r

(

h 1 2 i i 2 2 x i i 2 i y i i (18)

r1+ r2 = 1

a.r1 = 1/ 2

.r2 = 1

k1 = h.f(xi, yi)

k2 = h.f(xi+h/ 2, yi+ k1/ 2)

k3 = h.f(xi+h/ 2, yi+ k2/ 2)

k4 = h.f(xi+h, yi+ k3)

yi+1= yi + (k1+ 2k2 + 2k3+ k4) / 6

Trang 7

Ví dụ : Dùng công thức Runge-Kutta tìm nghiệm gần đúng của bài toán Cauchy

y(0) = 0.5 với n = 5 Tính sai số biết nghiệm chính xác là : y(x) = (x+1)2 – 0.5ex

Giải:

Ta có h = 0.2

x 0 = 0, x 1 = 0.2, x 2 = 0.4, x 3 = 0.6, x 4 = 0.8, x 5 = 1

Trang 8

Xây dựng hàm rk4 trong matlab để giải phương trình vi phân theo phương pháp trên

Hàm rk4 sẽ nhận vào 4 đến 5 đối số

Nếu ta nhập số đối số bé hơn 4 thì chương trình sẽ báo lỗi để nhắc nhỡ

Nếu ta nhập số đối số bằng 4 thì chương trình sẽ yêu cầu ta nhập số đoạn chia n

Để giải phương trình vi phân dùng hàm trên trước hết ta phải định nghĩa hàm f

Ví dụ: Ta giải lại phương trình: y’ = y – x 2 +1, 0≤ x ≤1, y(0) = 0.5, với n = 5

 Định nghĩa hàm f trong của sổ Script rồi lưu thành file f.m

 Vẽ đồ thị từ các giá trị x k ,y k (giá trị trả về của hàm rk4):

function[x,y]=rk4(f,x0,x1,y0,h)

if nargin<4, error('Vui long nhap du doi so !! '), end;

if nargin<5, m = input('Nhap so doan chia n = ');,h=(x1-x0)/m; end;

x=[]; x(1)=[x0]; n=(x1-x0)/h;

for i=1:n, x(i+1)=x(i)+h; end;

y=[]; y(1)=[y0];

for i=1:n

K1=h*f(x(i),y(i));

K2=h*f(x(i)+h/2,y(i)+K1/2);

K3=h*f(x(i)+h/2,y(i)+K2/2);

K4=h*f(x(i)+h,y(i)+K3);

y(i+1)=y(i)+(K1+2*K2+2*K3+K4)/6;

end;

function [dy] = f(a,b)

dy = b-a^2 +1;

end

>> [X,Y]=rk4(inline('y-x^2+1','x','y'),0,1,0.5)

>> [X,Y]=rk4(@f,0,1,0.5)

plot(X,Y,'rd-', 'LineWidth',3) xlabel('Truc X')

ylabel('Truc Y') title('DO THI CUA HAM DA CHO') grid on

Trang 9

Kết quả cửa sổ Command Windows:

>> [X,Y]=rk4(inline('y-x^2+1','x','y'),0,1,0.5)

Nhap so doan chia n = 5

n =

5

X =

0 0.2000 0.4000 0.6000 0.8000 1.0000

Y =

0.5000 0.8293 1.2141 1.6489 2.1272 2.6408

>> ve

>>

Ngày đăng: 29/06/2014, 09:32

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w