为什么我在 octave 中使用 ode23 时收到"x"未定义错误,而在 octave 中使用 ode23 或 ode15s 时却没有收到?



我正试图用解算器ode23s在OCTAVE中求解一些ODE(完全相同的算法在Matlab中完美运行(,但我收到了一个"x"未定义的错误,而当我使用解算器odel23或odel15s时,即使这是我唯一的更改,也不会发生这种情况。

下面你可以看到提到的代码和错误:

model = [Fg1 Fg2 ui mi ... gi]; %model is a vector of (1,77) 
options = odeset('RelTol',1e-4,'AbsTol',5e-6*ones(16,1));
[T,Y] = ode23s(@odesys_test,0:dt:10,init,options,model);

功能代码:

function [dx] = odesys_test(t,x,model)
global tt
Fg1 = model(1);

错误:

错误:第5列第5行附近未定义"模型">

错误:从调用odesys_test第5行第5列第121行第5列的runge_kutta_23s第135行第39列的integrate_adaptive第217行第12列的ode23DOF2_测试第189行第15列

根据倍频程的文档,语法为

[T, Y] = ode23s (FUN, TRANGE, INIT, ODE_OPT)

您正在传递一个额外的model参数,该参数不是函数签名的一部分。

此外,您创建的odesys_test函数不符合ode23s所期望的规范。仔细阅读文档。

也许你想做的只是创建一个匿名函数,确实满足规范,并用它来"包装"你的odesys_test函数,例如

[T,Y] = ode23s( @(t, x) odesys_test(t, x, model), 0:dt:10, init, options,model );

相关内容

  • 没有找到相关文章

最新更新