平衡辐射场的内能密度随频率和波长的变化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综合性设计性实验
实验8 平衡辐射场的内能密度随频率和波长的变化 实验目的:
1、弄清平衡辐射场内能密度随频率和波长变化规律
2、推导辐射场能量取极大时对应的波长、频率满足的方程
3、编程求解上述方程
4、编程画出平衡辐射场内能密度随频率和波长变化曲线,理解辐射场能量取极大时对应的波长和频率间的差异 实验背景:
黑体辐射是量子力学重要的实验基础之一,利用光子假说和玻色统计可以给出黑体辐射的内能密度与光子频率或波长之间的关系。
光子是玻色子,自旋为1;光子静止质量为0;光子的动量、能量、频率、波矢、速度之间的关系为
,2/p k k pc
πλ
εω
ε==== 光子数不守恒,0α=,化学势为0。这样光子气体的统计分布为
/1
l l
l kT
a e
εω=
-
光子的自旋在传播方向的投影有±两个值,对应于左右两个偏振光。
在体积V 内,动量为p
p dp +的量子态数为
223238V V
p dp d h c
πωωπ= 在d ωωω+内的光子数为
223
/1
1
kT
V
d c e
ωωωπ-
乘以每一个光子的能量,则辐射场的内能为
3
23/(,)1
kT V U T d d c e ωωωωωπ=-
(1)
若取V=1,则给出了辐射场的内能密度。
注意到光的频率与波长间的关系,容易给出内能密度与波长的关系
5
/81(,)1
hc kT
hc
u T d d e
λπλλλλ
=
- (2)
若令/x kT ω=,则使(1)式有极大值的x 满足 33x e x --= (3)
若令hc
x kT
λ=
,则使(2)式有极大值的x 满足
55x e x -+=
(4)
实验内容:
1、用牛顿法求方程(3)、(4)的根 (1)方程(3)的求根程序ch8_1为: module NUMERICAL implicit none
real, parameter :: zero=0.0001 contains
real function newton(a,f,df) implicit none
real :: a
real, external :: f
real, external :: df
real :: b
real :: fb
b = a-f(a)/df(a)
fb= f(b)
do while( abs(fb) > zero )
a=b
b=a-f(a)/df(a) fb=f(b)
end do
newton=b
return
end function newton
real function func(x)
implicit none
real :: x
func=x+3*exp(-x)-3
return
end function func
real function dfunc(x)
implicit none
real :: x
dfunc=1-3*exp(-x)
return
end function dfunc
end module NUMERICAL
program main
use numerical
implicit none
real :: a
real :: ans
write(*,*)
read (*,*) a
ans=newton(a,func,dfunc)
write(*,"('x=',F15.8)") ans
stop
end program
根为x=2.82144022;
(2)方程(4)的求根程序ch8_2为:module NUMERICAL
implicit none
real, parameter :: zero=0.00001
contains
real function newton(a,f,df) implicit none
real :: a
real, external :: f
real, external :: df
real :: b
real :: fb
b = a-f(a)/df(a)
fb= f(b)
do while( abs(fb) > zero )
a=b
b=a-f(a)/df(a) fb=f(b)
end do
newton=b
return
end function newton
real function func(x)
implicit none
real :: x
func=x+5*exp(-x)-5
return
end function func
real function dfunc(x)
implicit none
real :: x
dfunc=1-5*exp(-x)
return
end function dfunc
end module NUMERICAL
program main
use numerical
implicit none
real :: a
real :: ans
write(*,*)
read (*,*) a
ans=newton(a,func,dfunc)
write(*,"('x=',F16.8)") ans
stop
end program
x=4.96511412;
2、推导内能密度随波长,频率变化的关系式