2017-06-19 11 views
0

私は、hypergeom(a、b、z)を呼び出すことによってMatlabの一般化された超幾何関数を使用しています。Matlabのベクトルで超幾何関数を評価する

この関数は、= 1のために生産し、A = 2、B = 2、Z = 5:

>>hypergeom(1,2,5) 
29.4826318205153 

>>hypergeom(2,2,5) 
148.413159102577 

は今、私は値のベクトルの上に超幾何を評価したいです。だから私はhypergeom(1:2,2,5-)を入力する場合、私は出力を期待する:

[29.4826318205153, 148.413159102577] 

しかし、私はMatlabのでこれを入力したときに私が手:

>>hypergeom(1:2,2,5) 
-0.25 

ので、単一の値であります戻り値:aの入力値のベクトル。 MATLABのhypergeomを正しく呼び出すにはどうすればよいのですか?入力ベクトルの長さと同じ長さの出力ベクトルを得るには?

編集:私はいわゆる密集超幾何関数を評価しています。この具体的な計算(クンマーの微分方程式の解は、以下を参照してくださいhttps://en.wikipedia.org/wiki/Confluent_hypergeometric_function)で 。これは1F1関数です。

標準組み込み関数hypergeomは、hypergeom(1:2,2,5)の計算を許可しない一般化された超幾何関数です。これは、長さ(N)= 1と長さ)私がそれを望む方法で。

Patrick Mousawは、私が使用している超幾何関数のバージョンである合流超幾何関数(https://nl.mathworks.com/matlabcentral/fileexchange/29766-confluent-hypergeometric-function)のMatlabコードをアップロードしました。要素ごとの乗算を可能にする、自分のコードへの少しの適応は、私が望むものを正確に返します。 :)

+1

'hypergeom'は3番目の引数に対してのみベクトル化します。最初の引数のいくつかの値を使用するには、ループを使用する必要があります –

答えて

0

の各要素について1私は、いわゆるコンフルエントな超幾何関数(Kummerの微分方程式に対する解答、https://en.wikipedia.org/wiki/Confluent_hypergeometric_function参照)を評価しています。これは1F1関数です。

標準組み込み関数hypergeomは、hypergeom(1:2,2,5)の計算を許可しない一般化された超幾何関数です。これは、長さ(N)= 1と長さ)私がそれを望む方法で。

Patrick Mousawは、私が使用している超幾何関数のバージョンである合流超幾何関数(https://nl.mathworks.com/matlabcentral/fileexchange/29766-confluent-hypergeometric-function)のMatlabコードをアップロードしました。要素ごとの乗算を可能にする、自分のコードへの少しの適応は、私が望むものを正確に返します。 :)

0

私は一般化された超幾何学的関数に完全に精通していませんが、あなたは関数の引数を他の方法で丸めていると思います(数学的な意味での 'パラメータ' '入力'です。ドキュメントから:

HYPERGEOM(N、D、Z)もバーンズとしても知られている一般超幾何関数F(N、D、Z)、 は超幾何関数を拡張し、 JFK J =長さで表され(N)、k =長さ(D)である。スカラーa、b、およびcの場合、 HYPERGEOM([a、b]、c、z)はガウスの超幾何関数2F1(a、b; c; z)です。ウィキペディアから

、私は式は次を参照してください。

                     

だから、私の知る限りそれを理解するように、この関数は、ベクトル化機能があります配列Zの、パラメータベクトルの場合 。私。長さ(N)= 5および長さ(D)= 2(すなわち、長さ(D)= 2)のような、適切なパラメータベクトルNおよびDに対する一般化超幾何関数を評価する。ベクトル )、あなたはhypergeom(N,D,Z)を呼ぶだろう、とあなたはM要素の出力ベクトルを取得する必要があり、この特定の計算ではZ.