Accord.Math.Decompositions.CholeskyDecomposition.LDLt C# (CSharp) Méthode

LDLt() private méthode

private LDLt ( double value ) : void
value double
Résultat void
        private void LDLt(double[,] value)
        {
            n = value.GetLength(0);
            L = new double[n,n];
            D = new double[n];
            robust = true;

            double[,] a = value;

            var v = new double[n];
            positiveDefinite = true;
            symmetric = true;

            double d = D[0] = v[0] = a[0, 0];
            for (int j = 1; j < n; j++)
                L[j, 0] = a[j, 0]/d;

            for (int j = 1; j < n; j++)
            {
                d = 0.0;
                for (int k = 0; k < j; k++)
                {
                    v[k] = L[j, k]*D[k];
                    d += L[j, k]*v[k];
                }

                d = D[j] = v[j] = a[j, j] - d;

                positiveDefinite = positiveDefinite & (d > 0.0);

                for (int k = j + 1; k < n; k++)
                {
                    double s = 0.0;
                    for (int i = 0; i < j; i++)
                        s += L[k, i]*v[i];

                    L[k, j] = (a[k, j] - s)/d;

                    symmetric = symmetric & (a[k, j] == a[j, k]);
                }
            }

            for (int i = 0; i < n; i++)
                L[i, i] += 1.0;
        }