【问题标题】:MATLAB finding roots, and @ operatorMATLAB 求根和@运算符
【发布时间】:2017-03-25 21:29:43
【问题描述】:
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 非常陌生,而且了解不多。

【问题讨论】:

    标签: matlab root


    【解决方案1】:

    f = @(x) ... 是在 MATLAB 中声明匿名函数的方式,实际上与在 MATLAB 中创建函数如function output = f(input) ... 没有太大区别。这只是一种实用的方法,尤其是在您使用数学函数时。

    @(x) 定义 x 是与数学中的 f(x) 相同的变量。 fzero() 是 MATLAB 的现有函数,用于计算 f(x) = 0 的 x 值,这意味着计算已定义函数的根。在开始时给你的 x 一个实际值确实意味着找到根的起点。在您的情况下,它将找到大于 1 的根。看了existing documentation的MATLAB你就会很清楚了。

    编辑:

    如果你给出一个区间,例如x = [0 1] 而不是x = 1fzero(f,x) 将尝试计算给定区间内 f 函数的根,如果该区间内不存在根,它将返回 NaN价值。

    【讨论】:

    • @EricKim Matlab 的文档及其自己的示例非常有用。祝你好运! ;)
    猜你喜欢
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2012-02-15
    • 2016-02-07
    相关资源
    最近更新 更多