gpt4 book ai didi

python - Sympy - 从三角方程中得到两个解,我原本期望只有一个

转载 作者:行者123 更新时间:2023-12-01 07:00:08 24 4
gpt4 key购买 nike

我正在尝试用 sympy 求解三角方程。我在理解 sympy 正在做什么时遇到问题:我只期望一个解决方案,但我得到了两个。这是代码:

import sympy as sp
sp.var("a, b, c, d, z")
myeq = sp.Eq(c * sp.sin(a * (b / 2 - z)) + d * sp.cos(a * (b / 2 - z)), 0)
sol = sp.solve(myeq, z)
print(sol)

Output: [(a*b - 4*atan((c - sqrt(c**2 + d**2))/d))/(2*a), (a*b - 4*atan((c + sqrt(c**2 + d**2))/d))/(2*a)]

我期待的解决方案是:[b/2 + atan(c/d)/a]

我错过了什么?对于这种具体情况,是否有可能获得单一解决方案?

最佳答案

如果您重新排列方程式,将 sincos 合并为 tan,您将得到您想要的结果:

>>> solve(c/d*tan(a*(b/2-z))-1,z)
[b/2 - atan(d/c)/a]

如果不这样做,SymPy 将根据 exp 重写并求解...在这种情况下,正如您可以验证的那样,它将是 exp(l* a*z)

尝试将两个参数的总和重写为比率可以这样做:

>>> def ratio(eq):
... if isinstance(eq, Eq):
... eq=eq.rewrite(Add)
... A, B = eq.as_two_terms()
... if not A.is_Add and not B.is_Add:
... return Eq(A/B, 1)
>>> trigsimp(ratio(eq))
Eq(c*tan(a*b/2 - a*z)/d, 1)

(如果没有两个项可供使用,该函数将返回 None。)如您所见,在这种情况下,您将得到一个新方程,该方程将根据您的需要进行求解。

关于python - Sympy - 从三角方程中得到两个解,我原本期望只有一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58676184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com