势能函数相同为零

时间:2014-03-07 20:09:03

标签: matlab function physics ode

我正在使用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有一个类似的情节,但是负值,因为引力系统是受约束的。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我明白了。我犯了一个小的matlab错误,还有一个小的物理错误。前者是我忘了按元素除法运算符使用元素,即./因此,势能函数变为PE = -4 * pi ^ 2 ---> ./< ---- sqrt((yout(:,1))。^ 2 +(yout(:,2))。^ 2);而后者的错误是重力势能值被测量为负值,所以我不得不放入负号。