以下是MATLAB的代码:
%温度不同的普朗克黑体单色辐射能力与波长的曲线
clear %清除变量
k=1.38054e-23; %玻尔兹曼常数
h=6.626e-34; %普朗克常数
c=2.997925e8; %光速
sigma=5.6688e-008; %斯特潘常数
b=0.0029; %维恩常数
t=1400:100:2000; %热力学温度向量
n=length(t); %向量长度
lambda=[0:0.01:5]*1e-6; %波长向量
lambda(1)=eps; %给零加一小量使分母不为零
[T,L]=meshgrid(t,lambda); %波长和温度矩阵
M=2*pi*h*c^2./(exp(h*c./(k*T.*L))-1)./L.^5;%单色辐射能力,14.1.2
figure %创建图形窗口
plot(lambda*1e6,M) %画曲线
hl=legend([repmat('\itT\rm=',n,1),num2str(t'),repmat('K',n,1)]);%标记图例
fs=16; %字体大小
set(hl,'fontsize',fs) %设置图例大小
grid on %加网格
title('普朗克黑体单色辐射能力与波长的关系','fontsize',fs)%标题
xlabel('波长\it\lambda\rm/\mum','fontsize',fs)%横坐标
yl='单色辐射能力\itM\rm(\it\lambda\rm,\itT\rm)/(W\cdotm^-^3)';%纵坐标字符串
ylabel(yl,'fontsize',fs) %纵坐标
txt=['\itb\rm=' num2str(b) 'm\cdotK']; %维恩常数文本
txt=[txt ',\it\sigma\rm=' num2str(sigma) 'W/(m^2\cdotK^4)'];%斯特潘常数文本
text(0,max(M(:))/10,txt,'fontsize',fs) %显示常数
hold on %保持图像
[mx,ix]=max(M); %找最大值和下标
stem(lambda(ix)*1e6,mx,'--','filled') %画直杆图
text(lambda(ix)*1e6,mx,[num2str(lambda(ix)'*1e6)],'fontsize',fs)%显示峰值波长
t=1300:2020; %较密的温度向量
lambda=b./t; %波长向量
m=2*pi*h*c^2./(exp(h*c./(k*t.*lambda))-1)./lambda.^5;%单色辐射能力向量
plot(lambda*1e6,m) %画峰值曲线