这是2身体kepler问题。
汉密尔顿主义者是
这应该是一个"椭圆"。如果初始值在一个轴上只有速度分量,并且起始坐标在同一个轴上,那么在所有神圣的名称中它是一个椭圆吗?
如何使用倒退欧拉绘制数值解?
答案 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)
也许我很想念系统实际意味着什么,但我看到的是一个只有在彼此的重力影响下才有两个物体的系统。主体1的起始位置不是矢量,而只是标量,因此它只能位于X轴上。在这种情况下,它的坐标是x = 1-a(0
当你说“这形成一个椭圆”时,也许我正在寻找错误的坐标系。我做了前面的欧拉图,如下: u1FUNC 现在,这段代码给出了一个图,其中q1和q2绘制在y轴上q1和q2以及x轴上的时间,如果q1和q2描述了所讨论的身体的距离,这对我来说似乎是合乎逻辑的。非移动参考系统的起源。但是你如何让它看起来像一个椭圆?clear all, close all, clc
stl= 0.0005; % steplength
nos = 50000; % number of steps
q1 = zeros(1,nos);
q2 = zeros(1,nos);
q1v = zeros(1,nos);
q2v = zeros(1,nos);
q1a = zeros(1,nos);
q2a = zeros(1,nos);
% Starting positions
a=0.5;
q1(1) = 1-a;
q2(1) = 0;
q1v(1) = 0;
q2v(1) = sqrt((1+a)/(1-a));
% P is inertia, and has the same vector components as the body velocity
for i=1:nos-1
[q1a(i),q2a(i)] = u1FUNC(q1(i),q2(i));
q1v(i+1) = q1v(i) + q1a(i).*stl;
q2v(i+1) = q2v(i) + q2a(i).*stl;
q1(i+1) = q1(i) + q1v(i+1)*stl;
q2(i+1) = q2(i) + q2v(i+1)*stl;
end
plot(q1)
hold on
plot(q2,'r')
function [a,b] = func(c,d)
% [a,b] = [q1'',q2'']
% [c,d] = [q1,q2]
a = -c/(((c^2)+(d^2))^(3/2));
b = -d/(((c^2)+(d^2))^(3/2));
end