如何使用 fzero() 在 MATLAB 中求解多项式方程?

How to use fzero() to solve polynomial equation in MATLAB?

我想为 r 求解以下多项式:

我正在尝试按如下方式使用 fzero()

r = (5/(r^2*9))- ((2)/(9*(6-r)^2))
x0 = 10; % some initial point
x = fzero(r,x0)

fzero()如何做到这一点?

  • 输入变量和函数名应该不同
  • 只需将函数名称更改为pol
  • 要使用 fzero 函数 pol 必须是 函数句柄 通过 @
  • 定义
pol =@(r) (5/(r^2*9))- ((2)/(9*(6-r)^2))
x0 = 10; % some initial point
x = fzero(pol,x0)

解决方案

x =  3.6754

需要注意的是,fzero()中的第一个参数应该是“一个函数句柄、内联函数或包含要计算的函数名称的字符串 ",但你的只是一个表达式,它是无效的。

除了的方法(使用函数句柄),另一种方法是使用匿名函数,即

 x = fzero(@(r) (5/(r^2*9))- ((2)/(9*(6-r)^2)) ,x0)

其中

@(r) (5/(r^2*9))- ((2)/(9*(6-r)^2))

是关于参数 r 的匿名函数。

您将得到与 x = 3.6754 相同的结果。