如何在MATLAB中使用fzero

时间:2015-08-31 18:43:02

标签: matlab math equation

我想使用fzero来近似

的根
x+sin(x)=e^x  

接近-1。

然而,fzero似乎只是回复了我提供的猜测:

> fzero('x+sin(x)==e^x', -1)
-1
> fzero('x+sin(x)==e^x', -4) 
-4

实际答案应为-.354。我的问题在这里是什么?

1 个答案:

答案 0 :(得分:5)

您的代码中存在几个问题:

  • fzero尝试找到作为第一个参数提供的 function 的零。你提供的是方程,而不是函数。
  • Matlab不知道e是什么。使用exp
  • 等式x+sin(x)==exp(x)似乎没有真正的解决方案。你可能意思是x+sin(x)==-exp(x)

考虑到这三件事,你想要计算零的函数是字符串形式'x+sin(x)+exp(x)'。所以:

>> fzero('x+sin(x)+exp(x)', -1)
ans =
   -0.3545

如@rayryeng所述,fzero也接受function handle来定义其输入函数。实际上,正如@horchler所观察到的那样,使用字符串当前是未记录的,并且它的更慢。因此,建议以函数句柄的形式定义要传递给fzero的函数。在您的情况下,您可以直接使用anonymous function,如下所示:

>> fzero(@(x) x+sin(x)+exp(x), -1)
ans =
   -0.3545