★ 数値計算 ★

7431. 数値計算 叶 2005/08/11 (木) 10:18
└7432. Re: 数値計算 青木繁伸 2005/08/11 (木) 10:59
 └7433. Re^2: 数値計算 叶 2005/08/11 (木) 11:50
  ├7437. Re^3: 数値計算 叶 2005/08/11 (木) 12:34
  └7436. Re^3: 数値計算 青木繁伸 2005/08/11 (木) 12:27
   └7438. Re^4: 数値計算 叶 2005/08/11 (木) 12:46


7431. 数値計算 叶  2005/08/11 (木) 10:18
お世話になっております。
統計のことより,数学に近いかも知りませんが,数値計算のことを聞かせて頂きます。
Rの言語で,超幾何関数(hypergeometric function)を計算できるでしょうか?
教えて頂ければ幸いです。

     [このページのトップへ]


7432. Re: 数値計算 青木繁伸  2005/08/11 (木) 10:59
> Rの言語で,超幾何関数(hypergeometric function)を計算できるでしょうか?

できますよ。
コンソールで,? phyper と入力すると,オンラインヘルプが得られます。


Hypergeometric {stats} R Documentation
The Hypergeometric Distribution

Description

Density, distribution function, quantile function and random generation for the hypergeometric distribution.

Usage

dhyper(x, m, n, k, log = FALSE)
phyper(q, m, n, k, lower.tail = TRUE, log.p = FALSE)
qhyper(p, m, n, k, lower.tail = TRUE, log.p = FALSE)
rhyper(nn, m, n, k)

以下略。。

     [このページのトップへ]


7433. Re^2: 数値計算 叶  2005/08/11 (木) 11:50
先生,ご返事ありがとうございます。
確かに,先生がおしゃった通り,hypergeometric distributionは
Rで計算できますが,今はhypergeometric functionの計算をしたいと思います。具体的に言えば2F1(a,b;c;z)の値を求めたいです。Mathematicaで計算できるそうですが,Rではいかがでしょうか?
よろしくお願い致します。

     [このページのトップへ]


7437. Re^3: 数値計算 叶  2005/08/11 (木) 12:34
http://mathworld.wolfram.com/HypergeometricFunction.html
のところで,超幾何関数2F1(a,b;c;z)の展開式(式(6))と積分の形(式(16))を書いてありますが,もしRでhypergeometric functionの計算パッケージがあれば,便利だと思いますが。
よろしくお願い致します。

     [このページのトップへ]


7436. Re^3: 数値計算 青木繁伸  2005/08/11 (木) 12:27
すみません。よく理解できていなかったようです。

google で
site:r-project.org ”hypergeometric function”
により検索すると,いくつか出てくるようです。

トップに出てきた

R Help 2002: RE: [R] vectorizing a function - [ このページを訳す BETA ]
I have just written a little hypergeometric function, included below > [the
hypergeometric function crops up when solving a common type of > ODE]. > >
It works fine on single values of the primary argument z, but ...
www.r-project.org/nocvs/mail/r-help/2002/8615.html - 9k - キャッシュ - 関連ページ

には,関数定義があるようです。
(二行目は if(length(z) > 1) { だと思いますが)

> hypergeo <- function(A,B,C,z,tol=1e-6){
+ if(length(z) > 1) {
+ return(sapply(z,hypergeo,A=A,B=B,C=C,tol=tol))
+ } else {
+ term <- tmp <- 1
+
+ for(n in 1:100){
+ term <- term*A*B/C
+ term=term*z/n
+
+ partial.sum <- tmp + term
+ if ((abs(partial.sum-tmp)<tol) ||
+ is.infinite(partial.sum)){return(partial.sum)}
+ A <- A+1
+ B <- B+1
+ C <- C+1
+ tmp <- partial.sum
+ }
+ return (NaN)
+ }
+ }

> hypergeo(1,2,3,0.5+0.5i)
[1] 1.141593+0.6137048i

のようになるようですが,これが正しい答えなのかどうかも私にはわかりません。

     [このページのトップへ]


7438. Re^4: 数値計算 叶  2005/08/11 (木) 12:46
助かりました。
どもありがとうございました。
また宜しくお願いします。

     [このページのトップへ]


● 「統計学関連なんでもあり」の過去ログ--- 034 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る