2015-10-19 132 views
0

我正在用這個八度代碼求解微分方程。wolfram alpha和octave下不同的常微分方程圖

# Define the right-hand side of the equation: 
xvall= -11 ;#xvall 
xvalu= 10 ;#xvalu 
range=5000; 
function ret=f(x,t);ret= t ;end; 

# ywill be the values of the function at these moments of time. 
t=linspace(xvall,xvalu,range); 
y=lsode ('f', 2, linspace(xvall,xvalu,range)); 
y 
plot(t,y); 

我得到了這樣的圖。

enter image description here

但是當同樣的條件傳遞給Wolfram Alpha的 我收到來自60圖中爲0的y值

圖是enter image description here 爲什麼在兩種情況下表現不同的圖形。 https://www.wolframalpha.com/input/?i=Runge-Kutta+method%2C+dy%2Fdx+%3D+x%2C+y%280%29+%3D+2%2C+from+-11+to+10%2C+h+%3D+0.25

回答

3

要指定常微分方程的初始值問題,您需要定義初始條件。在此,對於Octave,您指定了x(-11) = 2,因爲xvall = -11以及Wolfram Alpha指定了y(0) = 2。這就是爲什麼你有兩種不同的解決方案。

倍頻

倍頻的lsode (f,x_0,ts)解決了以下初值問題

dx/dt = t 
x(t_0) = x_0 
t in ts 

這裏ts被指定爲在區間[t_0,t_1]的一組點。您已指定t_0 = -11t_1 = 10

在封閉的形式解決這個問題是x = (t^2 - 117)/2

對於沃爾弗拉姆你已經使用了半正式的語法:

Runge-Kutta method, dy/dx = x, y(0) = 2, from -11 to 10, h = 0.25 

在封閉的形式解決這一問題將是y = (x^2 + 4) /2

相應的ini tial值問題顯然不同。因此不同的結果。

+0

謝謝德米特里丘巴羅夫 – smraj