【发布时间】:2021-03-02 09:16:01
【问题描述】:
目前使用 sympy 求解以下方程组:
from sympy import symbols, Eq, nsolve, exp, log, cosh
eq1 = Eq(Vmax**2/Amax * log(cosh(Amax*4.82/Vmax)),40)
eq2 = Eq(Vmax**2/Amax * log(cosh(Amax*2.8/Vmax)),20)
solution = nsolve([eq1, eq2], [Amax, Vmax], [1, 1])
我使用这种技术得到了解决方案。但是我有第三个方程,我想使用所有 3 个方程求解 2 个未知数。 Sympy 中是否可以用 3 个方程求解 2 个未知数?
from sympy import symbols, Eq, nsolve, exp, log, cosh
eq1 = Eq(Vmax**2/Amax * log(cosh(Amax*4.82/Vmax)),40)
eq2 = Eq(Vmax**2/Amax * log(cosh(Amax*2.8/Vmax)),20)
eq3 = Eq(Vmax**2/Amax * log(cosh(Amax*1.65/Vmax)),10)
solution = nsolve([eq1, eq2, eq3], [Amax, Vmax], [1, 1])
尝试上面的代码会出现值错误:ValueError: Could not find root within given tolerance. (0.181941547657103824541 > 2.16840434497100886801e-19) Try another starting point or tweak arguments.
谁能帮助或建议我如何使用 3 个方程来获得 2 个未知数的值?
谢谢!
【问题讨论】:
-
对不起,如果我听起来很幼稚,但你为什么需要 3 个方程?前两个还不够吗?
-
没有意义。如果你得到一个包含两个方程的解,那么第三个方程就无法为谜题添加任何东西。
-
@PythonPikachu8 是的,但要确保前两个方程的解实际上符合第三个方程。或者在三个方程中的两个方程之间进行某种组合,以便它可以适合第三个。
-
为什么你不能把前两个方程的数字代入,然后看看它是否适用于第三个方程?
-
@Kraigolas 我明白了。我在考虑线性方程,所以它是真的。