2013-07-01 21 views
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的载体。功能使用,如果其他人在SCILAB

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

回答

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'文件的位置。

从命令窗口运行

EXEC filename.sci;

将您的函数加载到scilab中。