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、自己编写实现龙格-库塔算法。

参考技术A 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.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用龙格库塔法求解变系数常微分方程

matlab练习程序(龙格库塔法)

求编程达人帮忙用matlab编程用龙格库塔方法解微分方程

用MATLAB按二阶龙格库塔法求解微分方程组,大神速来,急急急

Runge-Kutta龙格-库塔法求解微分方程matlab仿真

matlab代码实现四阶龙格库塔求解微分方程