(shoichi@nc-toyma.ac.jp) 電子情報工学科5年(前期) 7回目(21/5/2015) 担当:古山彰一 (shoichi@nc-toyma.ac.jp)
1 2 3 4 5 0 1 2 3 4 5 次の5点があったとする。 プロットすると(→)、大体直線にこれらのデータがのりそう。 グラフ中の赤い線の関数を求める…というのが前回の話。 でもやっぱり直線に乗るかどうかは現象次第。 この場合も曲線にしたほうがより良いかも? ということで、曲線の式も求められるようにしよう!というのが今日のお題。 X 1.0 2.0 3.0 4.0 5.0 Y 2.5 2.9 3.5 4.4 1 2 3 4 5 0 1 2 3 4 5
関数として1次式を使い場合の最小2乗法の計算手順は以下の通りだった(復習その1) 直線の式なので、とりあえず直線の式を y=ax+b とする。 適切なa,bはどうなるだろうか? 直線の式に1点目のデータ(1.0, 2.0)を代入してみる。 2 = a + b となる。直線がこの点を通っていれば右辺は2となり、2=2となるはず。 しかし、直線は点の「近く」を通る、としているので誤差がある。その誤差は、絶対値を用いて|a+b-2|で表すことができる。 同様にして x=2では|2a+b-2.5|, x=3では|3a+b-2.9|, x=4では|4a+b-3.5|, x=5では|5a+b-4.4|となる。 誤差の合計(要は足し合わせる)をE0とすると、 E0= |a+b-2|+|2a+b-2.5|+|3a+b-2.9|+|4a+b-3.5|+|5a+b-4.4| となる。絶対値が扱い辛いので、各項の二乗の合計を考えてそれをEとする。
復習その2
基本的には関数が一般化しても、計算の流れは同じ 誤差の最小値を求めて直線の式を導出する(復習その3) a,bについて連立方程式を解くと、a= 0.58, b=1.32 が導出され、 目的の直線の式は、 y=0.58x + 1.32 と求められる。 ここまでは先週の話だが、 基本的には関数が一般化しても、計算の流れは同じ
一般的な最小二乗法
(4.26) ここを書き換える
ここで式(4.26)を書き直すと、 x b つまり のように書ける。 ここで、A,bはデータ点から定まる値なので、この式は、a1〜akについてk個の連立方程式となり、以下のように掃き出せる。aが求まることで近似関数も導出できる。
課題 最小2乗法によるプログラムを作成しなさい。 任意の点数に対応し、近似関数として2つの一次独立関数の和で表せるものが選べるプログラムを作成しなさい。 p.83例題2、p.87問5、p.88問7をそのプログラムを用いて解きなさい。 上記2.の3つの問題について、Gnuplotを用いて、求められた関数と、入力した点をグラフに描く(本ファイルのgnuplotの説明のページにあるようなグラフを作成) プログラムソースコード、3つの問題の入出力結果、それぞれのgnuplotでのグラフをレポートとしてまとめる。 上記課題をレポートにまとめてpdfファイルにしたうえで、本日中に古山までメールで提出(shoichi@nc-toyama.ac.jp)しなさい。 なおファイル名は、07i5??.pdf とする。??は二桁の出席番号。