0
function dx=m1(t,x)
    dx(1)=(l0*x(1))/(1+(l0*x(1))
endfunction 

function dx=m2(t,x)
    dx(1)=(l0*x(1))/[1+(l0*(x(1)+x(2))]
    dx(2)=(k2*x(1)*x(1))-k1*x(2)
endfunction

t0=15;

function f(t,t0)
    if (t < t0)
    {
        return m1(t)
    }
    else
    {
       return m2(t)
    }
    end
endfunction

x=ode(x0, t0, t, f);

在上面的代码中,我定义了两个函数m1m2并且基于一个时间点,比如说,t0我正在返回其中一个函数。但是,错误正在显示undefined variable:x。是因为我x(1)在这两个功能中都使用了吗? x基本上是一个包含x(1)在第一个函数中的向量m1,并且[x(1);x(2)]m2

PS- 给出了包括初始值在内的所有常量所需值。

4

1 回答 1

0

您可以编写如下函数:

function [dx] = calc_dx( t, x)
    verbose = 1
    k1 = 2
    k2 = 3
    dx = []
    t0 = 15
    if (t < t0)
        dx(1) = ( 10 * x(1) ) / ( 1 + ( 10 * x(1) ) )
    else
        dx(1) = ( 10 * x(1)) / ( 1 + ( 10 * ( x(1) + x(2) ) ) )
        dx(2) = ( k2 * x(1) * x(1) ) - k1 * x(2)
    end
endfunction

我假设 k1 和 k2 是常量而不是其他变量,并为它们分配了值。

请记住将您当前的工作目录保存在为上述功能保存“.sci”文件的位置。

从命令窗口运行

执行文件名.sci;

将您的函数加载到 scilab 中。

于 2013-07-02T11:09:31.877 回答