MATLAB 求根和@运算符

MATLAB finding roots, and @ operator

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 的新手,了解不多。

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 = 1fzero(f,x) 将尝试在给定区间内计算 f 函数的根,如果该区间不存在根间隔它会 return 一个 NaN 值。