matlab - 为什么函数参数未定义?

标签 matlab octave

显然这可能是一个平庸的错误,但我无法弄清楚如何正确地做到这一点(我第一天使用 Octave)。我想将二阶 ODE d²x/dt² + M/L * dx/dt + 5x = 0 定义为 ODE 系统。 ODE2.m 如下所示:

function dz = ODE2(z,t)
  %% d^2x/dt^2 + M/L * dx/dt + 5x = 0
  M = 2;
  L = 10;
  dz = zeros(2,1);
  dz(1) = z(2);       % <--- apparently here's something wrong?!
  dz(2) = -(M/L)*z(2)-5*z(1);
end

然后我做

t = linspace(0,1,100);
z = lsode(ODE2,[1;1],t);
...

但是我明白了

error: 'z' undefined near line 6 column 11

但是,我认为 z 被定义为 ODE2.m 第一行中的参数。也许问题是 z 是一个向量,这在定义时是未知的,但是如何正确地做呢?如何定义方程并用lsode求解?

最佳答案

在调用 z=lsode(ODE2,[1;1],t); 中,ODE2 被解释为函数调用,它将计算函数和然后遇到没有输入参数的问题。请注意,如果将语句拆分为 fun=ODE2;,您将得到相同的错误。 z=lsode(乐趣,[1;1],t);

假设 Octave 的工作方式与 Matlab 一样,您需要将对 ODE2 的引用作为函数句柄传递,z=lsode(@ODE2,[1;1],t ); 将起作用。

关于matlab - 为什么函数参数未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25015754/

相关文章:

matlab - 使用matlab卡尔曼进行非线性系统估计

matlab - 在matlab中设置图例符号的精度

octave - GNU Octave : reading data with NA values using textscan(. ..)

python - subprocess.Popen 与 os.system 中的错误

matlab - 如何在 Matlab 中使用 PARFOR 与 Core i3 并行 4

c - 我应该通过 `loadlibrary` 还是通过 MEX 文件从 Matlab 访问 C 库?

.net - .NET 的 AWGN 生成器

在 org-mode 中运行 Octave 代码块时 Emacs 卡住

arrays - NaN 或 Inf 数组预分配

matlab - Simulink中此错误消息的含义是什么?