我需要写一个脚本,解决一个复杂的数字三角方程内的变量,我该如何解决它?你知道吗
到目前为止,我试着使用sympy的Eq函数来输入需要分离x的方程,然后使用solve/solveset函数,但是这不起作用。我已经通过代数手工分离出来了,但我想知道,不管怎样,是否有可能计算出它的值,而不必输入变量的孤立方程。你知道吗
import cmath
from sympy import *
x = symbols('x')
Zl = complex(20, -10)
Z0 = 75
pl = abs((Zl - Z0)/(Zl + Z0))
SWR = (1 + pl)/(1 - pl)
eq = Eq(SWR, (Zl + 1j*(Z0*SWR*cmath.tan(2*cmath.pi*x)))/(Z0 + 1j*(Zl*SWR*cmath.tan(2*cmath.pi*x))))
m = solve(eq)
print(m)
我希望输出是(-0.22734187163019368+7.138384643986063e-18j)
,这是我通过手工求解得到的结果。(m = cmath.atan(1j*(Z0*SWR-Zl)/(Zl*SWR - Z0))/(2*cmath.pi)
)
我得到以下错误:
Traceback (most recent call last):
File "C:/Users/juank/PycharmProjects/TXScripts/solveM_givenSWR.py", line 16, in <module>
eq = Eq(SWR, (Zl + 1j*(Z0*SWR*cmath.tan(2*cmath.pi*x)))/(Z0 + 1j*(Zl*SWR*cmath.tan(2*cmath.pi*x))))
File "C:\Users\juank\PycharmProjects\TXScripts\venv\lib\site-packages\sympy\core\expr.py", line 285, in __complex__
return complex(float(re), float(im))
File "C:\Users\juank\PycharmProjects\TXScripts\venv\lib\site-packages\sympy\core\expr.py", line 280, in __float__
raise TypeError("can't convert expression to float")
TypeError: can't convert expression to float
尽量不要将
cmath
与sympy
一起使用。将所有cmath
函数替换为它们的sympy
等价函数。sympy
有自己的三角函数。cmath
版本需要一个float。你知道吗我更喜欢显式导入,以便知道使用的库,例如:
from sympy import tan as sy_tan, symbols, complex
(as
是可选的)通常命名函数的命名空间问题总是会产生问题。你知道吗
相关问题 更多 >
编程相关推荐