代码之家  ›  专栏  ›  技术社区  ›  Apple Cola

Mathematica无法使用系数求解系统

  •  0
  • Apple Cola  · 技术社区  · 6 年前

    我试图求解一个给定输入值的方程,这样mathematica就可以处理一个答案并产生一个结果。但是,当我尝试这样做时,它不喜欢我给出的方程式:

    Solve[(Exp[2 h] - 1 - 2 h)/(5 h^2) == 0.1, h]

    Solve was unable to solve the system with inexact coefficients or the system obtained by direct rationalization of inexact numbers present in the system. Since many of the methods used by Solve require exact input, providing Solve with an exact version of the system may help.

    Solve[(-1 + E^(2 h) - 2 h)/(5 h^2) == 0.1, h]

    如果未能提供解决方案,则错误 “求解::不精确” 显示,显示上面的文本。我不确定我是否必须对输入参数更加明确。我正试图将h设置为0.1(以及其他值,如002,-0:0001,-0:00002),并获取一个十进制值。使用 也不会产生结果。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Bill    6 年前

    Solve 通常在多项式问题上比在超越问题上好。 Reduce 在超验问题上通常更好,但它也声称它不能破解这个问题。所以我接下来要做的就是

    Plot[{(Exp[2 h] - 1 - 2 h)/(5 h^2), 0.1 },{h,-5,3}]
    

    这告诉我你的函数表现良好,有一个接近-3的解。

    FindRoot 如果给它一个表现良好的问题和一个很好的初始猜测,那么在寻找根的时候通常是非常有攻击性的。因此

    h/.FindRoot[(Exp[2 h] - 1 - 2 h)/(5 h^2) == 0.1 ,{h,-3}]
    

    几乎立刻告诉我,唯一的(真实的)根在-3.41498附近

    这项技术对于方程右边的其他正值也同样有效,甚至可能对h的估计非常粗略。对于右侧的负值,我怀疑您可能有其他问题。你可以用 Plot 在尝试使用之前调查这个 芬德根