昨日のブログでExcelで近似式でデータをフィッティングする方法を話しました。Excelにも限界があり、複雑な曲線はフィッティング出来ず、あきらめたことありませんか?
資料ご覧ください。 → カーブフィッティング
Excelファイルと資料を合わせてご覧ください。 → カーブフィッティング
p.2 Excelの近似は最高6次ぐらいまでしかフィットしてくれません。
p.3 n次の方程式の場合n+1個のxとyのデータがあれば、連立方程式を解けば各項の係数aを求めることができます。Aの逆行列を求めれば算出可能です。ただし、データ間で外れることはよく起きます。
p.4 ExcelでAの逆行列A-1の作成手順です。Aの行列を作ります。a1列はxそのもの、a2列はx2、a3列はx3を計算します。後は中央に記載の手順で逆行列を計算させてください。 係数a0は、逆行列の1行目とyの値を掛けて足し合わせたものです。
p.5 「ラグランジュ補間」という公式で求める方法とその結果です。上述の連立方程式と同じフィッティングとなります。
p.6 Excelのマクロを用いて、データ、データ数(関数表点数)及び補間点数を入れると赤字のように計算してくれます。
p.7 「スプライン補間法」があります。右側にその仕組を数式で示しましたが、導出は難解です。
p.8 前ページの式を行列にして解きます。今回も逆行列を利用します。この補間はかなりうまくフィッティングできています。ただし、行列を作成するのが面倒です。マクロが組めれば可能かもしれません。
p.9、10 どんな複雑な波でも式で表すことができるという話を以前しました。 つまりフーリエ変換を利用すればフィッティング可能なのです。
p.11 合成された波はフーリエ変換により、構成している波に分解してそのパワースペクトルを得ることが可能です。周波数分析ですね。
p.12 xとyのデータが、ある関数の波の上に乗っているとします。フーリエ変換により、いろいろな周波数の波に分解してその振幅を算出します。周波数を横軸、振幅を縦軸にするとパワースペクトル(右図の上)になります。これを逆変換したものが右下の表です。cosとsinの下にある数値が各々の係数になります。
p.13 左下は各々の周波数におけるcos波とsin波とその合成波(赤線)です。測定データを結んだ曲線(左上の図)にフィットしました。
p.14 種々のフィッティングの比較です。青線がそのフィッティング曲線です。スプライン補間とフーリエ変換のフィッティングがいいことが明らかですね。
p.15~19 どんな曲線でも連続していれば、三角関数で表されるか? できます。 フーリエ変換で「矩形波」や「三角波」も三角関数で表せてしまうのです。不思議ですね。高校の数学の先生が「どんな複雑な曲線も式で書ける」というのは本当だったことを、今更ながら噛みしめています。フーリエさん凄い!!