繁体   English   中英

求解复杂三角方程中的 x

[英]Solving for x in a complex trigonometric equation

我需要编写一个脚本来求解复数三角方程中的变量,我该如何求解?

到目前为止,我尝试使用 sympy 的 Eq 函数输入我需要从中隔离 x 的方程,然后使用求解/求解集函数,但这不起作用。 我已经通过代数手动隔离,但我想知道是否有可能以任何方式计算其值而不必输入变量的隔离方程。

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

您可以这样做:

import sympy as sy
import sympy.physics.units as units
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*sy.tan(2*sy.pi*x)))/(Z0 + 1j*(Zl*SWR*sy.tan(2*sy.pi*x))))
m = solve(eq)
print(m)

出:

[-0.17024174602024 + 2.08200031329753e-16*I]

尝试不要将cmathsympy一起sympy 将所有cmath函数替换为它们的sympy等效项。 sympy具有自己的三角函数。 cmath版本期望浮动。

我更喜欢显式导入,因此我知道我正在使用哪个库,例如:

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

具有通用函数的命名空间问题将始终引起问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM