以下は、マス-スプリング-ダッシュポット システムの 2 次 ODE を解くための私の Matlab コードです。
function Spring
clear all;
close all;
options=odeset('RelTol',1e-6);
p0 = [1 0]; %initial position and velocity
[t,p] = ode45(@SpringFunction, [0 20], p0, options);
plot(t,p(:,1)) %plot the first column (x) vs. time
return
function pdot = SpringFunction(t,p)
c = 5; w = 2;
g = sin(t); % forcing function
pdot = zeros(size(p));
pdot(1) = p(2);
pdot(2) = g-c*p(2)-(w^2)*p(1);
return
この場合、変位対時間のプロットは、振幅が減少する正弦波のように見えるはずなので、私が得ている出力は間違っていると思います。代わりに、次のようになります。
これは私には間違っているように思えますが、間違っている場合は修正してください。コードの何が間違っているのかわかりません。