1. Trang chủ
  2. » Giáo án - Bài giảng

Tính vi phân cấp ba của hàm số bất kỳ theo phương pháp runge

2 0 0

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

THÔNG TIN TÀI LIỆU

Nội dung

Tính vi phân cấp ba của hàm số bất kỳ theo phương pháp Runge Kutta syms x y z t; format long f=input(''''f=''''); g=input(''''g=''''); p=input(''''p=''''); x0=input(''''x0=''''); y0=input(''''y0=''''); z0=input(''''z0=''''); t0=input(''''t[.]

Tính vi phân cấp ba hàm số theo phương pháp Runge-Kutta: syms x y z t; format long f=input('f='); g=input('g='); p=input('p='); x0=input('x0='); y0=input('y0='); z0=input('z0='); t0=input('t0='); x1=input('x1='); h=input('h='); X=[];X=[X,x0];n=(x1-x0)/h; Y=[];Y=[Y,y0]; Z=[];Z=[Z,z0]; T=[];T=[T,t0]; for i=1:n K1=h*subs(f,{x,y,z,t},{X(i),Y(i),Z(i),T(i)}); M1=h*subs(g,{x,y,z,t},{X(i),Y(i),Z(i),T(i)}); N1=h*subs(p,{x,y,z,t},{X(i),Y(i),Z(i),T(i)}); K2=h*subs(f,{x,y,z,t},{X(i)+h/2,Y(i)+K1/2,Z(i)+M1/2,T(i) +N1/2}); M2=h*subs(g,{x,y,z,t},{X(i)+h/2,Y(i)+K1/2,Z(i)+M1/2,T(i) +N1/2}); N2=h*subs(p,{x,y,z,t},{X(i)+h/2,Y(i)+K1/2,Z(i)+M1/2,T(i) +N1/2}); K3=h*subs(f,{x,y,z,t},{X(i)+h/2,Y(i)+K2/2,Z(i)+M2/2,T(i) +N2/2}); M3=h*subs(g,{x,y,z,t},{X(i)+h/2,Y(i)+K2/2,Z(i)+M2/2,T(i) +N2/2}); N3=h*subs(p,{x,y,z,t},{X(i)+h/2,Y(i)+K2/2,Z(i)+M2/2,T(i) +N2/2}); K4=h*subs(f,{x,y,z,t},{X(i)+h,Y(i)+K3,Z(i)+M3,T(i)+N3}); M4=h*subs(g,{x,y,z,t},{X(i)+h,Y(i)+K3,Z(i)+M3,T(i)+N3}); N4=h*subs(p,{x,y,z,t},{X(i)+h,Y(i)+K3,Z(i)+M3,T(i)+N3}); Y(i+1)=Y(i)+(K1+2*K2+2*K3+K4)/6; Z(i+1)=Z(i)+(M1+2*M2+2*M3+M4)/6; T(i+1)=T(i)+(N1+2*N2+2*N3+N4)/6; X(i+1)=X(i)+h; end disp('y='); disp(Y(i+1)); return;

Ngày đăng: 11/04/2023, 22:55

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

TÀI LIỆU LIÊN QUAN

w