fsolve错误:找不到任何函数或方法

时间:2016-06-17 21:44:27

标签: octave

我用八度语写了这段代码:

syms z;
f=z-2;
fsolve("f",0.)

然后这会给出错误

  

@f:找不到任何功能,也没有找到方法。

同样使用fsolve(@f,0)会出现同样的错误

当我将代码编写为:

syms z;
f=z-2;
fsolve(f,0.)

然后这会给出错误

  

ind2sub:subscript indices必须是小于2 ^ 31的正整数或逻辑。

请向我解释如何实际使用fsolve

1 个答案:

答案 0 :(得分:3)

% syms z;      % Not needed, actually slows down the code
f=@(z)(z-2); 
fsolve(f,0.)

您缺少@符号,这是一个函数句柄。这告诉Octave f不是变量,但实际上是一个(n匿名)函数,在这种情况下是z,这是第一个参数。

你可能希望z成为一个常规变量,因为它使符号化将MATLAB从一辆超速赛车转变为一辆苦差事的农用车。除非有特定的理由让z具有符号性(我无法想到使用fsolve时),否则最好避免使用符号数学。