用 Matlab求解微分方程(组)
来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:数学作业 时间:2024/07/11 11:03:34
用 Matlab求解微分方程(组)
![](http://img.wesiedu.com/upload/3/ba/3badda6ff6e324f415e210fec786296f.jpg)
![](http://img.wesiedu.com/upload/3/ba/3badda6ff6e324f415e210fec786296f.jpg)
![用 Matlab求解微分方程(组)](/uploads/image/z/18672837-69-7.jpg?t=%E7%94%A8+Matlab%E6%B1%82%E8%A7%A3%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B%EF%BC%88%E7%BB%84%EF%BC%89)
这是阿波罗卫星轨迹例子
第二个方程应为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^3
];
end
tspan = [0,30];
x0=[1.2;0;0;-1.049355751];
options = odeset('RelTol',1e-6);
[tt,yy] = ode45(@OdeFunc,tspan,x0,options);
plot(yy(:,1),yy(:,3))
end
保存并运行可得
再问: 用ode45函数怎么做
再答: 这不就是用ode45做的。
第二个方程应为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^3
];
end
tspan = [0,30];
x0=[1.2;0;0;-1.049355751];
options = odeset('RelTol',1e-6);
[tt,yy] = ode45(@OdeFunc,tspan,x0,options);
plot(yy(:,1),yy(:,3))
end
保存并运行可得
![](http://img.wesiedu.com/upload/d/d5/dd5666ba9099cd59c020274fb7b9de8f.jpg)
再问: 用ode45函数怎么做
再答: 这不就是用ode45做的。