2013-01-06 106 views
1

有誰知道會跟蹤下圖的Mathematica代碼?Mathematica代碼繪製這個微分方程的圖形?

這裏是圖中的公式,二階線性微分方程常係數:

enter image description here

這裏是通過這個方程跟蹤的曲線圖:

enter image description here

報價來自「時間序列分析與預測實例」一書:

...其中δ(t)是一個脈衝(delta)函數,它像豌豆丸一樣在 時間t = 0迫使擺遠離其平衡點,a是豌豆撞擊的大小。很容易想象,由這個二階微分方程描繪的曲線是一個衰減的正弦函數的時間,儘管如果摩擦或粘度足夠大,(過阻尼)擺可以逐漸到達指數後的其餘部分曲線沒有穿過中心線 。

+1

來吧,現在... [你有什麼嘗試?](http://whathaveyoutried.com) – 2013-01-06 01:30:55

+0

@Jack Maney我不能在Mathematica中使用它。我想舉一個例子來說明如何將這樣的泛型方程轉換成我可以在Mathematica中玩的形式。你如何在Mathematica中指定脈衝函數? – Contango

+0

你有超過3600的聲望。現在您應該對堆棧溢出有足夠的瞭解,以瞭解這些問題在邏輯上等同於「gimmeh teh codez,plz?」沒有跡象表明OP已投入任何努力,一般不會飛到這裏。 – 2013-01-06 01:38:35

回答

6
eq = m z''[t] + c z'[t] + k z[t] == a DiracDelta[t]; 
parms = {m -> 1, c -> .1, k -> 1, a -> 1}; 
sol = [email protected][{eq /. parms, z[0] == 1, z'[0] == 0}, z[t], t]; 
Plot[z[t] /. sol, {t, 0, 70}, PlotRange -> All, Frame -> True, 
FrameLabel -> {{z[t], None}, {Row[{t, " (sec)"}], eq}}, 
GridLines -> Automatic] 

Mathematica graphics

注意的是,對於零種初始條件下,另一種選擇是使用控制系統的功能中的Mathematica如下

parms = {m -> 10, c -> 1.2, k -> 4.3, a -> 1}; 
tf = TransferFunctionModel[a/(m s^2 + c s + k) /. parms, s] 
sol = OutputResponse[tf, DiracDelta[t], t]; 

Plot[sol, {t, 0, 60}, PlotRange -> All, Frame -> True, 
FrameLabel -> {{z[t], None}, {Row[{t, " (sec)"}], eq}}, 
GridLines -> Automatic] 

Mathematica graphics

更新

嚴格來說,上面的DSolve的結果並不是通過手工推導出這個問題所能找到的。正確的解決方案應該出來如下

(參見this還供參考)

正確解析解由

Mathematica graphics

我在here推導出這個問題和類似的情況下,給定的(第一章)。

使用上述方案,正確的反應會是這樣的:

parms = {m -> 1, c -> .1, k -> 1, a -> 1}; 
w = Sqrt[k/m]; 
z = c/(2 m w); 
wd = w Sqrt[1 - z^2]; 
analytical = 
    Exp[-z w t] (u0 Cos[wd t] + (v0 + (u0 z w))/wd Sin[wd t] + 
    a/(m wd) Sin[wd t]); 
analytical /. parms /. {u0 -> 1, v0 -> 0} 

(* E^(-0.05 t) (Cos[0.998749 t] + 1.05131 Sin[0.998749 t]) *) 

繪製它:

Plot[analytical /. parms /. {u0 -> 1, v0 -> 0}, {t, 0, 70}, 
PlotRange -> All, Frame -> True, 
FrameLabel -> {{y[t], None}, {Row[{t, " (sec)"}], 
    "analytical solution"}}, GridLines -> Automatic, ImageSize -> 300] 

Mathematica graphics

如果你比較以顯示的第一個上述情節以上使用DSolve你可以看到t=0附近的區別。

+0

很酷,謝謝你的回答!這很有道理。 – Contango