【问题标题】:Matlab fzero command usageMatlab fzero 命令用法
【发布时间】:2016-02-03 13:33:44
【问题描述】:

我正在尝试围绕点 x=-2 近似解方程 x+sin(x) = -e^x。我用了这条线:

fzero('x+sin(x) == -exp(x)', -2);

但是,这给了我错误的答案。我相信我的错误是在表达式中使用了==,它应该是:

fzero('x+sin(x)+exp(x)', -2);

谁能解释一下这背后的原因?

【问题讨论】:

  • 除了答案之外,除非您的 Matlab 版本已有 10 年历史,否则您不应使用字符串。请阅读fzero 的文档/帮助并了解匿名函数和函数句柄:fzero(@(x)x+sin(x)+exp(x), -2)

标签: matlab calculus


【解决方案1】:

引用MATLAB documentation

x = fzero(fun,x0) 试图找到x 所在的点fun(x) = 0

fzero 不会为您重新排序方程,它只能计算 root or zero of a given function

【讨论】:

    【解决方案2】:

    答案在于函数的名称。 fzero(f,p) 找到哪里 f == 0 在 p 点附近。

    对于你的第一个例子,你问什么时候x+sin(x) == -exp(x)。当这是真的时,您提供的函数将输出 1 ,这将使 fzero 输出除您想要的答案之外的任何值。

    【讨论】:

    • 你不能通过减去 1 并使用 fzero 来求根来计算任何方程的解,因为 fzero 会寻找不会发生的符号变化(结果比较可以是真或假,但不是否定的)。
    • 这对我来说没有意义:“当这是真的时,您提供的函数将输出 1,这将使 fzero 输出除您想要的答案之外的任何值。”。你能澄清你的意思吗?老实说,这闻起来像牛粪。
    • 这可能是否定 500 年代数的最搞笑的方式。
    猜你喜欢
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    相关资源
    最近更新 更多