當前位置:股票大全官網 - 財經新聞 - 急!!!matlab中四階龍格-庫塔法求解常微分方程

急!!!matlab中四階龍格-庫塔法求解常微分方程

創建壹個。m文件

-

功能?θ=丹白(t,X)

X = X(1);

dx = X(2);

ddx =-sin(x);

theta =【dx;ddx】;

-

命令窗口輸入

& gt& gt?【t,Y】= ode 45(@丹白,【0?6】,【pi/3?-1/2]);

& gt& gt?plot(t,Y(:,1),‘ro-‘,t,Y(:,2),‘bv-‘);

& gt& gt?圖例(“\theta-t“、“d\theta-t“)?

自編龍格庫塔

-

功能?【y,z】=龍格庫塔(a,b,y0,z0,h)

x = a:h:b;

y(1)= y0;

z(1)= z0;

n =(B- a)/h+1;

為了什麽?i=2:n

k(1,1)= f 1(x(I-1)、y(I-1)、z(I-1));

k(2,1)= F2(x(I-1)、y(I-1)、z(I-1));

K(1,2)= f 1(x(I-1)+h/2,y(I-1)+K(1,1)* h/2,z(I-1)+K(2,1)* h/2;

K(2,2)= F2(x(I-1)+h/2,y(I-1)+K(1,1)* h/2,z(I-1)+K(2,1)* h/2);

K(1,3)= f 1(x(I-1)+h/2,y(I-1)+K(1,2)* h/2,z(I-1)+K(2,2)* h/2);

K(2,3)= F2(x(I-1)+h/2,y(I-1)+K(1,2)* h/2,z(I-1)+K(2,2)* h/2);

K(1,4)= f 1(x(I-1)+h,y(I-1)+K(1,3)* h,z(I-1)+K(2,3)* h);

K(2,4)= F2(x(I-1)+h,y(I-1)+K(1,3)* h,z(I-1)+K(2,3)* h);

y(I)= y(I-1)+h/6 *(K(1,1)+2 * K(1,2)+2 * K(1,3)+K(1,4);

z(I)= z(I-1)+h/6 *(K(2,1)+2 * K(2,2)+2 * K(2,3)+K(2,4);

結束

y(2)

plot(y,‘r‘)?%θ-t圖

保持住。在

plot(f 1(x,y,z),‘g‘)?%?Dθ-t圖

保持住。在

plot(F2(x,y,z),‘b-‘)% D2θ-t圖

%f1.m

功能?f 1 = f 1(x,y,z)

f 1 = z;

%f2.m

功能?F2 = F2(x、y、z)

F2 =-sin(y);

-

龍格_庫塔(0,6,pi/3,-1/2,0.02)