ĐẠ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: 40901457: Nguyễn Phước Lộc 40902767: Võ Nhựt Tiến 40902741: Cù Văn Tiến 40903057: Huỳnh Trung Trực 40902907: Nguyễn Kim Triển 40902935: Phan Đức Trí Đề tài: Viết chương trình giảiphươngtrìnhbằngphương pháp Runge-Kutta bậc 4. Vẽ đồ thị hàm nhận được. M t ph ng trìnhviphân c p 1 có th vi t d i d ng gi i c yf (x,y) mà ta có th tìm c hàm y t o hàm c a nó. T n t i vơ s nghi m tho mãn ph ng trình trên. M i nghi m ph thu c vào m t h ng s tu ý. Khi cho tr c giá tr ban u c a y là y o t i giá tr u x o ta nh n c m t nghi m riêng c a ph ng trình. Bài tốn Cauchy (hay bài tốn có i u ki n u) tóm l i nh sau: cho x sao cho b x a, tìm y(x) tho mãn i u ki n: )a(y )y,x( f )x(y (1) Ng i ta ch ng minh r ng bài tốn này có m t nghi m duy nh t n u f tho mãn i u ki n Lipschitz: 2121 yyL)y,x(f)y,x(f v i L là m t h ng s d ng. Ng i ta c ng ch ng minh r ng n u f y ( o hàm c a f theo y ) là liên t c và b ch n thì f tho mãn i u ki n Lipschitz. M t cách t ng qt h n, ng i ta nh ngh a h ph ng trình b c 1: )y, ,y,y,x(fy )y, ,y,y,x(fy )y, ,y,y,x( f y n21nn n2122 n2111 Ta ph i tìm nghi m y 1 , y 2 , , y n sao cho: )a(Y )X,x( f )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 N u ph ng trìnhviphân có b c cao h n (n), nghi m s ph thu c vào n h ng s tu ý. nh n c m t nghi m riêng, ta ph i cho n i u ki n u. Bài toán s có giá tr u n u v i giá tr x o ã cho ta cho y(x o ), y (x o ), y (x o ), M t ph ng trìnhviphân b c n có th a v thành m t h ph ng trìnhviphân c p 1. Ví d n u ta có ph ng trìnhviphân c p 2: )a(y,)a(y )y,y,x( f y Khi t u = y và v = y ta nh n c h ph ng trìnhviphân c p 1: )v,u,x(gv vu v i i u ki n u: u(a) = và v(a) = Các ph ng pháp gi i ph ng trìnhviphân c trình bày trong ch ng này là các ph ng pháp r i r c: o n [a, b] c chia thành n o n nh b ng nhau c g i là các b c tích phân h = ( b a) / n. §2. PH NG PHÁP EULER ch a chính xác i v i các bài toán th c t . Xét bài toán Cauchy (1). Gi s ta ã tìm c giá tr g n úng y i c a y(x i ) và mu n tính y i+1 c a y(x i+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(yh)x(y)x(y )1m( 1m i )m( m i 2 ii1i (11) v i c (x i , x i+1 ) và: )x(y,x f )x(y iii )x(y,xf dx d )x(y ii 1k 1k i )k( Ta vi t l i (11) d i d ng: )c(y !m h )x(y !m h )x(y 2 h )x(yhyy )1m( 1m i )m( m i 2 ii1i (12) Ta ã kéo dài khai tri n Taylor k t qu chính xác h n. tính y i , y i v.v. ta có th dùng ph ng pháp Runge Kutta b ng cách t: )i( 44 )i( 33 )i( 22 )i( 11i1i krkrkrkryy (13) trong ó: )kky,bhx(hfk )ky,ahx(hfk )y,x(hfk )i( 2 )i( 1ii )i( 3 )i( 1ii )i( 2 ii )i( 1 (14) và ta c n xác nh các h s a, b, ; , , , ; r 1 , r 2 , sao cho v ph i c a (13) khác v i v ph i c a (12) m t vô cùng bé c p cao nh t có th có i v i h. Khi dùng công th c Runge Kutta b c hai ta có: )ky,ahx(hfk )y,x(hfk )i( 1ii )i( 2 ii )i( 1 (15) và )i( 22 )i( 11i1i krkryy (16) Ta có: y (x) = f[x,y(x)] )x(y,x f )x(y,x f )x(y yx Do ó v ph i c a (12) là: )x(y)y,x(f)y,x(f 2 h )y,x(hf iiyiix 2 ii (17) M t khác theo (15) và theo công th c Taylor ta có: PHÖÔNG PHAÙP RUNGE KUTTA iii )i( 1 yh)y,x(h f k ])y,x( f k)y,x( f ah)y,x( f [hk iiy )i( 1iixii )i( 2 Do ó v ph i c a (16) là: )]y,x( f yr)y,x( f ar[h)y,x( f )rr(h iiyi2iix2 2 ii21 (18) Bây gi cho (17) và (18) khác nhau m t vô cùng bé c p O(h 3 ) ta tìm c các h s ch a bi t khi cân b ng các s h ng ch a h và ch a h 2 : r 1 + r 2 = 1 a.r 1 = 1/ 2 .r 2 = 1 Nh v y: = a, r 1 = (2a 1)/ 2a, r 2 = 1/ 2a v i a c ch n b t kì. N u a = 1 / 2 thì r 1 = 0 và r 2 = 1. Lúc này ta nh n c công th c Euler. N u a=1 thì r 1 = 1 / 2 và r 2 = 1/2. Lúc này ta nh n c công th c Euler c i ti n. M t cách t ng t chúng ta nh n c công th c Runge Kutta b c 4. Công th c này hay c dùng trong tính toán th c t : k 1 = h.f(x i , y i ) k 2 = h.f(x i +h/ 2, y i + k 1 / 2) k 3 = h.f(x i +h/ 2, y i + k 2 / 2) k 4 = h.f(x i +h, y i + k 3 ) yi +1 = yi + (k 1 + 2k 2 + 2k 3 + k 4 ) / 6 Ta xây d ng hàm rungekutta() th c hi n công th c Runge Kutta b c 4: 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’ = y – x 2 +1, 0≤ x ≤1 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.5e x 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 Xây dựng hàm rk4 trong matlab để giải phươngtrìnhviphân theo phươngphá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ằng4 thì chương trình sẽ yêu cầu ta nhập số đoạn chia n. Để giải phươngtrìnhviphâ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 trực tiếp hàm f từ của sổ Command Windows: Đị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 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 >> . ph ng trình vi phân b c n có th a v thành m t h ph ng trình vi phân c p 1. Ví d n u ta có ph ng trình vi phân c p 2: )a(y,)a(y )y,y,x( f y Khi t u = y và v = y ta nh n c h ph ng trình vi phân. 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 Xây dựng hàm rk4 trong matlab để giải phương trình vi phân theo phương pháp. 40 902907: Nguyễn Kim Triển 40 902935: Phan Đức Trí Đề 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