Scilab 中 ODE 的奇怪行为:方程 dy/dx=A 未正确求解

Odd behavior of ODE in Scilab: equation dy/dx=A is not solved properly

我仍在学习 Scilab (5.5.2),所以我正在编写和 运行 测试代码以熟悉该软件。

为了测试数值微分方程求解器,我从方程 dy/dx = A 开始,其解为 y = Ax+ c(线方程).

这是我写的代码:

// Function y = A*x+1
function ydot=fn(x, A)
    ydot=A
endfunction
A=2;
//Initial conditions
x0=0;
y0=A*x0+1;
//Numerical Solution
x=[0:5];
y= ode(y0,x0,x,fn);
//Analytical solution
y2 = A*x+1;
clf(); plot(x, y); plot(x, y2, '-k');
//End

这些是意想不到的结果:

y = 1. 2.7182824 7.3890581 20.085545 54.598182
148.41327

y2 = 1. 3. 5. 7. 9. 11.

看来 y = e^x。谁能解释一下哪里出了问题,或者我做错了什么?

仅重命名变量不会改变 ODE 求解器在内部使用它们的方式。由于该求解器需要一个带有参数 time,state 的函数,它将以这种方式解释提供的函数。

改回变量名,你编程的相当于

function ydot=fn(t,y)
    ydot = y
endfunction

确实有指数函数作为解

manual可以看出,包含参数的方式是将函数作为列表传递,

The f argument can also be a list with the following structure: lst=list(realf,u1,u2,...un) where realf is a Scilab function with syntax: ydot = f(t,y,u1,u2,...,un)

function ydot=fn(t,y,A)
    ydot = A
endfunction

y= ode(y0,x0,x,list(fn,A));