ここから本文です

解決済みの質問

誤差関数(正規分布)について質問します。 x軸のある点で切り取られた面積を求め...

matakichi100gouさん

誤差関数(正規分布)について質問します。
x軸のある点で切り取られた面積を求める方は判ります。(数値計算で)

x=2で切る取られた右側の面積とかはわかります。

逆に与えられた面積(つまり確率)からxを知る解

法をお教え下さい。

以前本で見かけ丸写しでprogramに導入、うまくいったんですがそのご移植、改造をくりかしているうちにそのオリジナルに不安を感ずるようなりました、
その辺のかくにんをしたんですが。出来ればその本が見つかるといいんですが

コンピュタテクノロカテゴリーでかんばしこたえにめぐりあえなかったの流れてきました

fortran、basic、c、c++は判りますその言語で、、、、、

あわれなお年寄り(75歳)お救いくだい。

たしかほんに出てたんが地元図書か全部しらべたんだ、、、、、が、

補足
ニュウートン法で、初期値を与えなかったので無勾配とみなされ失敗しました。
質問を取り消します。ご協力ありがとうございました。
betstAでないと御礼だめなんですか?

違反報告

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

trappedintheskyさん

補足に対して
なぜここでニュートン法が出てくるのでしょうか?当方には理解できません。
開示したファンクションは標準正規累積分布関数の確立から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点(5点満点中)0人が役に立つと評価しています。

知恵ノートとは?

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

話題のキーワード

[カテゴリ:数学]

ただいまの回答者

01時05分現在

3054
人が回答!!

1時間以内に5,639件の回答が寄せられています。

>>回答ひろばに行く


知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する