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);
在上面的代码中,我定义了两个函数m1
和m2
,并根据时间点,例如t0
,我返回了其中一个函数。但是,错误显示为undefined variable:x
。是因为我在两个函数中使用x(1)
吗?
x
基本上是第一个函数x(1)
中包含m1
的向量,[x(1);x(2)]
中包含m2
。
P.S.-给出了常数的所有必需值,包括初始值。
答案 0 :(得分: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。