我在没有力的情况下运行了我之前为 Verlet 方法完成的代数 - 这导致与您在下面看到的代码相同,但是当我忽略外力时缺少“+(2*F/D)”项. 正如预期的那样,该算法准确地工作,但是对于以下参数:
米 = 7 ; k = 8 ; b = 0.1;参数 = [m,k,b];
(步长 h = 0.001)
远高于 0.00001 之类的力太大了。我怀疑我错过了代数的把戏。
我的问题是是否有人可以发现我在 Verlet 方法中添加力项的缺陷
% verlet.m
% uses the verlet step algorithm to integrate the simple harmonic
% oscillator.
% stepsize h, for a second-order ODE
function vout = verlet(vinverletx,h,params,F)
% vin is the particle vector (xn,yn)
x0 = vinverletx(1);
x1 = vinverletx(2);
% find the verlet coefficients
D = (2*params(1))+(params(3)*h);
A = (2/D)*((2*params(1))-(params(2)*h^2));
B=(1/D)*((params(3)*h)-(2*params(1)));
x2 = (A*x1)+(B*x0)+(2*F/D);
vout = x2;
% vout is the particle vector (xn+1,yn+1)
end