3

以下は、マス-スプリング-ダッシュポット システムの 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

この場合、変位対時間のプロットは、振幅が減少する正弦波のように見えるはずなので、私が得ている出力は間違っていると思います。代わりに、次のようになります。 振幅が一定の正弦波に緩和する減少関数

これは私には間違っているように思えますが、間違っている場合は修正してください。コードの何が間違っているのかわかりません。

4

1 に答える 1

3

減衰システムを正弦的に強制しているため、定常状態が正弦波であると予想する必要があります。これは振動のチュートリアル(PDF) です。強制を削除するか、その振幅を大幅に減らしてみてください。また、ダンピングが多いように見えます。減衰ζ (ゼータ) は のようc/(2*w) = 5/4です。これは、システムの強制されていない形式が過度に減衰されていることを意味します。強制がなければ、振動は見られません。

ode45また、振動システムでの使用には注意してください。システムの剛性が高すぎる場合は、ode15s正確な結果を得るために、許容誤差を調整するか、剛性の高いソルバーを使用する必要があります。より厳しい許容値を使用して、定性的に類似した結果 (同じ期間、振幅、成長率/減衰率など) が得られることを確認することができます。

于 2014-03-13T04:06:07.357 に答える