Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ode 在scilab中使用if-else的函数 函数dx=m1(t,x) dx(1)=(l0*x(1))/(1+(l0*x(1)) 端功能 函数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) 端功能 t0=15; 函数f(t,t0) if(t_Ode_Scilab - Fatal编程技术网

Ode 在scilab中使用if-else的函数 函数dx=m1(t,x) dx(1)=(l0*x(1))/(1+(l0*x(1)) 端功能 函数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) 端功能 t0=15; 函数f(t,t0) if(t

Ode 在scilab中使用if-else的函数 函数dx=m1(t,x) dx(1)=(l0*x(1))/(1+(l0*x(1)) 端功能 函数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) 端功能 t0=15; 函数f(t,t0) if(t,ode,scilab,Ode,Scilab,在上面的代码中,我定义了两个函数m1和m2,并且基于一个时间点,例如t0,我返回两个函数中的任何一个。但是,错误显示为未定义变量:x。这是因为我在这两个函数中都使用了x(1)? x基本上是一个向量,在第一个函数m1中包含x(1),在m2中包含[x(1);x(2)] p.S.-给出了包括初始值在内的常数的所有要求值。您可以按如下方式编写函数: function dx=m1(t,x) dx(1)=(l0*x(1))/(1+(l0*x(1)) endfunction function dx

在上面的代码中,我定义了两个函数
m1
m2
,并且基于一个时间点,例如
t0
,我返回两个函数中的任何一个。但是,错误显示为
未定义变量:x
。这是因为我在这两个函数中都使用了
x(1)
x
基本上是一个向量,在第一个函数
m1
中包含
x(1)
,在
m2
中包含
[x(1);x(2)]


p.S.-给出了包括初始值在内的常数的所有要求值。

您可以按如下方式编写函数:

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);
函数[dx]=计算dx(t,x)
详细=1
k1=2
k2=3
dx=[]
t0=15
if(t
我假设k1和k2是常数,而不是其他变量,并给它们赋值

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

从命令窗口运行

exec filename.sci

将函数加载到scilab中

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