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