質問: 1...x:3.5 y:17.6 2...x:4.9 y:32.1 3...x:4.1 y:26.8のような表があります。
回答: これは、最小二乗法と呼ばれる方法で解くことができます。 http://ja.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%97%E... ただ、「行列を用いて」といわれても、知恵袋上では難しすぎます。 ブリーフケースにアップロードしました。 Word形式 http://briefcase.yahoo.co.jp/bc/kts2371148/vwp2?.tok=bc.1ZCaB1Ij.1K... TIFF形式(1つのファイルで2ページあります) http://briefcase.yahoo.co.jp/bc/kts2371148/vwp2?.tok=bc.1ZCaBkvMFX0... 上記リンクをクリックした後、現れたアイコンをクリックしても表示されますが、満足のいく表示ではありません。 上記リンクをクリックしたら、右クリックして「対象をファイルに保存」で自分のパソコンに保存してからご覧になって下さい。 A4の紙に印刷してみてもいいでしょう。 これで、何をすればいいかわかりましたでしょうか? 行列のせいで頭がこんがらがるようでしたら、補足下さい。 (でも、私が追記できる余裕があるかはわかりません。) 「プログラムの作成を教えて下さい」とのことですが、 その点についてはもう一度質問を立ち上げた方がいいかもしれません。 そのときには、 「連立方程式を解くプログラムの作成を教えて下さい。 何かコツなどありますでしょうか? 使用言語は***です。」 などと質問するとよいでしょう。 ────────────── 例として、次の方程式を考えます。 0x + 2y + 1z = 7 2x + 1y - 2z = -4 -x + 3y - 2z = -1 係数だけを書き出すと、こうなります。 0 2 1 | 7 2 1 -2 | -2 -1 3 -2 | -1 人間であれば、手のつけやすいところから計算すればいいのですが、 コンピュータは馬鹿正直ですから、言われたことしかしません。 それで、こうすれば絶対に解ける、というワンパターンの解法を教えてあげなければなりません。 その場合の解法は以下のようになります。 (第1段階) まず、1列目の中で、絶対値が最も大きいものを選びます。(2行目ですね) そして、その行と1行目を入れ替えます。(1行目と2行目を入れ替えます) 2 1 -2 | -2 0 2 1 | 7 -1 3 -2 | -1 このように、1行目の1列目に、絶対値が最も大きいものをもってきます。 なお、この場合、1行目の1列目の要素を「ピボット」といいます。 次に、ピボットを1にするため、1行目をすべて2で割ります。 1 1/2 -1 | -1 0 2 1 | 7 -1 3 -2 | -1 それから、1行目を -0 倍して2行目に加え、1行目を -(-1) 倍して3行目に加えます。 1 1/2 -1 | -1 0 2 1 | 7 0 7/2 -3 | -2 (第2段階) 第2段階は、1行目を無視して、2行目以降を考えればOKです。 2列目の中で(つまり、2 と 7/2 の中で)絶対値が最も大きいものを選びます。 (3行目になります。) それで、2行目と3行目を入れ替えます。 1 1/2 -1 | -1 0 7/2 -3 | -2 0 2 1 | 7 第2段階では、2行目の2列目の要素がピボットになります。 ピボットを1にするため、2行目をすべて 7/2 で割ります。 1 1/2 -1 | -1 0 1 -6/7 | -4/7 0 2 1 | 7 そして、2行目を -2 倍して3行目に加えます。 1 1/2 -1 | -1 0 1 -6/7 | -4/7 0 0 19/7 | 57/7 (第3段階) 第3段階は、2行目までを無視して、3行目を考えればOKです。 もう対象行は1行しかありませんので、3行目の3列目の要素がピボットになります。 ピボットを1にするため、3行目をすべて 19/7 で割ります。 1 1/2 -1 | -1 0 1 -6/7 | -4/7 0 0 1 | 3 (最終段階) 連立方程式の形に戻すと、 x + (1/2)y - z = -1 y - (6/7)z = -4/7 z = 3 となります。あとは順次代入すれば、x,y,z の値が求まります。 上記の計算の中で、「絶対値が最も大きいものを選ぶ」とありますが、これには理由があります。 ・0で割ることはできない ・0に近い数の場合、その数で割って計算すると、切り捨てによる誤差が出やすい コンピュータの場合、分数でそのまま計算することは普通しませんので、どうしてもこうなります。 それで、上記のような事態を防ぐために、絶対値が最も大きいものを選び、 それをピボットにするために行交換を行うわけです。 また、今回は3変数なので3段階+最終段階となりますが、 10変数なら10段階+最終段階となります。 なお、最小二乗法について私が作成したファイルは、たぶん合っていると思うものの、 間違いがある可能性もありますので、ご了承下さい。 それにしても、ここまでに書いた事柄はすべて授業で何らかの形で説明があったはずなのですが...