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

问题描述 投票:0回答:1

我有一个微分方程

y'= - 0.1y + g(t),y(0)= 1,0 <= t <= 600,g(t)= 0,除了488.3和488.9之间,其值为2。

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

第一步是使用

DEFF()

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

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

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

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

我会表达为:

DEFF( 'yprim = F(X,Y)', 'yprim =(X + 1)/ Y');

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

scilab
1个回答
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()

© www.soinside.com 2019 - 2024. All rights reserved.