Python 普朗克函数图问题
我们正在绘制温度为5000K-10000K的普朗克函数的整体图 我尝试了各种方法来解决图形问题,但似乎我的格式设置或类似设置导致了混合数组值,我找不到解决方案Python 普朗克函数图问题,python,python-3.x,astronomy,Python,Python 3.x,Astronomy,我们正在绘制温度为5000K-10000K的普朗克函数的整体图 我尝试了各种方法来解决图形问题,但似乎我的格式设置或类似设置导致了混合数组值,我找不到解决方案 import math import matplotlib.pyplot as plt import numpy as np #all constants h=6.62e-34 c=2.998e8 k=1.3806503E-23 pi=np.pi #equation def planck(lamb1,T): top=(2*
import math
import matplotlib.pyplot as plt
import numpy as np
#all constants
h=6.62e-34
c=2.998e8
k=1.3806503E-23
pi=np.pi
#equation
def planck(lamb1,T):
top=(2*h*c**2)/lamb1**5
bottom_hard=h*c/(lamb1*k*T)
Flux=top/((math.e**(bottom_hard)-1))
return Flux
# function inputs
lamb1=np.arange(0.1,10.1,.01)
Flux1=(lamb1*1e-6,5000)
Flux2=(lamb1*1e-6,6000)
Flux3=(lamb1*1e-6,7000)
Flux4=(lamb1*1e-6,8000)
Flux5=(lamb1*1e-6,9000)
Flux6=(lamb1*1e-6,10000)
#Actual plot
#data
wl = np.arange(10e-5, 10e-7,0.01*1e-6)
plt.plot(wl,Flux1)
plt.plot(wl,Flux2)
plt.plot(wl,Flux3)
plt.plot(wl,Flux4)
plt.plot(wl,Flux5)
plt.plot(wl,Flux6)
plt.xlabel("Wavelength(m)")
plt.ylabel("Flux(Vm)")
plt.title("Plancks Function Curve for Temp Ranges 5000K-10,000K")
plt.show()
我得到的错误是
ValueError: x and y must have same first dimension, but have shapes (1000,) and (2,)
我只需要得到实际的图形数据就可以了。完成后,我可以自己做其余的编辑(希望!!)假设您有一个类型并打算定义
Flux1=planck(…)
,问题在于您定义wl
的方式
wl = np.arange(10e-5, 10e-7,0.01*1e-6)
这意味着您创建的数组的值大于10e-5
,小于10e-7
。没有!如果相反,您定义
wl = np.arange(0.1*10e-6, 10.1*10e-6,0.01*1e-6)
然后,您可以绘制
plt.plot(wl, Fluz1)
通常,共享更多的堆栈跟踪会很有帮助,这样人们就可以看到错误发生在哪一行。然而,我猜它在第一个
plt
行plt.plot(wl,Flux1)
上,因为wl
是一个1000个值的范围,而Flux1
(顺便说一句,你不应该在这里使用大写)是一对两个值,显然不是相同的维度。你到底期望Flux1=(lamb1*1e-65000)
做什么?因为在我看来这就是你的问题所在。您正在定义一个元组,其中似乎要定义一系列值。这不只是一个打字错误吗?你是不是想写Flux1=planck(lamb1*1e-65000)
?