使用sympy.用np.deg2rad在方程中求解



我想使用sympy。将方程解为一个变量。方程里面有np。deg2rad, np。Tan和np。pi。例如,我想求解方程'a-np.tan(np.deg2rad(b))*np.pi',这是我的代码:

import numpy as np
import math
import sympy as sy
a,b = sy.symbols('a b')
sy.solve(a-np.tan(np.deg2rad(b))*np.pi, a)

当我尝试时,我得到以下错误:

AttributeError: 'Symbol' object has no attribute 'deg2rad'

The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  Input In [79] in <cell line: 1>
    sy.solve(a-np.tan(np.deg2rad(b))*np.pi, a)
TypeError: loop of ufunc does not support argument 0 of type Symbol which has no callable deg2rad method

我试过更换这些零件。例如用numpy_tan代替np。这样我就可以解出它,然后再替换它。这是我的第二个代码:

import numpy as np
import math
import sympy as sy
numpy_tan,numpy_deg2rad,numpy_pi,a,b = sy.symbols('numpy_tan numpy_deg2rad numpy_pi a b')
sy.solve(a-numpy_tan(numpy_deg2rad(b))*numpy_pi, a)

当我这样做的时候,我得到一个不同的错误:

Traceback (most recent call last):
  Input In [81] in <cell line: 1>
    sy.solve(a-numpy_tan(numpy_deg2rad(b))*numpy_pi, a)
TypeError: 'Symbol' object is not callable

我怎么做才能让它工作?谢谢你!

如果你试图用符号来解一个方程,那么你应该使用SymPy中的符号例程。NumPy的函数如deg2rad等不能使用符号:

In [1]: import sympy as sym
In [2]: a, b = sym.symbols('a, b')
In [4]: sym.solve(a - sym.tan(b*sym.pi/180)*sym.pi, a)
Out[4]: 
⎡     ⎛π⋅b⎞⎤
⎢π⋅tan⎜───⎟⎥
⎣     ⎝180⎠⎦

最新更新