问答网

当前位置: 首页 > 知识问答 > matlab龙格库塔法求解微分方程 怎么编程

matlab龙格库塔法求解微分方程 怎么编程

知识问答 浏览4次

function [Y] = RK45(t,X,f,h)K1=f(t,X);K2=f(t+h/2,X+h/2*K1)

;K3=f(t+h/2,X+h/2*K2)

;K4=f(t+h,X+h*K3)

;Y=X+h/6*(K1+2*K2+2*K3+K4)

;end以上是4阶龙格库塔法的代码:自己写函数,存为f.

mfunction dxdt = f (t,x)dxdt(1)=exp(x(1)*sin(t))+x(2)

;dxdt(2)=exp(x(2)*cos(t))+x(1)

; % x(1)是你的f,x(2)是你的gdxdt=dxdt(:)

;end自己给出t0,x0,h的值(初始时间,初值,步长)

如果求t0到t1的轨迹的话:给个例子如下t0=0;t1=5;h=0.02;x0=[-1;-1];T=t0:h:t1;X=zeros(length(x0),length(T));X(:,1)=x0;for j=1:length(T)-1 X(:,j+1)=RK45(T(j),X(:,j),@(t,x) f(t,x),h)

;endplot(T,X(1,:));hold on;plot(T,X(2,:),'r')

;具体参数自己设置。