2013-04-15 125 views
1
Dx=y 
Dy=-k*y-x^3+9.8*cos(t) 
inits=('x(0)=0,y(0)=0') 

這些是我想繪製的微分方程。如何繪製matlab中的非線性微分方程

首先,我試圖解決微分方程,然後繪製圖。

Dsolve('Dx=y','Dy=-k*y-x^3+9.8*cos(t)', inits) 

像這樣,但是,這個系統沒有明確的解決方案。

現在我被困:(

你怎麼能畫出這個系統,無需解方程

+0

確定X,Y,T,並通過繪製相圖Xÿ apomene

回答

3

首先定義要解決它需要一個函數,有兩個參數的微分方程? - 當前時間t和當前位置x,並返回一個列向量。相反,x和y的,我們將使用x(1)x(2)

k = 1; 
f = @(t,x) [x(2); -k * x(2) - x(1)^3 + 9.8 * cos(t)]; 

防守INE要解決在時間跨度和初始條件:

tspan = [0, 10]; 
xinit = [0, 0]; 

現在求解方程數值使用ode45

ode45(f, tspan, xinit) 

,導致該地塊:

enter image description here

如果您想在時間點獲取解決方案的值,那麼只需要輸入一些參數:

[t, y] = ode45(f, tspan, xinit); 

您可以通過執行

plot(y(:,1), y(:,2)), xlabel('x'), ylabel('y'), grid 

導致以下情節

enter image description here

+0

Yoy謝謝。但是現在,我怎樣才能得到x(1)與x(2)的圖?不過,非常感謝幫助我。 –

+0

@ShawnSihyunJeon我編輯,告訴你如何繪製。 –

+0

很酷。非常感謝! –