我正在尝试绘制黑体辐射的普朗克定律,其中温度值不同。该定律如下
\begin{equation*}
\rho(\omega, T)
=
\cfrac{\hbar \omega^3}{\pi^2 c^3}
\frac{1}{\exp\bigBracket{\frac{\hbar \omega}{k_BT}} - 1},
\end{equation*}
其中 $\rho(\omega, T)$ 是脉动位于区间 [$\omega$, $\omega+d\omega$ 内的波的单位体积密度能量。
下面,您将找到绘制所需图形的代码:
\def\hPLANCK{6.62e-34}
\def\PI{3.14}
\def\hPLANCKbar{\hPLANCK/(2*\PI)}
\def\kb{1.38e-23}
\def\c{3e8}
\begin{tikzpicture}[samples=100, scale=1.15]
\begin{axis}[
xmin=0,
xmax=8e15,
xlabel={$\omega$ [\si{\hertz}]},
ymin=0,
ymax=10,
ylabel={$\rho (\omega; T)$ [\si{\joule\per\cubic\meter}]},
no markers,
grid=both,
style={ultra thick}]
\foreach \T in {3000, 4000, 5000}
{
\addplot+ {(\hPLANCKbar*x^3)/(\PI^2*\c^3)*(exp(\hPLANCKbar*x/(\kb*\T))-1)};
\addlegendentryexpanded{T = \T [\si{\kelvin}]}
}
\end{axis}
\end{tikzpicture}
感谢您的时间和帮助,祝您有愉快的一天
答案1
欢迎来到 TeX.SE!您可能想要使用\pgfplotsinvokeforeach
for 循环以避免使用扩展技巧。也许更重要的是,什么决定了常数的数值选择?单位!而您的选择使这些数字变得非常大。因此我建议使用自然单位,其中\hbar=c=k_\mathrm{B}=1
。那么剧情就好办了。
\documentclass[border=3.14mm,tikz]{standalone}
\usepackage{siunitx}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[samples=100, scale=1.15]
\begin{axis}[
xmin=0,
xlabel={$\omega$ [\si{\hertz}]},
ymin=0,
ymax=pi,
ylabel={$\rho (\omega; T)$ [\si{\joule\per\cubic\meter}]},
ytick=\empty,
no markers,
grid=both,domain=0.1:40,
style={ultra thick}]
\pgfplotsinvokeforeach{3000, 4000, 5000}
{
\addplot+
{(x^3)/((pi^2)*(exp(2000*x/(#1))-1))};
\addlegendentryexpanded{$T = #1 [\si{\kelvin}]$}
}
\end{axis}
\end{tikzpicture}
\end{document}