正确使用deff()来定义在ode求解器中使用的函数

时间:2017-12-23 04:28:08

标签: scilab

我有一个微分方程

  

y&#39; = - 0.1y + g(t),y(0)= 1,0 <= t <= 600,g(t)= 0,除了488.3&amp; 0之外。   488.9其值为2。

使用scilab的ode()函数进行模拟,假设默认选项为%ODEOPTIONS。

第一步是使用

  

DEFF()

定义我们的微分方程。然后我会用

  

ydiff = ODE(Y0,X0,X,F);

对于一个简单的微分方程,例如:

  

y'= x + 1 / y,y(0)= 0.1

我会表达为:

  

DEFF(&#39; yprim = F(X,Y)&#39;,&#39; yprim =(X + 1)/ Y&#39);

但是在更复杂的情况下,例如我上面显示的情况,我们有两个函数f和g,我无法理解deff的用法。

1 个答案:

答案 0 :(得分:1)

deff()的用法是

deff('[s1, s2, ...] = newfunction(e1, e2, ...)',text)

text是字符串的列矩阵,其每一行都是函数块中的行:

function y=foo(x)
    (Line 1)
    (Line 2)
    (Line 3)
endfunction 

相当于

deff("y=foo(x)"; ["(Line 1)";"(Line 2)";"(Line 3)"]);

所以,在您的问题中,您可以这样做:

deff("y = g(t)", ["if (t > 488.2 & t < 488.9) then"; "y = 2"; "else"; "y = 0"; "end"]);
deff("yprime = fode(t,y)", ["yprime = -0.1*y + g(t)"]);

然后您可以像往常一样使用ode()