以下是我根据温度和距离的变化绘制半Planck law的方法。
import numpy as np
k = 1.381*np.power(10,-23, dtype=np.float)
c = 3*np.power(10,8)
h = 6.626*np.power(10,-34, dtype=np.float)
l = 3*np.power(10,-6, dtype=np.float)
d_lower = 16*np.power(10,4)
d_upper = 2*np.power(10,6)
t_lower = 740
t_upper = 5200
d = np.arange(d_lower,d_upper,100)
t = np.arange(t_lower,t_upper,10)
D,T = np.meshgrid(d, t)
I = (2*h*np.power(c,2))/(np.power(D,2)*np.power(l,5)*(np.exp((h*c)/(l*k*T))-1))
解释器返回以下错误:
RuntimeWarning: divide by zero encountered in true_divide
I = (2*h*np.power(c,2))/(np.power(D,2)*np.power(l,5)*(np.exp((h*c)/(l*k*T))-1))
因为T
的值在开尔文中,所以我不应该被零除,所以np.exp((h*c)/(l*k*T))-1
不能为零。
这是怎么了?!
我的python和numpy版本分别为3.7.0
和1.15.4
。
答案 0 :(得分:-1)
问题可能出在以下事实上:它是矩阵除法,而python处理得不好。
尝试替换:
I =(2 * h * np.power(c,2))/(np.power(D,2) np.power(l,5)(np.exp(( h c)/(l k * T))-1))
作者:
aaa = (2*h*np.power(c,2))
bbb = (np.power(D,2)*np.power(l,5)*(np.exp((h*c)/(l*k*T))-1))
I = aaa/bbb
对我有用
SLP