2016-06-12 13 views
0

Math.Net Numericsでいくつかの並列統計テストを実行しながらException error驚くべきことに)が発生しました。その根拠を知りたいと思います。MATH.NET Numerics Stableディストリビューション。 'System.NotSupportedException'タイプの例外

using MathNet.Numerics.Distributions; 
.... 
var stable = new Stable(1.7, -0.7, 0.0087, 0.9103); 
     double b = stable.Density(3.2); 
     double a = stable.Density(5.1); 
     Console.WriteLine(b); 
     Console.WriteLine(a); 

エラー:タイプSystem.NotSupportedExceptionの未処理の例外は、私がb = 2.2484e-06a = 4.3977e-07を得るために期待していたMathNet.Numerics.dll

で発生しました。

Psが:他の古典のディストリビューションなど(例えば Probability Distributions)問題なしGamma仕事、としては排除し、事実上のパッケージ

ベスト、

EDITを持つ任意のインストール問題:からGithub repository私はすべてのプロパティとメソッドを含むStable.csをプロジェクトに追加しました。

事実、プロパティは正常に動作しています。 Program.csのからイラストの下を参照してください:

Stable st = new Stable(1.7, -0.7, 0.0087, 0.9103); // correct instantiation 

    Console.WriteLine(string.Format(" Characteristic exponent: {0}\n 
    Skewness: {1}\n Scale: {2}\n Location: {3}" ,st.Alpha, st.Beta, 
    st.Scale,st.Location)); 

しかし非論理的なものは何もobjectに基づいてDensity方法呼び出しで、私に関する限り、ありません:st.Density(3.2)返すことになっている:

PDF(_alpha, _beta, _scale, _location, x); 

したがって、人々が有効なイラストでこの意見を反対しない限り、method definitionの問題を締結するのは魅力的です。 stable parameters(例えば_alpha = 2.0、等)の特別な値にさらに

、 定義PDF答えはMath.NET GitHub repositoryに座っ0(奇妙)

答えて

0

を返しています。

例はDensityの数式条件を満たしていません。

public double Density(double x) 
{ 
    return PDF(_alpha, _beta, _scale, _location, x); 
} 

/// <summary> 
/// Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x. 
/// </summary> 
/// <param name="alpha">The stability (α) of the distribution. Range: 2 ≥ α > 0.</param> 
/// <param name="beta">The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.</param> 
/// <param name="scale">The scale (c) of the distribution. Range: c > 0.</param> 
/// <param name="location">The location (μ) of the distribution.</param> 
/// <param name="x">The location at which to compute the density.</param> 
/// <returns>the density at <paramref name="x"/>.</returns> 
/// <seealso cref="Density"/> 
public static double PDF(double alpha, double beta, double scale, double location, double x) 
{ 
    if (alpha <= 0.0 || alpha > 2.0 || beta < -1.0 || beta > 1.0 || scale <= 0.0) 
    { 
     throw new ArgumentException(Resources.InvalidDistributionParameters); 
    } 

    if (alpha == 2d) 
    { 
     return Normal.PDF(location, Constants.Sqrt2*scale, x); 
    } 

    if (alpha == 1d && beta == 0d) 
    { 
     return Cauchy.PDF(location, scale, x); 
    } 

    if (alpha == 0.5d && beta == 1d && x >= location) 
    { 
     return (Math.Sqrt(scale/Constants.Pi2)*Math.Exp(-scale/(2*(x - location))))/Math.Pow(x - location, 1.5); 
    } 

    throw new NotSupportedException(); 
} 
+0

編集済みスレッド「@ rexilion」をご覧ください。 –

関連する問題