我使用这个八度代码来求解微分方程。
# 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);
我得到了这样的图表。
但是当相同的条件传递给wolfram alpha时 我得到的图表从60到0为y值
图表为 为什么图表在两种情况下表现不同。 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
答案 0 :(得分:3)
要为常微分方程指定初始值问题,需要定义初始条件。对于Octave,您已指定x(-11) = 2
xvall = -11
以及Wolfram Alpha指定y(0) = 2
。这就是为什么你有两种不同的解决方案。
<强>八度强>
Octave的lsode (f,x_0,ts)
解决了以下初始值问题
dx/dt = t
x(t_0) = x_0
t in ts
此处ts
被指定为区间[t_0,t_1]
中的一组点。您已指定t_0 = -11
,t_1 = 10
。
以封闭形式解决此问题的方法是x = (t^2 - 117) / 2
<强>钨强>
对于Wolfram,您使用了半正式语法:
Runge-Kutta method, dy/dx = x, y(0) = 2, from -11 to 10, h = 0.25
以封闭形式解决此问题的方法是y = (x^2 + 4) /2
相应的初始值问题明显不同。因此结果不同。