我用八度语写了这段代码:
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
。
答案 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
时),否则最好避免使用符号数学。