質問: 不規則に変化する無数のデータを一つの数式を経由させることで一定の値に近づける関数の求め方 一変数に対して不規則に変化する無数のデータを一つの数式を経由させることで一定の値に収束させる関数の求め方について伺いたいです。 大変わかりにくい質問かと思いますが、お助けいただけたらと思います。 あるx-yの位置グラフについてxが増加するにつれて(増加の幅は一定ではないが、必ず増加する状況です)yの値がある値rより上下して測定される状況です。 この時最小二次方などで近似式を導出することは難しくありませんが、実際にあるyに関する無数のエクセルデータにある関数をつかって、値rに変える・近づける関数の導出が行いたいのですが、良いアイディアはありませんか。 matlabの質問でなく、数学の質問になってるかもしれませんがよろしくおねがいします。
回答: 無理矢理ある値に収束させたいなら近似式を導出するというよりはある値に収束する関数(例えば指数関数)を変形するのがいいのではないでしょうか。例えば指数関数を使ってこんな関数を考えることができます。 これはx=0でf=y(1)、x→∞で→rとなる関数です。 例えばこんな感じです。 n=50; % データ数 x=rand(1,n); x(1)=0; x=cumsum(x); % 0から始まってランダムに増加するx r=10; % 収束値 b=1; % データのばらつき幅 y=r +(2*b*rand(1,n)-b); % rの前後に幅bでばらつくサンプルデータ a=0.2; % 減衰率 f=exp(-a*x).*y-r*(exp(-a*x)-1); plot(x,y,'or'); % 元データ hold on plot(x,r*ones(size(x)),'--'); % 収束線 plot(x,f,'*b'); % 修正値 この式に物理的意味は全くありません。 状況がわからないのでなんとも言えませんが、データがバラつくなら、ばらつきが正規分布するなど、モデル化して真値を推定するか、エラーバーなどでばらつきと一緒にデータを表示する方がいいと思います。 フィルタについては本などを調べてみてください。