Реализации алгоритмов/Разложение Холецкого: различия между версиями

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
м Снятие {{К переименованию}} и добавление {{BookCat}}.
Строка 1: Строка 1:
{{wikipedia|Разложение Холецкого}}
{{wikipedia|Разложение Холецкого}}


== C# ==
== Java ==


<source lang="csharp">
<source lang="java">
public static double[][] CholeskyDecomposition(double[][] A)
public static double[][] CholeskyDecomposition(double[][] A)
{
{

Версия от 17:58, 17 ноября 2015

Java

public static double[][] CholeskyDecomposition(double[][] A)
{
    double[][] L = new double[A.Length][];
    for (int i = 0; i < A.Length; i++)
    {
        L[i] = new double[i + 1]; //L - треугольная матрица, поэтому в i-ой строке i+1 элементов

        double temp;
        //Сначала вычисляем значения элементов слева от диагонального элемента,
        //так как эти значения используются при вычислении диагонального элемента.
        for (int j = 0; j < i; j++)
        {
            temp = 0;
            for (int k = 0; k < j; k++)
            {
                temp += L[i][k] * L[j][k];
            }
            L[i][j] = (A[i][j] - temp) / L[j][j];
        }

        //Находим значение диагонального элемента
        temp = A[i][i];
        for (int k = 0; k < i; k++)
        {
            temp -= L[i][k] * L[i][k];
        }
        L[i][i] = Math.Sqrt(temp);
    }

    return L;
}