Python的“添加”对象没有属性“ sqrt”

时间:2018-07-10 00:37:08

标签: sympy

我试图找到射线与3D表面之间的交点,以球坐标r = f(theta)给出。

不确定如何在Python中简单地做,我首先将表面方程式转换为笛卡尔式。 然后我使用sympy模块来求解关于t的二阶参数方程。

import numpy as np
from sympy.solvers import solve
from sympy import Symbol

def mpn(Pd,Bz,X,Y,Z,px,py,pz):

    r0=(10.22+1.29*np.tanh(0.184*(Bz+8.14)))*Pd**(-1/6.6)
    alpha=(0.58-0.007*Bz)*(1+0.024*np.log(Pd))

    t=Symbol('t',positive="True")
    x=X+px*t
    y=Y+py*t
    z=Z+pz*t

    sol=solve(x**2+y**2+z**2-r0**2*(2/(1+x/np.sqrt(x**2+y**2+z**2)))**(2*alpha),t)[0]
    return (X+px*sol,Y+py*sol,Z+pz*sol)

sol=mpn(3.69,-4.20,-6.71,-10.3,-5.05,0.0582,0.0012,-0.9983)

但这会产生奇怪的错误,“添加”对象没有属性“ sqrt”。 我不知道为什么会这样,因为我使用了np.sqrt,而不是Add.sqrt或+ .sqrt之类的东西。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您应该使用sympy.sqrt()而不是numpy.sqrt()。