gpt4 book ai didi

Python 属性错误 :cos

转载 作者:太空狗 更新时间:2023-10-30 01:55:15 27 4
gpt4 key购买 nike

我正在尝试使用 Python2.7 对方程式进行数值求解。这是整个代码:

from sympy import *
from sympy import Symbol
from sympy.solvers import nsolve
from scipy import *
from pylab import *
import numpy as np

# Symbols
theta = Symbol('theta')
phi = Symbol('phi')
phi0 = Symbol('phi0')
H0 = Symbol('H0')
# Constants
a = 0.05
b = 0.05**2/(8*pi*1e-7)
c= 0.001/(4*pi*1e-7)
phi0 = 60*pi/180
H0 = -0.03/(4*pi*1e-7)
def m(theta,phi):
return np.array([sin(theta)*cos(phi), sin(theta)*cos(phi), cos(phi)])
def h(phi0):
return np.array([cos(phi0), sin(phi0), 0])
def k(theta,phi,phi0):
return np.vdot(m(theta,phi),h(phi0))
def F(theta,phi,phi0,H0):
return -(a*H0)*k(theta,phi,phi0)+b*(cos(theta)**2)+c*(sin(2*theta)**2)+sin(theta)**4*sin(2*phi)**2
def F_phi(theta,phi,phi0,H0):
return simplify(diff(F(theta,phi,phi0,H0),phi))
def G(phi):
return F_phi(pi/2,phi,phi0,H0)
solution = nsolve(G(phi), phi)
print solution

这是我的回溯:

Traceback (most recent call last):
File "Test.py", line 33, in <module>
solution = nsolve(G(phi), phi)
File "Test.py", line 32, in G
return F_phi(pi/2,phi,phi0,H0)
File "Test.py", line 30, in F_phi
return simplify(diff(F(theta,phi,phi0,H0),phi))
File "Test.py", line 28, in F
return -(a*H0)*k(theta,phi,phi0)+b*(cos(theta)**2)+c*(sin(2*theta)**2)+sin(theta)**4*sin(2*phi)**2
File "Test.py", line 26, in k
return np.vdot(m(theta,phi),h(phi0))
File "Test.py", line 22, in m
return np.array([sin(theta)*cos(phi), sin(theta)*cos(phi), cos(phi)])
AttributeError: cos

我正在使用 sympy、numpy 和 pylab 库。所以,我对 cos 函数没有问题。有帮助吗?

最佳答案

问题是使用星形导入而不是在不同的命名空间下导入每个包。

这个导入函数 sympy.functions.elementary.trigonometric.coscos下姓名:

from sympy import *

之后,您导入 <ufunc 'cos'>名下cos , 覆盖之前的定义:

from scipy import *

然后,它会覆盖之前的 cos通过完全相同的函数的另一个副本来运行(来自 matplotlib 包):

from pylab import *

这也导入相同的 <ufunc 'cos'>但在np.cos下名称。 这是导入东西的正确方法:

import numpy as np

最后,您得到的是 cos 函数的副本,它知道如何将自身应用于 float ,而不是 sympy 对象。当您尝试将该函数应用于 phi 之类的 sympy 对象时你得到 AttributeError .总而言之,这个特定问题的解决方案是修复导入并知道您是想要来自 sympy 的函数还是来自 numpy 的函数。

关于Python 属性错误 :cos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13336048/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com