%pylab inline
import matplotlib.pyplot as plt
from ipywidgets import * # az interaktivitásért felelős csomag
(Planck-féle feketetest-sugárzási törvény)
hbar=1.0545718*10**(-34)
kB = 1.3806488*10**(-23)
clight= 299792458
def Planck_om(lam,T):
# hbar/(pi**2*clight**3)*
beta=1/(kB*T)
tmp = omega**3/(exp(beta*hbar*omega)-1)
return tmp
def Planck_lam(lam,T):
# hbar/(pi**2*clight**3)*
beta=1/(kB*T)
omega=clight* 2*pi/lam
tmp = 16*pi**2*hbar*clight*lam**(-5)/(exp(beta*hbar*omega)-1)
return tmp
# Az abra kimentesehez az alabbiakat a plt.show() ele kell tenni!!!
#savefig('fig_rainbow_p2_1ray.pdf'); # Abra kimentese
#savefig('fig_rainbow_p2_1ray.eps'); # Abra kimentese
# Abra es fontmeretek
xfig_meret= 9 # 12 nagy abrahoz
yfig_meret= 6 # 12 nagy abrahoz
xyticks_meret= 15 # 20 nagy abrahoz
xylabel_meret= 20 # 30 nagy abrahoz
legend_meret= 17 # 30 nagy abrahoz
$\frac{dE}{d \lambda} = u(\lambda,T)$, where
$u(\lambda,T) = \frac{16 \pi^2 \hbar c }{\lambda^5\left(e^{\beta \hbar \omega} -1\right)}$
$\beta \hbar \omega_{\mathrm{max}} = 2.82144$
$\frac{2\pi \hbar c}{k_\mathrm{B}T \lambda_{\mathrm{max}}} = 4.96511$
npoints=100
xmax = 10
x=linspace(0.001,xmax,npoints)
figsize(xfig_meret,yfig_meret)
plot(x,x**3/(exp(x)-1),color='r',lw=3,label='Planck\'s law')
plot(x,x**3/exp(x),'--g^',lw=2,label='Wien\'s law')
x=linspace(0.001,1.2,50)
plot(x,x**2,'--b',lw=3,label='Rayleigh-Jeans')
title("Universal Planck\'s law, $u(x)$",fontsize=15)
ylabel(r'$u(x)$',fontsize=xylabel_meret, rotation=0, labelpad=30)
xlabel(r'$x=\frac{\hbar \omega}{k_{\mathrm{B}}T} $',fontsize=xylabel_meret)
legend(loc='upper right',fontsize=12)
ylim(0,1.5)
grid();
npoints=1000
lammax = 3000 # in nm
x=linspace(10,lammax,npoints)
Tvec=[3000,4000,5000]
vonal=['-.','--','-']
xmm=4.965114231 # Wien eltolodasi torveny
lamvec=[]
for TT in Tvec:
lamvec.append(10**9*clight*2*pi/(kB*xmm*TT/hbar))
print(lamvec)
ommax = 2.814*kB*Tvec[-1]/hbar # \omega_max erteke a legnagyobb T-nel.
norm = 1/Planck_lam(lamvec[-1]*10**(-9),Tvec[-1]) # a Planck gorbe maximuma a legnagyobb T-nel,
# ezzel normalunk
figsize(xfig_meret,yfig_meret)
[plot(x,norm*Planck_lam(x*10**(-9),Tvec[i]),label=r'$T= $' + str(Tvec[i]) +' K',
ls=vonal[i],color='k')
for i in range(3)]
title("Planck\'s law, $u(\lambda,T)$",fontsize=15)
ylabel(r'$u(\lambda,T)$',fontsize=xylabel_meret, rotation=0, labelpad=30)
xlabel(r'$\lambda\, (\mathrm{nm}) $',fontsize=xylabel_meret)
xvcoord=[450,500,700]
szin=['b','g','r']
[axvline(x=xvcoord[i],color=szin[i]) for i in range(len(xvcoord))]
ylim(0,1.1)
legend(loc='upper right',fontsize=legend_meret)
grid();
npoints=1000
lammax = 6000 # in nm
x=linspace(10,lammax,npoints)
Tvec=[3000,4000,5000]
vonal=['-.','--','-']
xmm=4.965114231 # Wien eltolodasi torveny
lamvec=[]
for TT in Tvec:
lamvec.append(10**9*clight*2*pi/(kB*xmm*TT/hbar))
print(lamvec)
ommax = 2.814*kB*Tvec[-1]/hbar # \omega_max erteke a legnagyobb T-nel.
norm = 1/Planck_lam(lamvec[-1]*10**(-9),Tvec[-1]) # a Planck gorbe maximuma a legnagyobb T-nel,
# ezzel normalunk
figsize(xfig_meret,yfig_meret)
[plot(x,norm*Planck_lam(x*10**(-9),Tvec[i]),label=r'$T= $' + str(Tvec[i]) +' K',
ls=vonal[i],color='k')
for i in range(3)]
text(2200, 0.2, 'Rayleigh-Jeans \n classical model', fontsize=15)
xRJ=linspace(2000,lammax,100)
[plot(xRJ,norm*16*pi**2*hbar*clight*(xRJ*10**(-9))**(-5)/
(exp(hbar*2*pi/(xRJ*10**(-9))/kB/Tvec[i])),'--r.') for i in range(3)]
title("Planck\'s law, $u(\lambda,T)$",fontsize=15)
ylabel(r'$u(\lambda,T)$',fontsize=xylabel_meret, rotation=0, labelpad=30)
xlabel(r'$\lambda\, (\mathrm{nm}) $',fontsize=xylabel_meret)
xvcoord=[450,500,700]
szin=['b','g','r']
[axvline(x=xvcoord[i],color=szin[i]) for i in range(len(xvcoord))]
ylim(0,0.35)
legend(loc='upper right',fontsize=legend_meret)
grid();
def rajzPlanck(lammin,lammax,npoints,TT):
# npoints=1000
# lammax = 3000 # in nm
x=linspace(10,lammax,npoints)
# TT=5000
xmm=4.965114231 # Wien eltolodasi torveny
lamvec=10**9*clight*2*pi/(kB*xmm*TT/hbar)
ommax = 2.814*kB*Tvec[-1]/hbar # \omega_max erteke a legnagyobb T-nel.
norm = 1/Planck_lam(lamvec*10**(-9),TT) # a Planck gorbe maximuma a legnagyobb T-nel,
# ezzel normalunk
figsize(xfig_meret,yfig_meret)
norm=1
plot(x,norm*Planck_lam(x*10**(-9),TT),label=r'$T= $' + str(TT) +' K',
ls='-',color='k')
title("Planck\'s law, $u(\lambda,T)$",fontsize=15)
ylabel(r'$u(\lambda,T)$',fontsize=xylabel_meret, rotation=0, labelpad=30)
xlabel(r'$\lambda\, (\mathrm{nm}) $',fontsize=xylabel_meret)
xvcoord=[450,500,700]
szin=['b','g','r']
[axvline(x=xvcoord[i],color=szin[i]) for i in range(len(xvcoord))]
#ylim(0,1.1)
legend(loc='upper right',fontsize=legend_meret)
grid();
print('blue = {0:.0f} nm'.format(xvcoord[0] ))
print('green = {0:.0f} nm'.format(xvcoord[1] ))
print('red = {0:.0f} nm'.format(xvcoord[2] ))
print('lambda_max = {0:.3f} nm'.format(lamvec))
interact(rajzPlanck,
lammin=fixed(10),
lammax=fixed(3000),
TT=FloatSlider(min=300,max=5000,step=500,value=3000,description='T='),
npoints=fixed(1000));