试图找到我在python代码中出错的地方

时间:2014-05-08 17:43:48

标签: python 3d

我正在尝试做两件事。我想要一组数据以3d,z,theta和r作为我的轴打印出来,我希望用我给它的方程式进行计算。我不明白为什么当我给它这个代码时这不起作用。

from math import *
from numpy import *
from pylab import *
from mpl_toolkits.mplot3d.axes3d import Axes3D



G=6.6738480e-11
c=2.99792458e8
Msun=1.9891e30
M=4*(Msun)
r=linspace((3*(M/Msun)*1000),(8*(M/Msun)*1000),1000)
a=.98

theta=arange(0,2*pi,pi/100)
rho=(sqrt((r**2)+((a**2)*(cos**2(theta)))))
delta=((r**2)+(a**2)-(2*M*r))
sigma=(sqrt((((r**2)+(a**2))**2)-((a**2)*delta*(sin**2(theta)))))

z=((1/(sigma(rho(sqrt(delta)))))-1)


fig = plt.figure(figsize=(14,6))
ax = fig.add_subplot(1, 1, 1, projection='3d')
p = ax.plot_surface(r, theta, z, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=0, antialiased=False)
cb = fig.colorbar(p, shrink=0.5)
show()

我很确定我使用的是3D轴错误,除此之外我收到了这个错误:

---> 52 rho=(sqrt((r**2)+((a**2)*(cos**2(theta)))))
     53 delta=((r**2)+(a**2)-(2*M*r))
     54 sigma=(sqrt((((r**2)+(a**2))**2)-((a**2)*delta*(sin**2(theta)))))

TypeError: 'int' object is not callable 

我输错了吗?我应该使用不同的语法吗? 任何帮助表示赞赏。我想要做的是计算z,因为这会给我我的红移,我想用增加的r和theta来绘制它。我似乎做错了什么。

2 个答案:

答案 0 :(得分:2)

在第52行,cos**2(theta)是错误的语法;应为cos(theta)**2

同样,在第54行中,sin**2(theta)应为sin(theta)**2

答案 1 :(得分:0)

KO:错误就在这里

rho=(sqrt((r**2)+((a**2)*(cos**2(theta)))))

到sqrt cos的方法是

rho=(sqrt((r**2)+((a**2)*(cos2(theta)**2))))