2014-05-08 61 views
-1

我想做兩件事。我想要一組數據以3d,z,theta和r作爲我的座標軸打印出來,並且我想用我給出的方程來計算它。我不明白爲什麼在我給這個代碼時這不起作用。試圖找到我的錯在我的Python代碼

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來繪製它。我似乎做錯了什麼。

+0

'2(THETA)'是不可能的。 –

+0

Both cos ** 2(something) – Emilien

回答

2

在第52行中,cos**2(theta)是錯誤的語法;應該是cos(theta)**2

類似地,在第54行中,sin**2(theta)應該是sin(theta)**2

+0

謝謝。那很簡單!我很感激幫助。 – user3617534

0

KO:錯誤是在這裏

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

到開方COS分辯方法是

rho=(sqrt((r**2)+((a**2)*(cos2(theta)**2)))) 
相關問題