publicstaticdouble[][]CholeskyDecomposition(double[][]A){double[][]L=newdouble[A.Length][];for(inti=0;i<A.Length;i++){L[i]=newdouble[i+1];//L - треугольная матрица, поэтому в i-ой строке i+1 элементовdoubletemp;//Сначала вычисляем значения элементов слева от диагонального элемента,//так как эти значения используются при вычислении диагонального элемента.for(intj=0;j<i;j++){temp=0;for(intk=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(intk=0;k<i;k++){temp-=L[i][k]*L[i][k];}L[i][i]=Math.Sqrt(temp);}returnL;}