0
我跑過代碼,我以前在沒有力的情況下爲Verlet方法完成 - 這導致了與您在下面看到的相同的代碼,但「+(2 * F/D)「當我忽視外力時,失去了這個術語。如預期的那樣,該算法準確地工作,但是對於以下參數:簡單的諧波運動 - Verlet - 外力 - Matlab
m = 7; k = 8; b = 0.1; params = [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
您的問題尚不清楚,請更詳細地說明它 - 請參閱http://stackoverflow.com/help/mcve –
您可以提供指向上一個問題的鏈接https://stackoverflow.com/q/29701350/3088138哪裏有更多的代碼。 – LutzL
如果將參數擴展爲'm = param(1)','k = param(2)','b = param(3)',它會使代碼更具可讀性。 – LutzL