TypeError:“Quantity”对象不是callab

2024-09-30 14:33:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解数量错误。
我使用的是pythonversion2.7.1和numpy和quantity包。 我已经发布了定义的变量和方程以及随后的错误。我试图生成一个数组,其中Teffpv的值随θ(th)而变化。有人能解释一下我为什么会犯错误吗?在

a = q.Quantity(0.2,'au').simplified
e = 0.2
r = q.Quantity(0.4,'Rsun').simplified # Radius of blackbody
t = q.Quantity(3500,'K').simplified #temperature for Teff of the star
al = 0.3
N = 100
th = np.linspace(0.,4*np.pi,N)
def d(a,e,th):
    return a*(1-e**2)/(1+e*np.cos(th))
def Teffp(al,t,r,d):
    return ((1.- al)**(1/4))*t*(r/d(a,e,th))**(1/2)
Teffpv = np.zeros(N) # make arrays to store results
for i in range(N-1):
    Teffpv=Teffp(al,t,r,d(a,e,th[i]))

错误信息

^{pr2}$

Tags: ofnumpyfor数量returndef错误np
1条回答
网友
1楼 · 发布于 2024-09-30 14:33:17

您的代码有一些错误:

  • 不需要用np.zeros(N)初始化Teffpv,也不需要使用循环。在
  • Teffp->;的公式中将d(a,e,th)替换为d,这解释了您的错误消息
  • 对有理指数使用float,特别是在Teffp函数中

此代码应按您的要求执行:

import quantities as q
import numpy as np

a = q.Quantity(0.2,'au').simplified
e = 0.2
Rsun = q.UnitQuantity('solar radius', q.m*6.9599e8, symbol='Rsun')
r = q.Quantity(0.4,'Rsun').simplified # Radius of blackbody
t = q.Quantity(3500.,'K').simplified #temperature for Teff of the star
al = 0.3
N = 100
th = np.linspace(0.,4.*np.pi,N)

def d(a,e,th):
  return a*(1-e**2)/(1+e*np.cos(th))

def Teffp(al,t,r,d):
  return ((1.- al)**(0.25))*t*(r/d)**(0.5)

Teffpv = Teffp(al,t,r,d(a,e,th))
print Teffpv

注意:

我在这段代码中添加了Rsun单位的定义,否则我的quantitys包无法识别它。在

我不是天体物理学家,但我发现here;)

相关问题 更多 >