2
這裏是我的Matlab代碼來解決二階常微分方程的質量彈簧阻尼系統:Matlab的:ODE45輸出不正確的用力彈簧質量阻尼器
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
我相信我得到的輸出是錯誤的,因爲對於這種情況,我認爲位移與時間的關係應該看起來像是一個幅度減小的正弦曲線。相反,它看起來像這樣:
這對我來說似乎不正確,但請糾正我,如果我錯了。我看不到代碼中的錯誤。