sindibadthesailor

Chloesky decomposition (factorisation de Cholesky)

Apr 15th, 2023
722
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.20 KB | None | 0 0
  1. # Python3 program to decompose
  2. # a matrix using Cholesky
  3. # Decomposition
  4. import math
  5. MAX = 100;
  6.  
  7. def Cholesky_Decomposition(matrix, n):
  8.  
  9.     lower = [[0 for x in range(n + 1)]
  10.                 for y in range(n + 1)];
  11.  
  12.     # Decomposing a matrix
  13.     # into Lower Triangular
  14.     for i in range(n):
  15.         for j in range(i + 1):
  16.             sum1 = 0;
  17.  
  18.             # summation for diagonals
  19.             if (j == i):
  20.                 for k in range(j):
  21.                     sum1 += pow(lower[j][k], 2);
  22.                 lower[j][j] = int(math.sqrt(matrix[j][j] - sum1));
  23.             else:
  24.                
  25.                 # Evaluating L(i, j)
  26.                 # using L(j, j)
  27.                 for k in range(j):
  28.                     sum1 += (lower[i][k] *lower[j][k]);
  29.                 if(lower[j][j] > 0):
  30.                     lower[i][j] = int((matrix[i][j] - sum1) /
  31.                                             lower[j][j]);
  32.  
  33.     # Displaying Lower Triangular
  34.     # and its Transpose
  35.     print("Lower Triangular\t\tTranspose");
  36.     for i in range(n):
  37.        
  38.         # Lower Triangular
  39.         for j in range(n):
  40.             print(lower[i][j], end = "\t");
  41.         print("", end = "\t");
  42.        
  43.         # Transpose of
  44.         # Lower Triangular
  45.         for j in range(n):
  46.             print(lower[j][i], end = "\t");
  47.         print("");
  48.  
  49. # Driver Code
  50. n = 3;
  51. matrix = [[4, 12, -16],
  52.         [12, 37, -43],
  53.         [-16, -43, 98]];
  54. Cholesky_Decomposition(matrix, n);
  55.  
  56. # This code is contributed by mits
  57.  
Advertisement
Add Comment
Please, Sign In to add comment