ここから本文です

現在、ガウシアン関数y=a b*exp(-(x-c)^2/d^2)に実験データを使用しフィッティング...

hakuhatuchun_ponさん

2007/11/2500:38:53

現在、ガウシアン関数y=a b*exp(-(x-c)^2/d^2)に実験データを使用しフィッティングを行いたいのですが、
手法やパラメータa,b,c,dの求め方がわかりません。ソフトを使用せずにする方法を教えてください。

現在、ガウシアン関数y=a+b*exp(-(x-c)^2/d^2)に下記のようなデータを使用しフィッティングを行いたいのですが、
手法やパラメータa,b,c,dの求め方がわかりません。
Excelやgnuplot等のソフトを使用せずに計算したいので
どなたか教えていただけませんか。
よろしくお願いいたします。
(x,y)={
48.800 6092
48.805 6105
48.810 5942
48.815 6000
48.820 6021
48.825 6127
48.830 6131
48.835 6169
48.840 6146
48.845 6077
48.850 6141
48.855 6236
48.860 6115
48.865 6179
48.870 6296
48.875 6176
48.880 6272
48.885 6294
.....}
解けなくて非常に困っております。皆様ご協力お願いいたします。

補足大変申し訳ありません。
....以降のデータです。
48.890 6244
48.895 6464
48.900 6260
48.905 6264
48.910 6653
48.915 6456
48.920 6515
48.925 6534
48.930 6439
48.935 6592
48.940 6346
48.945 6456
48.950 6460
48.955 6485
48.960 6249
48.965 6322
48.970 6464
48.975 6236
48.980 6340
48.985 6081
48.990 6218
48.995 6309
49.000 6288
49.005 6304
49.010 6405
49.015 6569
49.020 6278
49.025 6389
49.030 6372
49.035 6384
49.040 6383

閲覧数:
5,091
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

montmort1854さん

編集あり2007/11/2623:02:47

cは単なる平均なので簡単だと思います.
xとyを単純にかけて,その総和Pを求め,
yの総和Qで割ればその値がcです.
48.92108
くらいになると思います.
次に分散を求めます.
今度はx^2とyをかけてその総和Rをもとめます.
R/Qがx^2の平均です.
R/Q-c^2が分散σ^2になります.
0.00495
程度になると思います.
この分散を2倍したものがd^2に相当します.
つまり
d^2=2σ^2です.
ここまでは問題ないと思いますが,ここまで私が計算するだけでもエクセルを用いています.

aとbを何もソフトを使わないで求めるのは困難だと思います.
ここまで求めた関数とデータの差の2乗和が最小になるようにすればいいと思いますが
エクセルも使わないとなると出来ないことはないかもしれませんが,大変じゃないでしょうか.
実際のやり方の概略だけ示すと,
g=exp(-(x-c)^2/d^2)
yを実際のデータとすると,
(a+bg-y)^2の総和を求めて,その結果をaで偏微分して0と置いた式と,
bで偏微分して=0とした式を連立して解けばいいと思います.

それからデータを実際プロットすると,
y=a+b*exp(-(x-c)^2/d^2)
よりも
y=a+b*exp(-(x-c)^2/d^2)+f*x
のほうが良い結果がでるような気もします.

*********************************
実際にエクセルで計算してみました.
bの係数が1なので先に偏微分したほうが楽かもしれません.
a=324.77083
b=6076.71644
となりました.
計算結果は検算していないので不確かです.
グラフを見る限り妥当な値だと思いますが,やはり後半部分のはずれ値が気になるところです.

****************
すみません.aとbが逆でした.
b=324.77083
a=6076.71644
です.

質問した人からのコメント

2007/12/2 00:02:13

笑う 教えていただいた通りやってみました。誤差はかなりありますが、教えていた事は非常に役に立っています。また、機会がありましたらご教授お願いいたします。

ベストアンサー以外の回答

1〜1件/1件中

2007/11/2501:52:16

そこにあるデータだけでgnuplotで無理矢理フィッティングしてみましたが、
残念ながら収束しませんでした。

ちなみにgnuplotならデータファイルを「test.dat」とすれば
f(x)=a+b*exp(-(x-c**2/d**2))
fit f(x) "test.dat" via a,b,c,d
とするだけです。

一応、増加する傾向があるようですが、
データにばらつきがあり、それぞれに誤差も結構あるんじゃないですか?
何とも言えないです。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

5文字以上入力してください

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。