web-dev-qa-db-ja.com

Rで連立方程式を解く

次の方程式があると仮定します。

 x + 2y + 3z = 20  
2x + 5y + 9z = 100  
5x + 7y + 8z = 200

xy、およびzのこれらの方程式を解くにはどうすればよいですか?可能であれば、Rまたはその他のコンピューターツールを使用して、これらの方程式を解きたいです。

32
mlzboy

これは動作するはずです

A <- matrix(data=c(1, 2, 3, 2, 5, 9, 5, 7, 8), nrow=3, ncol=3, byrow=TRUE)    
b <- matrix(data=c(20, 100, 200), nrow=3, ncol=1, byrow=FALSE)
round(solve(A, b), 3)

     [,1]
[1,]  320
[2,] -360
[3,]  140
30
MYaseen208

わかりやすくするために、前の回答でマトリックスの作成方法を変更しました。

a <- rbind(c(1, 2, 3), 
           c(2, 5, 9), 
           c(5, 7, 8))
b <- c(20, 100, 200)
solve(a, b)

分数を表示する必要がある場合:

library(MASS)
fractions(solve(a, b))
8
mpalanco

別のアプローチは、次のようにlmを使用して方程式をモデル化することです。

lm(b ~ . + 0, 
   data = data.frame(x = c(1, 2, 5), 
                     y = c(2, 5, 7), 
                     z = c(3, 9, 8), 
                     b = c(20, 100, 200)))

生産する

Coefficients:
   x     y     z  
 320  -360   140

tibbleパッケージを使用する場合、元の方程式と同じように読み込むこともできます。

lm(b ~ . + 0, 
   tibble::tribble(
     ~x, ~y, ~z,  ~b,
      1,  2,  3,  20,
      2,  5,  9, 100,
      5,  7,  8, 200))

同じ出力を生成します。

3
banbh