解決済みの質問
誤差関数(正規分布)について質問します。 x軸のある点で切り取られた面積を求め...
誤差関数(正規分布)について質問します。
x軸のある点で切り取られた面積を求める方は判ります。(数値計算で)
x=2で切る取られた右側の面積とかはわかります。
逆に与えられた面積(つまり確率)からxを知る解
法をお教え下さい。
以前本で見かけ丸写しでprogramに導入、うまくいったんですがそのご移植、改造をくりかしているうちにそのオリジナルに不安を感ずるようなりました、
その辺のかくにんをしたんですが。出来ればその本が見つかるといいんですが
コンピュタテクノロカテゴリーでかんばしこたえにめぐりあえなかったの流れてきました
fortran、basic、c、c++は判りますその言語で、、、、、
あわれなお年寄り(75歳)お救いくだい。
たしかほんに出てたんが地元図書か全部しらべたんだ、、、、、が、
- 補足
- ニュウートン法で、初期値を与えなかったので無勾配とみなされ失敗しました。
質問を取り消します。ご協力ありがとうございました。
betstAでないと御礼だめなんですか?
-
- 質問日時:
- 2012/2/14 00:38:56
-
- 解決日時:
- 2012/2/28 06:39:06
-
- 回答数:
- 1
-
- お礼:
- 知恵コイン
- 100枚
-
- 閲覧数:
- 67
-
- ソーシャルブックマークへ投稿:
- Yahoo!ブックマークへ投稿
- はてなブックマークへ投稿
- (ソーシャルブックマークとは)
ベストアンサーに選ばれた回答
補足に対して
なぜここでニュートン法が出てくるのでしょうか?当方には理解できません。
開示したファンクションは標準正規累積分布関数の確立からXの値を求めるものです。
使用例として
X=normsinv(0.8d+0)
です。
質問を取り消しますと御礼はなしとなるのでは?
標準正規累積分布関数の逆関数の値を求めるファンクションを以前作成したことがありますので開示します。
(使い方はExcelのものと同じです)
お役に立てれば幸いです。
引数は 0<std<1 としてください。
c -----------------------------
real*8 function normsinv(std)
c -----------------------------
implicit real*8(a-h,o-z)
funce(x)=1.0-1.0/(1.0+(((((a6*x+a5)*x+a4)*x+a3)*x+a2)*x+a1)*x)**16
c
a1 =0.0705230784
a2 =0.0422820123
a3 =0.0092705272
a4 =0.0001520143
a5 =0.0002765672
a6 =0.0000430638
eps=1.0e-08
c
u1=-5.0
x1=dabs(u1)/dsqrt(2.0d+00)
e1=funce(x1)
y1=0.5-e1/2.0
u2= 5.0
x2=dabs(u2)/dsqrt(2.0d+00)
e2=funce(x2)
y2=0.5+e1/2.0
c
ic=0
10 ic=ic+1
u=(u1+u2)/2.0
x=dabs(u)/dsqrt(2.0d+00)
e=funce(x)
if( u.ge.0.0 ) then
y=0.5+e/2.0
else
y=0.5-e/2.0
end if
if( dabs(y-std).le.eps .or. ic.ge.100 ) then
normsinv=u
return
end if
if( std.gt.y ) then
u1=u
else
u2=u
end if
go to 10
c
end
- 違反報告
- 編集日時:2012/2/15 08:53:38
- 回答日時:2012/2/14 07:45:34
この質問は投票によってベストアンサーが選ばれました!
- この質問・回答は役に立ちましたか?
- 役に立った!
お役立ち度:
0人が役に立つと評価しています。

