〔前の画面〕
〔クリックポイント〕 〔最新の一覧〕
〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了〕
1187 re(1):fitで変数の変域を指定するには? |
2006/1/25(水)21:37 - 松田七美男 - 203-165-192-238.rev.home.ne.jp - 5246 hit(s)
なぜそのような制限を設ける必要があるのか,背景を教えていただけるとありがたいです.
制限範囲外に最適値があった場合には,打ちきり誤差に入らない場合が想定され,
途中で gnuplot があきらめてしまうからです. もし,理論的に考えて 1-10 の範囲内に
パラメータがあるはずならば,制限なしで最適値を求め,1-10 範囲外であった場合
棄却すればすむ話です. このような単純な関数で,パラメータが理論と合わないデータ
は,ちょっと考えられません.
また無理に 1-10 におさめるため,打ちきり誤差を緩くした場合には,
最適パラメータとは言いがたい無意味な値がえられるでしょう.
とまれ,次のような方法は考えられます.
set xrange[0:5]
g(x,q,b,c,d)=((atan(q)/pi+0.5)*9+1)*x**3+b**2+c*x+d
f(x,a,b,c,d)=a*x**3+b**2+c*x+d
set table
set out "pseudo.dat"
plot f(x,0.5,1,5,pi)*(0.95+0.1*rand(0))
set term x11
reset
fit f(x,a,b,c,d) "pseudo.dat" via a,b,c,d
a1 =a; b1=b; c1=c; d1=d
fit g(x,q,b,c,d) "pseudo.dat" via q,b,c,d
a = (atan(q)/pi+0.5)*9+1
print a1,b1,c1,d1
print a,b,c,d
plot f(x,a,b,c,d), f(x,a1,b1,c1,d1), "pseudo.dat"
pause -1
〔ツリー構成〕
┣【1187】 re(1):fitで変数の変域を指定するには? 2006/1/25(水)21:37 松田七美男 (1005) |
〔前の画面〕
〔クリックポイント〕 〔最新の一覧〕
〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了〕
※ 『クリックポイント』とは一覧上から読み始めた地点を指し、ツリー上の記事を巡回しても、その位置に戻ることができます.