2013-07-01 43 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中。