use*_*605 1 math matlab equation
我想fzero用来近似根
x+sin(x)=e^x
Run Code Online (Sandbox Code Playgroud)
接近-1.
但是,fzero似乎只是返回我提供的猜测:
> fzero('x+sin(x)==e^x', -1)
-1
> fzero('x+sin(x)==e^x', -4)
-4
Run Code Online (Sandbox Code Playgroud)
实际答案应该是-.354.这是我的问题?
您的代码中存在几个问题:
fzero试图找到作为第一个参数提供的函数的零.您提供的是方程,而不是函数.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
Run Code Online (Sandbox Code Playgroud)
如@rayryeng所述,fzero还接受函数句柄来定义其输入函数.实际上,正如@horchler所观察到的那样,使用字符串当前没有记录,而且 速度较慢.因此,建议以fzero函数句柄的形式定义要传递的函数.在您的情况下,您可以直接使用匿名函数,如下所示:
>> fzero(@(x) x+sin(x)+exp(x), -1)
ans =
-0.3545
Run Code Online (Sandbox Code Playgroud)