sympy - Python 'add' 对象没有属性 'sqrt'
问题描述
我试图找到射线和 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 什么的。有谁能够帮我?
解决方案
您应该使用 sympy.sqrt() 而不是 numpy.sqrt()。
推荐阅读
- javascript - Heroku - 将 PHP 服务器端的环境变量引用到 JS 客户端文件
- android - React Native 禁用 console.warn 应用屏幕底部的黄色框
- html - 为什么 Outlook 2007、10、13、16、19 更改了我的字体大小?
- flutter - 如何从颤动的对话框中获取值?
- .net - 将一台复制服务器变成观察者
- ssl-certificate - 通配符 ssl 证书 (*.blog.mydomain.com) 在 blog.mydomain.com 上不起作用
- jmeter - 无法通过 Jmeter 脚本更新字段值
- amazon-web-services - AWS ElasticSearch 迁移到另一个区域
- authorization - Swagger 令牌授权
- powershell - PowerShell 字符串中字母的第一个索引