実験結果をグラフにプロットした後、近似曲線を引いて、測定点以外での値を予測するという作業は業務でもよく行われているかと思います。Excelのグラフには近似曲線という機能があり、多項式近似が行えます。
しかしながら、Excelの多項式近似では、6次までが限界であり、しかも、近似曲線から任意の値での近似結果を求めることはできません。FreeMatでは、任意の次数での多項式近似が可能です。ここでは、下表の結果から多項式近似を行い、得られた近似式から任意の点での近似結果を計算してみます。
始めに表の値を、
x=[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0];
y=[-0.6,0,0.1,0.2,0.5,0.6,0.4,0.3,0.4,0.5,0.9];
として入力します。plot(x,y,'ro');とすると、結果が赤い○で表示されたグラフが得られます。次に、p=polyfit(x,y,n);とすると、x,yのデータをn次の多項式に近似した結果が得られます。pは任意の配列で、pにはn次の係数、n-1次の係数...、定数項が格納されます。近似できる最大の次数はデータ対数-1となります。
今回の例ではn=10が最大の次数です。y1=polyval(p,x1)とすると、得られた近似式を基に、x1での近似計算結果をy1に返します。図7はn=5として近似した結果を、x1=0:0.01:1として0.01刻みの近似曲線をプロットしたものです。一方、図8はn=10として近似した結果を同様に近似曲線としてプロットしたものです。最大の次数で近似すると、与えられた点を通過する近似式が得られます。
以上の結果をプログラミングしたものが添付のex201.mです。添付のex201.mをカレントディレクトリあるいは設定したパスに保存して、ex201とするか、エディタで開いて実行させると、グラフを出力してくれます。その後、コマンドウィンドウで、例えば、polyval(p,0.567)とすると、ans = 0.4773と、x=0.567での近似結果を表示してくれます。
clear; x=[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]; y=[-0.6,0,0.1,0.2,0.5,0.6,0.4,0.3,0.4,0.5,0.9]; plot(x,y,'ro'); p=polyfit(x,y,10); hold('on'); px=0:0.01:1; py=polyval(p,px); plot(px,py,'b-'); hold('off');
◇
次回は、グラフのタイトル追加など、グラフ修飾に関して説明します。
伊藤孝宏(いとう・たかひろ)
1960年生。小型モーターメーカーのエンジニア。博士(工学)。専門は流体工学、音・振動工学。現在は、LabVIEWを使って、音不良の計測・診断ソフト、特性自動検査装置などの開発を行っている。
Copyright © ITmedia, Inc. All Rights Reserved.