matlab龙格库塔法解微分方程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab龙格库塔法解微分方程相关的知识,希望对你有一定的参考价值。
已知描述某动态电路的微分方程为10x′′ − 7x′ + 4x =10sin(t),初始
条件为x(0) = 4,x′(0) = 9,求x(t)在区间[5,10]的数值解,并画出
x(t)、x′(t)的图形。
微分方程求解采用以下方法:
1、龙格-库塔算法;
2、采用simulink 进行仿真实现(采用Sine wave、Derivative 模板等)。
课题要求:
1、对比上述方法的结果。
2、自己编写实现龙格-库塔算法。
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.m
function 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)是你的g
dxdt=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);
end
plot(T,X(1,:));
hold on;
plot(T,X(2,:),'r');
具体参数自己设置追问
步长怎么计算
以上是关于matlab龙格库塔法解微分方程的主要内容,如果未能解决你的问题,请参考以下文章
用MATLAB按二阶龙格库塔法求解微分方程组,大神速来,急急急