Julia(SymPy)で連立方程式を解く方法

どうも、木村(@kimu3_slime)です。

今回は、Julia(SymPy)で連立方程式(線形方程式)を解く方法を紹介します。行列は使わず、中学校で学ぶ知識で使えるものです。

 

準備

SymPyを使うので、持っていなければインストールしておきましょう。

準備として、以下のコードを実行しておきます。

 

連立方程式を解く方法

変数として、複数の記号を用意しましょう。

 

「linsolve([方程式1,方程式2],(変数1,変数2))」で連立方程式(2元連立1次方程式)を解くことができます。

\(x-y=1\)という方程式を表したいならば、右辺を0にした形\(x-y-1=0\)にして、左辺の数式「\(x-y-1\)」を使って方程式を表すことになっています。

\[\begin{eqnarray} \left\{ \begin{array} {l} x-y=1\\ -2x+y=4 \end{array} \right.\end{eqnarray}\]

\[\left\{\left( -5, \ -6\right)\right\}\]

この結果は、\(x=-5,y=-6\)が解という意味です。

方程式に代入して確かめてみましょう。「数式.subs(変数,値)」で、値を代入することができます。

\[\left[ \begin{array}{r}x – y – 1\\- 2 x + y – 4\end{array} \right]\]

\[\left[ \begin{array}{r}0\\0\end{array}\right]\]

確かに結果がどちらも0となり、方程式を満たしていることがわかります。

 

\[\begin{eqnarray} \left\{ \begin{array} {l} x-y=1\\ 2x-2y=-4 \end{array} \right.\end{eqnarray}\]

\[\emptyset\]

\(\emptyset\)は空集合の記号で、方程式に解が存在しないことを意味しています。

 

\[\begin{eqnarray} \left\{ \begin{array} {l} x-y=1\\ 0x+0y=0 \end{array} \right.\end{eqnarray}\]

\[\left\{\left( y + 1, \ y\right)\right\}\]

実質1本の方程式です。\(y\)を任意の数として、\(x=y+1\)と表される数が解です。

 

変数を3にした、3元連立1次方程式も同様に解けます。

\[\begin{eqnarray} \left\{ \begin{array} {l} x+2y+3z=4\\ 5x+6y+7z=8\\9x+10y+11z=12 \end{array} \right.\end{eqnarray}\]

\[\left\{\left( z – 2, \ 3 – 2 z, \ z\right)\right\}\]

\(z\)を任意の数として、\(x=z-2,y=3-2z\)と表される数が解です。代入によって検算もできます。

\[\left[ \begin{array}{r}0\\0\\0\end{array}\right]\]

 

以上、Julia(SymPy)で連立方程式を解く方法を紹介してきました。

解が存在しない場合や、解が無数にある場合も含め、文字で表したまま代数的に解けるのが嬉しいですね。

木村すらいむ(@kimu3_slime)でした。ではでは。

 

1から始める Juliaプログラミング
進藤 裕之(著), 佐藤 建太(著)
コロナ社 (2020-03-26T00:00:01Z)
5つ星のうち4.5
¥7,353 (コレクター商品)

 

こちらもおすすめ

Julia(SymPy)による三角関数の特殊な値の計算方法

Julia(SymPy)によるテイラー級数展開の求め方(指数対数、三角、双曲線)

Julia(SymPy)で1変数関数の極限を求める方法

Julia(SymPy)で1変数関数を積分する方法(多項式、指数対数、三角関数)

Julia(SymPy)で1変数関数を微分する方法(多項式、指数対数、三角関数)

.Julia(SymPy)で有理関数を部分分数分解、通分する方法

Julia(SymPy)で多項式の展開・因数分解、方程式を解く方法

Juliaで1変数関数のグラフを描く方法(多項式、指数対数、三角関数)