我正在用 LaTeX 记下光子学讲座的笔记。这样我既能理解笔记,又能学习一些 LaTeX。坦率地说,用 LaTeX 记笔记是完成这些笔记的一大动力!
问题是,我需要绘制一个如下所示的量子谐波振荡器:
这是我目前所拥有的:
我希望更好地控制抛物线所以我最终可以把它放大,并改变我通过猜测得到的纵横比。还有我想绘制波函数并把它们放在带有箭头的抛物线外面(即大头针)但我不确定绘制波函数的最佳方法是什么。我该如何绘制它们?它们只需要是正弦/余弦函数。
以下是我目前所掌握的信息:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[->] (-0.5,-2) -- (-0.5,0.5);
\draw (-2.69,-0.5) -- (2.5,-0.5) node[right] {E2};
\draw (-2.25,-1) -- (2.5,-1) node[right] {E1};
\draw (-1.75,-1.5) -- (2.5,-1.5) node[right] {E0};
\draw (-3,0) parabola[parabola height=-2cm] (2,0);
\end{tikzpicture}
\end{document}
我要警告你,我曾尝试过从函数中绘图(通过 gnuplot 引入),但它似乎从来没有起作用,所以如果这是你的答案,请准备好接受彻底的解释!
编辑第一篇
我现在有这个代码
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[->] (0,0) -- (0,4.5);
\def\lzero{(3,0.4) cos (4,0.6) sin (5,0.8) cos (6,0.6) sin (7,0.4)};
\fill[blue,opacity=0.2] \lzero;
\draw[blue!75!black] \lzero node[right,black] {$\Psi_0(x)$ \textendash ~Even};
\draw (-0.632,0.4) -- (2,0.4) node[right] {$E_0$};
\def\lone{(3,1.5) cos (3.66,1.4) sin (4.33,1.3) cos (5,1.5) sin (5.66,1.7) cos (6.33,1.6) sin (7,1.5)};
\fill[red,opacity=0.2] \lone;
\draw[red!75!black] \lone node[right,black] {$\Psi_1(x)$ \textendash ~Odd};
\draw (-1.224,1.5) -- (2,1.5) node[right] {$E_1$};
\def\ltwo{(3,2.6) cos (3.5,2.7) sin (4,2.8) cos (4.5,2.6) sin (5,2.4) cos (5.5,2.6) sin (6,2.8) cos (6.5,2.7) sin (7,2.6)};
\fill[green,opacity=0.2] \ltwo;
\draw[green!75!black] \ltwo node[right,black] {$\Psi_2(x)$ \textendash ~Even};
\draw (-1.61,2.6) -- (2,2.6) node[right] {$E_2$};
\draw (0,0) parabola (2,4);
\draw (0,0) parabola (-2,4);
\end{tikzpicture}
\end{document}
由此产生了如下结果:
现在我了解了如何更好地绘制抛物线,以及如何制作波函数,我高兴多了。
答案1
您可以将波函数近似为sin
和cos
部分:
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usetikzlibrary{decorations}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}
\def\lzero{(-5,1) cos (-2.5,1.5) sin (0,2) cos (2.5,1.5) sin (5,1)};
\fill[blue,opacity=0.2] \lzero;
\draw[blue!75!black] \lzero node[right,black] {$\Psi_0(x)$};
\def\lone{(-5,2.5) cos (-3.33,2.25) sin (-1.66,2) cos (0,2.5) sin (1.66,3) cos (3.33,2.75) sin (5,2.5)}
\fill[red,opacity=0.2] \lone;
\draw[red!75!black] \lone node[right,black] {$\Psi_1(x)$};
\def\ltwo{(-5,4) cos (-3.75,4.25) sin (-2.5,4.5) cos (-1.25,4) sin (0,3.5) cos (1.25,4) sin (2.5,4.5) cos (3.75,4.25) sin (5,4)}
\fill[green,opacity=0.2] \ltwo;
\draw[green!75!black] \ltwo node[right,black] {$\Psi_2(x)$};
\draw (0,0) parabola (5,10);
\draw (0,0) parabola (-5,10);
\begin{scope}[decoration={border, segment length=1cm, amplitude=1mm, angle=90}]
\draw[postaction={decorate,draw}] (-5,0) -- (5.1,0);
\draw[postaction={decorate,draw}] (0,0) -- (0,10.1);
\end{scope}
\end{tikzpicture}
\end{document}
问题在于左侧和右侧的“淡入”和“淡出”部分。我尝试通过将宽度分成相等的部分来模仿这一点,但让振幅在边缘上升得更慢。如果您可以提供一个计算波函数值的公式,那么可能会更好,然后可以使用更多点来使其看起来更好。此外,cos
和sin
部分的数量随着每个级别而增加,因此给出一个计算公式将大大增强将其扩展到更高级别的能力。
答案2
对于绘制函数,我发现 pgfplots 比使用“原始”TikZ 绘图功能更舒服。这是前四个波函数的图,如中所述http://galileo.phys.virginia.edu/classes/751.mf1i.fall02/SimpleHarmonicOscillator.htm
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=-3.5:3.5, samples=50,no markers, hide axis,y=1cm,thick]
\addplot [gray] {1/2*x^2};
\addplot {1/(2*sqrt(1*1!))*exp(-x^2/2)+1};
\addplot {1/(2*sqrt(2*1!))*2*x*exp(-x^2/2)+2};
\addplot {1/(2*sqrt(4*2!))*(4*x^2-2)*exp(-x^2/2)+3};
\addplot {1/(2*sqrt(8*3!))*(8*x^3-12*x)*exp(-x^2/2)+4};
\end{axis}
\end{tikzpicture}
\end{document}
答案3
我不知道你为 Alpha 使用了什么值,这就是我将其设置为 0.5 的原因。你可以修改它。波函数应该是不言自明的。
xelatex
使用或序列运行示例latex->dvips->psp2df
\documentclass{article}
\parindent=0pt
\usepackage{pst-plot}
\begin{document}
\begin{pspicture}(-6,-1)(6,7)\psset{plotpoints=200}
\pstVerb{/Alpha 0.5 def } %the value for Alpha
\psplot[algebraic,fillstyle=solid,fillcolor=blue!15,linecolor=blue]{-6}{6}%
{(Alpha/Pi)^0.25*2.728^(-(Alpha*x^2)/2)}
\rput(0,1.5){%
\psplot[algebraic,fillstyle=solid,fillcolor=red!15,linecolor=red]{-6}{6}%
{(Alpha/Pi)^0.25*sqrt(2*Alpha)*x*2.728^(-(Alpha*x^2)/2)}}
\rput(0,3){%
\psplot[algebraic,fillstyle=solid,fillcolor=green!15,linecolor=green]{-6}{6}%
{(Alpha/Pi)^0.25*(2*Alpha*x^2-1)/sqrt(2)*2.728^(-(Alpha*x^2)/2)}}
\rput(0,4.5){%
\psplot[algebraic,fillstyle=solid,fillcolor=cyan!15,linecolor=cyan]{-6}{6}%
{(Alpha/Pi)^0.25*(2*(sqrt(Alpha)*x)^3-3*sqrt(Alpha)*x)/sqrt(3)*2.728^(-(Alpha*x^2)/2)}}
\psaxes[labels=none,ticksize=-4pt 0,
linecolor=black!40]{->}(0,0)(-5,-1)(5,7)[$x$,0][$\Psi$,0]
\end{pspicture}
\end{document}
答案4
使用 tkz-fct 和 gnuplot。一些备注:我需要添加一些内容以避免重复域,然后当使用多个函数时,您可以通过字母 a、b、c 等引用它们。但这是主要的。也许我需要创建类似的东西\tkzDrawAreagf
\documentclass{article}
\usepackage{tkz-fct}
\begin{document}
\begin{tikzpicture}[xscale=.75,yscale=1.25]
\tkzInit[xmin=-8,xmax=8,ymin=0,ymax=70,ystep=10]
\tkzDrawXY
\tkzFct[domain = -8:8]{10}
\tkzFct[domain = -8:8]{10+5*sin(x)}
\tkzDrawAreafg[between=a and b,color = purple!20,domain = -8:8]
\tkzDrawAreafg[between=b and a,color = purple!20,domain = -8:8]
\tkzFct[domain = -8:8]{30}
\tkzFct[domain = -8:8]{30+5*sin(1.5*x)}
\tkzDrawAreafg[between=c and d,color = orange!20,domain = -8:8]
\tkzDrawAreafg[between=d and c,color = orange!20,domain = -8:8]
\tkzFct[domain = -8:8]{50}
\tkzFct[domain = -8:8]{50+5*sin(2*x)}
\tkzDrawAreafg[between=e and f,color = blue!20,domain = -8:8]
\tkzDrawAreafg[between=f and e,color = blue!20,domain = -8:8]
\tkzFct[domain = -8:8]{x*x}
\end{tikzpicture}
\end{document}