2011-07-23 106 views
1

我有幾個微分方程,我想提請解決方案,適用於各種啓動值N_0寫生解決方案曲線方程

下面是公式:

dN\dt= bN^2 - aN 

dN\dt = bN^2 (1 - N\K) - aN 

會如何我去了解它?

我並不在乎所使用的語言。在專用數學方面,我的電腦上有mathematica和matlab。我有機會獲得楓樹。我必須做更多這樣的事情,我想要從任何語言中得到例子,因爲它會幫助我弄清楚我想使用哪一個並學習它。

+1

{a,b,N(0)}和{a,b,K,N(0)}是兩個大參數空間。你應該指定一個感興趣的區域。 (例如,第一個eq中的a == b)... –

回答

0

數學您使用NDSolve(除非可以解析求解,在這種情況下,你使用DSolve所以,你的第一個公式我想:

b = 1.1; a = 2; 
s = NDSolve[{n'[t] == b n[t]^2 - a n[t], n[0] == 1}, n, {t, 0, 10}]; 
Plot[Evaluate[n[t] /. s], {t, 1, 10}, PlotRange -> All] 

我不知道是幹什麼用的a,b或N0,但我得到了這樣的結果:

Plot of n[t]

0

如果你感到快樂數值求解方程,MATLAB擁有一套ODE求解器,可能是有用的退房ŧ他的文檔爲ode45函數here

一般的方法是定義一個描述微分方程右側的「ode函數」。然後,您將此功能,初始條件和積分範圍傳遞給求解器。

這種類型的方法的一個有吸引力的特徵是它以直接的方式延伸到耦合ODE的複雜系統。

希望這會有所幫助。

+0

事實上,我的印象是通過使用向量符號,在Matlab中處理*多變量* ODE(即ODE系統)比使用Mathematica更容易。對於一個或幾個變量,我更喜歡Mathematica。 – Szabolcs

7

我會假裝第一個分析不能解決,以顯示如何去玩數學中的一般ODE。

定義

p1[n0_, a_, b_, uplim_: 10] :=(n /. [email protected][ 
     {n'[t] == b*n[t]^2 - a*n[t], n[0] == n0},n, {t, 0, uplim}] 

它返回ODE的溶液,即,a = p1[.1, 2., 3.]然後例如a[.3]告訴你n(.3)。然後可以做這樣的事情

Show[Table[ans = p1[n0, 1, 1]; 
Plot[ans[t], {t, 0, 10}, PlotRange \[Rule] Full], 
{n0, 0, 1, .05}], PlotRange \[Rule] {{0, 5}, {0, 1}}] 

圖表與不同的初始值幾個解決方案:

enter image description here

,或者獲得一些洞察解決方案,一個可以交互操作的a值,bn0

Manipulate[ 
ans = p1[n0, a, b]; 
Plot[ans[t], {t, 0, 10},PlotRange -> {0, 1}], 
{{n0, .1}, 0, 1}, 
{{a, 1}, 0, 2}, 
{{b, 1}, 0, 2}] 

這給像

enter image description here

與活性對照(即你移動它們並改變情節;試試看看我的意思;請注意,您可以設置初始條件給出分歧解決方案的參數)。

當然,這可以任意更復雜。同樣在這種特殊情況下,這個ODE很容易進行分析整合,但是這種數值方法可以應用於通用ODE(也包括許多PDE)。

+0

+1我一直希望在MATLAB中使用'Manipulate []''類似的東西... – Amro

+3

因爲'NDSolve'接受一個初始條件列表,所以你也可以像'Plot [(Evaluate [p1 [Range [0 ,1,.05],1,1] [t]]),{t,0,5}]來繪製同一圖中的解決方案列表。 – Heike

+1

@希克不知道,謝謝 – acl

2

除了幾個很好的答案之外,如果您只是想快速勾畫ODE的許多初始值的解決方案,爲了指導,您可以始終執行一行StreamPlot。假設a==1b==1dy/dx == x^2 - x

StreamPlot[{1, x^2 - x}, {x, -3, 3}, {y, -3, 3}] 

enter image description here

StreamStyle -> "Line"會給你剛剛行,沒有箭頭。