Sympy 输出中引入了新符号

问题描述 投票:0回答:1

我正在尝试使用 Sympy 求解以下一组非线性方程

(a + x + tan(b /2) * r) / (a + m + tan(g /2) * r) = tan(pi - g)
g + b =  3/2* pi

当我向 Sympy 提供方程时,请参阅下面的代码,我确实得到了答案,尽管引入了新符号“I”。这个“我”是什么?没有矩阵符号,因此它不可能是单位矩阵。

from sympy import solve, symbols, pi, tan, Rational

a, x, b, g, r, m = symbols("a x b g r m")
half = Rational(1, 2)
eq1 = (a + x + tan(b * half) * r) / (a + m + tan(g * half) * r) - tan(pi - g)
rational = Rational(3, 2)
eq2 = g + b - rational * pi

solution = solve((eq1, eq2), b, g, dict=True)
print(solution)

输出:

[{
  b: I*log(-sqrt((-a - I*a - I*m + r + I*r - x)/(a - I*a - I*m - r + I*r + x))) + 3*pi/2, 
  g: -I*log(-sqrt(-(a + I*a + I*m - r - I*r + x)/(a - I*a - I*m - r + I*r + x)))
}, 
{
  b: I*log((-a - I*a - I*m + r + I*r - x)/(a - I*a - I*m - r + I*r + x))/2 + 3*pi/2,
  g: -I*log(-(a + I*a + I*m - r - I*r + x)/(a - I*a - I*m - r + I*r + x))/2
}
]

我尝试用 Eq 运算符 (

eq1 = Eq((a + x + tan(b * half) * r) / (a + m + tan(g * half) * r), tan(pi - g))
) 来表达方程,但这会产生相同的结果。

对于 x=m=0,我知道 g=b=135deg (2.355 rad),因为这些方程是与三角形相关的更大问题的一部分。

python sympy symbolic-math
1个回答
0
投票

I
代表复数的“虚部”。您得到的结果没有真正的解决方案(只有两个复杂的解决方案)。

在纯 Python 中,它表示为

j
,例如
1+2j

© www.soinside.com 2019 - 2024. All rights reserved.