MATLAB找到根和@运算符

时间:2017-03-25 21:29:43

标签: matlab root

x=1;
f=@(x) x^3 - (5/x^2)-4*sin(x)-2;
fzero(f,x)
ans =

    1.9227

我应该找到等式的根,x ^ 3 - (5 / x ^ 2)-4 * sin(x)-2,上面的代码就是它的解。

我不了解此代码的一般机制。

(1)@运营商做什么?

我知道它的功能句柄,但我不明白函数句柄是什么。

(2)当括号中包含x时,它是如何工作的?

(3)当我没有为fzero()编写脚本时,怎么能有一个函数fzero()?

(4)为什么fzero()里面有两个变量? 我不明白变量' f'那里有

(5)为什么在开头声明x = 1?

请注意我对MATLAB很新,并且不太了解。

1 个答案:

答案 0 :(得分:1)

f = @(x) ...是在MATLAB中声明匿名函数的方法,实际上与在MATLAB中正常创建函数(例如function output = f(input) ...)没什么不同。这只是一种实用的方式,特别是当您使用数学函数时。

@(x)定义x的变量与数学中的f(x)相同。 fzero()是MATLAB现有的函数,用于计算f(x)= 0的x值,这意味着计算定义的函数的根。在开头给你的x一个真实值确实意味着找到根的起点。在你的情况下,它会找到大于1的根。当你阅读MATLAB的existing documentation时,你会非常清楚。

修改

如果你给出x = [0 1]而不是x = 1的间隔,fzero(f,x)会尝试在给定的时间间隔内计算f函数的根,如果在该时间间隔内没有根则woud返回NaN值。