A CO$_2$ molekula atomjai egyensúlyi helyzetükben egy egyenesben helyezkednek el. A molekula hosszirányú rezgéseit az alábbi egyenletrendszer írja le kis kitérések esetén:
\begin{align} m_\mathrm{O} \overset{..}{x}_1 &=& k\cdot(x_2-x_1),\\ m_\mathrm{C} \overset{..}{x}_2 &=& k\cdot(x_1-x_2)+k\cdot(x_3-x_2),\\ m_\mathrm{O} \overset{..}{x}_3 &=& k\cdot(x_2-x_3), \end{align}ahol a $x_1$, $x_2$ és $x_3$ az atomok kitérései egyensúlyi helyzetükből, elhelyezkedésük sorrendjében számozva.
Feltéve, hogy a rendszer harmonikus rezgőmozgást végez ( $x_i=A_i\cdot e^{\mathrm{i}\omega t}$ ), az alábbi egyenletrendszerre jutunk:
\begin{align} m_\mathrm{O} \omega^2 A_1 &=& k\cdot(A_1-A_2),\\ m_\mathrm{C} \omega^2 A_2 &=& k\cdot(A_2-A_1)+k\cdot(A_2-A_3),\\ m_\mathrm{O} \omega^2 A_3 &=& k\cdot(A_3-A_2). \end{align}Legyen $k=1$, $m_\mathrm{O}=16$ és $m_\mathrm{C}=12$.
Határozuk meg a numpy eig() rutinja segítségével az $\omega_i$ sajátfrekvenciákat (sajátértékeket), illetve a sajátfrekvenciákhoz tartozó rezgési módusokat (sajátvektorokat)!
Legyen $\frac{k}{m_\mathrm{O}} = \omega_0^2$! Ekkor az egyenletrendszer átrendezhető az alábbi formába: $$ \begin{split} \left( \frac{\omega}{\omega_0} \right)^2 A_1 &= 1 \cdot A_1 - 1 \cdot A_2 + 0 \cdot A_3 \\ \left( \frac{\omega}{\omega_0} \right)^2 A_2 &= - \frac{m_\mathrm{O}}{m_\mathrm{C}} \cdot A_1 + 2 \frac{m_\mathrm{O}}{m_\mathrm{C}} \cdot A_2 - \frac{m_\mathrm{O}}{m_\mathrm{C}} \cdot A_3 \\ \left( \frac{\omega}{\omega_0} \right)^2 A_3 &= 0 \cdot A_1 - 1 \cdot A_2 + 1 \cdot A_3 \\ \end{split} $$ A fenti egyenletrendszer átírható mátrixos alakba is. Jelölje $\lambda$ a $\left(\frac{\omega}{\omega_0}\right)^2$ hányadost, $\mu$ pedig a $\frac{m_\mathrm{O}}{m_\mathrm{C}}$-t! Ekkor $$ \lambda \left( \begin{array}{c}A_1\\A_2\\A_3\end{array} \right) = \left( \begin{array}{ccc} 1 & -1 & 0\\ -\mu & 2 \mu & -\mu \\ 0 & -1 & 1 \end{array} \right) \left( \begin{array}{c}A_1\\A_2\\A_3\end{array} \right) $$ Ekkor $\lambda$ a $\left( \begin{array}{ccc} 1 & -1 & 0\\ -\mu & 2 \mu & -\mu \\ 0 & -1 & 1 \end{array} \right)$ mátrix sajátértéke, az $A_i$ komponensekből álló vektor pedig sajátvektora. A sajátmódusok meghatározásához tehát nem kell mást tenni, mint megállapítani a sajátértékeket.
Ehhez először töltsük be a pylab
csomagot.
%pylab inline
A vizsgálandó mátrixot tároljuk el egy matrix
típusú változóba, majd pedig oldjuk meg a sajátértékproblémáját:
M = matrix([[1, -1, 0], [-16/12, 32/12, -16/12], [0, -1, 1]])
eig(M)
A harmadik sajátérték a 0, ráadásul a hozzá tartozó sajátvektor minden komponense egyenlő, így ez nem valódi rezgés, tehát a rezgési módusokat a a másik két sajátérték adja meg.
A második sajátérték $\lambda_2 = 1$, vagyis ez a rezgésimódus $\omega_2 = \omega_0$. Az ehhez a sajátértékhez tarozó vektor második komponense $A_2^{\left(2\right)} = 0$, a másik két eleme pedig ellentett: $A_1^{\left(2\right)} = - A_3^{\left(2\right)}$. Mivel a sajátvektorok tetszőleges számmal megszorozhatóak, ezek értéke is tetszőleges.
Az első sajátvektor pedig $\lambda_3 = 3.67$, vagyis ehhez tartozó rezgésimódus $\omega_1 = 1.91 \omega_0$. Itt már a sajátvektor mindhárom komponensének van értéke, de még mindig megszorozható tetszőleges számmal, így elég csak az arányukat megadni: $A_1^{\left(1\right)} = A_3^{\left(1\right)} = - 0.375 A_2^{\left(1\right)}$