我想使用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。我的问题在这里是什么?
答案 0 :(得分:5)
您的代码中存在几个问题:
fzero
尝试找到作为第一个参数提供的 function 的零。你提供的是方程,而不是函数。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