【プログラミング】連立方程式を解く(Ruby)
【プログラミング】連立方程式を解く(Ruby)
線形代数
次の連立方程式の解を求めたい場合、
\begin{eqnarray} \left\{ \begin{array}{l} 2x + 11y + 23z= 434 \\ 7x + 19y +5z= 323 \\17x + 3y+13z=321 \end{array} \right.\end{eqnarray}
\[A = \begin{pmatrix} 2 & 11 & 23\\ 7 & 19 & 5\\17&3&13 \end{pmatrix} \]
\[\textbf{b} = \begin{pmatrix}434\\323\\321\end{pmatrix}\]
\[\textbf{x}=\begin{pmatrix}x\\y\\z\end{pmatrix}\]
とすると、
\[A\textbf{x}=\textbf{b}\]
となります。
$\textbf{x}$を求めたいので変形すると、
\[\textbf{x} = A^{-1}\textbf{b} \]
行列$A$の逆行列とベクトル$\textbf{b}$の積が解になります。
プログラミング(Ruby)
行列を扱うクラスを読み込んで、プログラムを書きます。
invは逆行列を求めるメソッドです。
簡単に解を導くことができました。