appollo matlab 解答疑惑!
函数文件为:
function dy=Apollo(t,y)
% y(1)=x;y(2)=y; y(3)=dx;y(4)=dy;
% dy(1)=y(3)=dx; dy(2)=y(4)=dy;
% dy(3)=ddx; dy(4)=ddy;
mu=1/82.45;
mu1=1-mu;
r1=sqrt((y(1)-mu)^2+y(2)^2);
r2=sqrt((y(1)-mu1)^2+y(2)^2);
dy(1)=y(3);
dy(2)=y(4);
dy(3)=2*y(4)+y(1)-mu1*(y(1)+mu)/r1^3-mu*(y(1)-mu1)/r2^3;
dy(4)=-2*y(3)+y(2)-mu1*y(2)/r1^3-mu*y(2)/r2^3;
调用文件为:
clear,clc;
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
[t,y] = ode45(@Apollo,[0 20],[1.2;0;0;-1.04935751],options)
调用出现问题,我现在无法改正,不知道问题出在哪里,请高手帮我解答!十分感谢!请附上改正的地方和错误的原因!可附加悬赏!
答案:function dy=Apollo(t,y)
% y(1)=x;y(2)=y; y(3)=dx;y(4)=dy;
% dy(1)=y(3)=dx; dy(2)=y(4)=dy;
% dy(3)=ddx; dy(4)=ddy;
mu=1/82.45;
mu1=1-mu;
r1=sqrt((y(1)+mu)^2+y(2)^2);
r2=sqrt((y(1)-mu1)^2+y(2)^2);
dy(1)=y(3);
dy(2)=y(4);
dy(3)=2*y(4)+y(1)-mu1*(y(1)+mu)/r1^3-mu*(y(1)-mu1)/r2^3;
dy(4)=-2*y(3)+y(2)-mu1*y(2)/r1^3-mu*y(2)/r2^3;
dy=dy';
-----------------
options = odeset('RelTol',1e-8);
>> [t,y] = ode45(@Apollo,[0 20],[1.2;0;0;-1.04935751],options);
>> plot(y(:,1),y(:,2))%绘制x1和x3,也就是x和y的图形
title('Appollo卫星运动轨迹')
xlabel('X')
ylabel('Y')
------------------------------
r1方程写错了
r1=sqrt((y(1)+mu)^2+y(2)^2);
dy应该是列向量
,'AbsTol',可以不要
其他:function dx=appollo(t,x)
mu=1/82.45;
mustar=1-mu;
r1=sqrt((x(1)+mu)^2+x(3)^2);
r2=sqrt((x(1)-mustar)^2+x(3)^2);
dx=[x(2)
2*x(4)+x(1)-mustar*(x(1)+mu)/r1^3-mu*(x(1)-mustar)/r2^3
x(4)
-2*x(2)+x(3)-mustar*x(3)/r1^3-mu*x(3)/r2^3];
--------------------------------------------------------------------------------------
x0=[1.2;0;0;-1.04935751];%x0(i)对应与xi的初值
options=odeset('reltol',1e-8);%该命令的另一种写法是options=odeset;options.reltol=1e-8;
tic
[t,y]=ode45(@appollo,[0,20],x0,options);%t是时间点,y的第i列对应xi的值,t和y的行数相同
toc
plot(y(:,1),y(:,3))%绘制x1和x3,也就是x和y的图形
title('Appollo卫星运动轨迹')
xlabel('X')
ylabel('Y')
Elapsed time is 0.597879 seconds.
上一个:matlab全排列 急!!
下一个:下面matlab图像处理的一个程序,运行之后总显示??? Error using ==> times Matrix dimensions must agree.