Matlab,哈密顿系统,绘图和能量计算与欧拉(向后,向前,中点和半隐式)

时间:2013-06-08 17:15:20

标签: matlab

这是2身体kepler问题。

汉密尔顿主义者是 (p1^2)/2 + (p1^2)/2 - 1 / sqrt(q1^2+q2^2)
q1(0) = 1-a
q2(0) = 0
p1(0)=0
p2(0)=sqrt((1+a)/(1-a))

q1'' = -q1/(q1^2+q2^2)^(3/2)
q2'' = -q2/(q1^2+q2^2)^(3/2)

这应该是一个"椭圆"。如果初始值在一个轴上只有速度分量,并且起始坐标在同一个轴上,那么在所有神圣的名称中它是一个椭圆吗?

如何使用倒退欧拉绘制数值解?

2 个答案:

答案 0 :(得分:2)

我将两个二阶方程转换为四个一阶方程并使用ode23求解(不是向后欧拉,而是另一种数值方法)。

odefun = @(t, y) [y(3);
                  y(4);
                  -y(1) / (y(1)^2 + y(2)^2)^(3/2);
                  -y(2) / (y(1)^2 + y(2)^2)^(3/2)]
p0 = [1 0];    % initial position
v0 = [0 1];    % initial velocity
[t y] = ode23(odefun, [0 20], [p0 v0])
comet(y(:,1), y(:,2))

您现在可以看到,跟踪的路径是一个椭圆(实际上是我初始速度的圆圈)。你可以玩初始条件(v0 = [0 1.1]给你一个椭圆)。

答案 1 :(得分:0)