我有一个微分方程
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的用法。
答案 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()
。