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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 0,91 MB

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

w