gpt4 book ai didi

python - SymPy 和复数的平方根

转载 作者:太空狗 更新时间:2023-10-30 01:20:11 25 4
gpt4 key购买 nike

当使用 solve 计算二次方程的根时,SymPy 返回可以简化但我无法简化它们的表达式。一个最小的例子看起来像这样:

from sympy import *
sqrt(-24-70*I)

此处,SymPy 仅返回 sqrt(-24-70*I),而 Mathematica 或 Maple 将返回等同于 5-7*I 的结果。

我知道有两个平方根,但是这种行为意味着 SymPy 会,例如,从 返回非常复杂的解决方案

z = symbols("z")
solve(z ** 2 + (1 + I) * z + (6 + 18 * I), z)

再一次,Maple 和 Mathematica 会很乐意给我求解这个方程的两个高斯整数。

是否有一个选项或我缺少的东西?

最佳答案

求 z 的平方根在逻辑上等同于求解方程 (x+I*y)**2 = z。所以你可以这样做:

from sympy import *
z = -24-70*I
x, y = symbols('x y', real=True)
result = solve((x+I*y)**2 - z, (x, y))

结果是[(-5, 7), (5, -7)]

为方便起见,这可以包装为一个函数:

def my_sqrt(z):
x, y = symbols('x y', real=True)
sol = solve((x+I*y)**2 - z, (x, y))
return sol[0][0] + sol[0][1]*I

现在你可以使用 my_sqrt(-24-70*I) 得到 -5 + 7*I


相同的策略有助于您使用二次方程的示例:

x, y = symbols('x y', real=True)
z = x + I*y
solve(z ** 2 + (1 + I) * z + (6 + 18 * I), (x, y))

输出:[(-3, 3), (2, -4)]

关于python - SymPy 和复数的平方根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41324497/

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