Rで連立方程式を解く方法~nleqslv~

このサイトはアフィリエイト広告を含みます
IT・ブログ

Rで連立方程式を解く方法

Rは、統計やデータ解析で利用される機会の多い言語ですが、連立方程式などの計算も比較的簡単な記述で解くことができます。

そこで今回は、Rで連立方程式を簡単に解く方法についてご紹介します。

例題

Rで連立方程式を解くにあたって、下のような簡単な例題を考えてみます。

$x+y=15$

$x+2y=25$

手計算で解けるかと思いますが、答えは $x=5, y=10$ となります。

この解をプログラムで導出していきます。

ライブラリの使い方

ライブラリは、nleqslvを使用します。

このライブラリは、連立方程式を式変形することなく使用できるという特徴があります。

その他には、行列式などに式変形し、行列計算をすることで、解を求める方法もあります。

しかし、式変形をする過程で計算ミスをすることもありますし、そもそも式変形が面倒なので、処理スピードを重視するなどの理由がなければ、このライブラリの使用をおすすめします。

nleqslvのインストール方法

Rのコンソール画面で下記を実行し、nleqslvをインストールします。

install.packages("nleqslv")

Rstudioユーザーの場合は

Packes → Install から「nleqslv」と入力し、インストールすると早いです。

nleqslvの使い方

ソースコードは下記のとおりです。

#ライブラリの読み込み
library(nleqslv)

#連立方程式の関数を設定
fn <- function(z) {
  X <- z[1] # 変数x
  Y <- z[2] # 変数y
  
  Q1 <- X + Y - 15 # 連立方程式の1行目
  Q2 <- X + 2*Y - 25 # 連立方程式の2行目
  
  # 戻り値に方程式を設定
  c(Q1, Q2)
}

#変数の初期値を設定(x=1, y=1)
z_ini <- c(1, 1) 

#連立方程式を計算
result <- nleqslv(z_ini, fn) 
result
方程式を書く際は$x+y-15$のようにQ1、Q2が0になるようにしてください。

内部のアルゴリズムでは、Q1、Q2の値を0にするようなx, yの解を探しています。

出力結果

$x
[1]  5 10

$fvec
[1] 3.552714e-15 0.000000e+00

$termcd
[1] 1

$message
[1] "Function criterion near zero"

$scalex
[1] 1 1

$nfcnt
[1] 1

$njcnt
[1] 1

$iter
[1] 1

出力結果からきちんと解が得られている確認します。

$xの部分がx, yの解です。ちゃんと正しい解が得られているのがわかります。

その他にもいろいろなメッセージが出ていますが、連立方程式の解だけを抜き出したい場合は、

result$x

とすれば、解を格納したベクトルが得られます。

Rのおすすめの本をご紹介

Rでのデータ分析を体系的に学べるおすすめの本です。

ちょっと古いですが、Rの有名な本です。

まとめ

いかがだったでしょうか。今回はRで連立方程式を解く方法について、解説してみました。

連立方程式を解くだけならRを使わなくてもExcelだけでも解けるようですが、行列の計算をする形になるので、ちょっと面倒だなぁと思い、Rで解いていたので、その方法について紹介してみました。

便利なので、是非試してみてください。

コメント

タイトルとURLをコピーしました