〔前の画面〕
〔クリックポイント〕 〔最新の一覧〕
〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了〕
1205 re(7):fitで変数の変域を指定するには? |
2006/1/28(土)15:30 - 竹の - nolm01.iee.niit.ac.jp - 1535 hit(s)
となると環境依存かもしれませんね。うちは
・Solaris 9 (sparc) + gnuplot 4.0, 4.1
・FreeBSD 4.7 + gnuplot 4.0
上で以下のを実行すると g2(x,q,b,c,d) で fitting が "Singular
matrix in Invert_RtR" でこけます。
----- ここから -----
set xrange[0:5]
h(x) = (x>0)?1.0/(1.0+exp(-x)):exp(x)/(1.0+exp(x))
h2(x,a,b) = h(x)*(b-a)+a
g2(x,q,b,c,d)=h2(q,1,10)*x**3+b**2+c*x+d
f(x,a,b,c,d)=a*x**3+b**2+c*x+d
# gnuplot 4.0 の場合
set term table
# gnuplot 4.1 の場合
# set table
set out "pseudo.dat"
plot f(x,0.5,1,5,pi)*(0.95+0.1*rand(0))
set out
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 g2(x,q,b,c,d) "pseudo.dat" via q,b,c,d
a2 = h2(q,1,10); b2=b; c2=c; d2=d
print a1,b1,c1,d1
print a2,b2,c2,d2
plot f(x,a1,b1,c1,d1), f(x,a2,b2,c2,d2), "pseudo.dat" w p
pause -1
----- ここまで -----
help exp には以下のように書いてあるので、そのようなライブラ
リの影響でもあるのでしょうかね。
関数 `exp(x)` 引数の指数関数の値 (`e` の引数乗) を返します。
環境によっては (特に sun) 大きい x の値に対する exp(-x) は未
定義値を返す場合があります。このような場合、
safe(x) = x<-100 ? 0 : exp(x) のようなユーザ定義関数が役に
立つでしょう。
環境で一番違いそうなのは上の中だと rand() 辺りなような気がしま
すが、生成されるデータによって違いが出ているのかもしれませんね。
〔ツリー構成〕
┣【1205】 re(7):fitで変数の変域を指定するには? 2006/1/28(土)15:30 竹の (1296) |
〔前の画面〕
〔クリックポイント〕 〔最新の一覧〕
〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了〕
※ 『クリックポイント』とは一覧上から読み始めた地点を指し、ツリー上の記事を巡回しても、その位置に戻ることができます.