当前位置:首页>开发>正文

在matlab中求解一个常微分方程组! 如何用matlab求解微分方程组

2023-07-07 10:36:55 互联网 未知 开发

 在matlab中求解一个常微分方程组! 如何用matlab求解微分方程组

在matlab中求解一个常微分方程组!

建立一个文件test.m

function dx=test(t,x)
dx=zeros(2,1)
dx(1)=k*x(2)
dx(2)=g*x(2)(m*x(1)-x(2))

保存,

在matlab里输入:

[t,x]=ode45(test,[0 15],[25 2])

如何用matlab求解微分方程组

这说明此微分方程没有显示解,应用数值方法求解,例如ode45等函数
就一个例子(选自matlab帮助文档)
解入下微分方程组

1,建立方程组函数

function dy = rigid(t,y)dy = zeros(3,1) % a column vectordy(1) = y(2) * y(3)dy(2) = -y(1) * y(3)dy(3) = -0.51 * y(1) * y(2)
2,求解并绘图
[T,Y] = ode45(@rigid,[0 12],[0 1 1])plot(T,Y(:,1),-,T,Y(:,2),-.,T,Y(:,3),.)
结果

用 Matlab求解微分方程(组)

这是阿波罗卫星轨迹例子
第二个方程应为y = -2*x   y ...,以为符号
代码如下
function solveode
function fun = OdeFunc(t,y)
mu = 1/82.45
mu_star = 1 - mu
r2 = sqrt((y(1) - mu_star)^2 y(3)^2)
r1 = sqrt((y(1)   mu)^2 y(3)^2)
 
fun = [y(2)
       2*y(4) y(1)-mu_star*(y(1) mu)/r1^3-mu*(y(1)-mu_star)/r2^3
       y(4)
       -2*y(2) y(3)-mu_star*y(3)/r1^3-mu*y(3)/r2^       ]
end
tspan = [0,30]
x0=[1.200-1.049355751]
options = odeset(RelTol,1e-6)
[tt,yy] = ode45(@OdeFunc,tspan,x0,options)
plot(yy(:,1),yy(:,3))
end
 
保存并运行可得

最新文章