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

问题描述 投票:1回答:2

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

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

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

如何使用fzero()来完成?

matlab math solver polynomial-math polynomial-approximations
2个回答
2
投票
  • 输入变量和函数名称应该不同
  • 只需将函数名称更改为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

2
投票

应注意,fzero()中的第一个参数应为“ 一个函数句柄,内联函数或包含要评估的函数名称的字符串”,但您的只是一个表达式,即无效。

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

 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相同的结果。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.