我正在使用ode45在数字上解决太阳的重力系统。定义了函数:
function eqs = prob4_4(t,in2,in3)
%PROB4_4
% EQS = PROB4_4(T,IN2,IN3)
% This function was generated by the Symbolic Math Toolbox version 5.11.
% 05-Mar-2014 15:56:04
G = in3(:,2);
M = in3(:,1);
vx = in2(3,:);
vy = in2(4,:);
x = in2(1,:);
y = in2(2,:);
t2 = x.^2;
t3 = y.^2;
t4 = t2+t3;
t5 = 1.0./t4.^(3.0./2.0)
eqs = [vx;vy;-G.*M.*t5.*x;-G.*M.*t5.*y];
然后我使用ode45生成x和y位置,以及x和y方向的速度,作为时间的函数:
[tout,yout] = ode45(@(t,Y) lab6(t,Y,[1,4*pi^2]),[0,1],[1;0;0;5],myoptions);
使用x位置,你(:,1)和y位置,你(:,2),我计算了这两个身体系统的潜在能量:
PE = 4*pi^2/sqrt((yout(:,1)).^2 + (yout(:,2)).^2);
当我去绘制PE与tout时,我在t轴上得到一条水平线。看看PE的元素,我发现它们都是零。为什么会这样?
当我去计算动能时,我将变量KE定义为
KE = 1/2*(yout(:,3).^2 + yout(:,4).^2);
我将其绘制为时间的函数并获得正周期动能行为,这正是我的预期;我期望PE有一个类似的情节,但是负值,因为引力系统是受约束的。
有人可以帮忙吗?
答案 0 :(得分:0)
我明白了。我犯了一个小的matlab错误,还有一个小的物理错误。前者是我忘了按元素除法运算符使用元素,即./因此,势能函数变为PE = -4 * pi ^ 2 ---> ./< ---- sqrt((yout(:,1))。^ 2 +(yout(:,2))。^ 2);而后者的错误是重力势能值被测量为负值,所以我不得不放入负号。