复三角方程中x的求解

2024-04-25 09:25:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要写一个脚本,解决一个复杂的数字三角方程内的变量,我该如何解决它?你知道吗

到目前为止,我试着使用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

Tags: pifloatusersfilecmatheqplsympy
1条回答
网友
1楼 · 发布于 2024-04-25 09:25:27

尽量不要将cmathsympy一起使用。将所有cmath函数替换为它们的sympy等价函数。sympy有自己的三角函数。cmath版本需要一个float。你知道吗

我更喜欢显式导入,以便知道使用的库,例如:

from sympy import tan as sy_tan, symbols, complexas是可选的)

通常命名函数的命名空间问题总是会产生问题。你知道吗

相关问题 更多 >

    热门问题