Matlab 对于fzero循环,如何处理此问题?

Matlab 对于fzero循环,如何处理此问题?,matlab,Matlab,我想从下面的方程中得到x z=fzero(@(x)gamma/(R-(1+phi(1)*x)*(1+phi(2)))-tauA2(1)-((1+alpha*beta)/beta*(gamma/x-tauA1(1))),800) 在这里,所有字母和phi1、phi2、tauA21和tauA11都是来自每个矩阵的数字 然而,它不断地产生结果 ???的输入参数的未定义函数或方法“isfinite” 键入“sym” 333处==>fzero中的错误 elseif~isfinitefx | | ~isr

我想从下面的方程中得到x

z=fzero(@(x)gamma/(R-(1+phi(1)*x)*(1+phi(2)))-tauA2(1)-((1+alpha*beta)/beta*(gamma/x-tauA1(1))),800)
在这里,所有字母和phi1、phi2、tauA21和tauA11都是来自每个矩阵的数字

然而,它不断地产生结果

???的输入参数的未定义函数或方法“isfinite” 键入“sym”

333处==>fzero中的错误 elseif~isfinitefx | | ~isrealfx

同样通过使用上面的方程,我最终得到了9*2的矩阵z 因为我将把tauA1和tauA2修改为tauA1i和tauA2i。因此,我编写了如下代码:

for i=1:9
z(i)=fzero(@(x)gamma/(R-(1+phi(1)*x)*(1+phi(2)))-tauA2(i)-((1+alpha*beta)/beta*(gamma/x-tauA1(i))),800)
end
但结果和以前一样


代码有什么问题?如何修复它?

很难遵循您的代码。编辑您的问题以将代码格式化为代码:选择代码段的文本并单击编辑框上方的{}图标。您的问题是,正如错误消息所说,您已将一个名为“fx”的符号参数传递给函数isfinite,该函数期望数字作为输入。从你发布的内容来看,我不清楚这是如何产生的。谢谢你编辑你的代码。很明显,第一行代码的rhs上的一个变量不是数字。没有看到你所有的代码,我甚至猜不出是哪个,但我希望你能。您可能希望清除工作区中所有未使用的变量;产生难以理解的错误的一个常见原因是使用已经存在但您已经忘记的变量名。