Advertisement
brospresident

Untitled

Nov 3rd, 2021
886
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.23 KB | None | 0 0
  1. import numpy as np
  2.  
  3. rng = np.random.default_rng(0)
  4. # ----------------- Input  -----------------------------------
  5. #   !!!! Aceasta sectiune nu se modifica !!!!
  6. n = 5;
  7. A = np.diagflat(rng.integers(1,10, size=(n,1)), k=0)
  8. A[:, n-1] = rng.integers(1,20, size=(1,n))
  9. A[:, 0] = rng.integers(1,20, size=(1,n))
  10. for i  in range (0,n-1):
  11.     A[i+1,i] = rng.integers(1,10, size=(1,1))
  12.  
  13. b = rng.integers(1,10, size=(n,1)).astype(float)
  14. #-----------------------------------------------------
  15. L = np.zeros((n,n))
  16. U = np.zeros((n,n))
  17. def crout(A,L,U,n):
  18.     for i in range(n):
  19.         U[i,i]=1
  20.         for j in range(i+1):
  21.             sum0 = sum(L[i][k]*U[k][j] for k in range(j))
  22.             L[i][j] = A[i][j]-sum0
  23.         for j in range(i,n):
  24.             sum0 = sum(L[i][k]*U[k][j] for k in range(i))
  25.             U[i][j]=(A[i][j]-sum0)/L[i][i]
  26. def bksub(b,L,U,n):
  27.     x = b
  28.     y = b
  29.     for r in range(0,n):
  30.         sum0 = sum(L[r][c]*y[c] for c in range(0,r))
  31.         y[r] = (b[r] - sum0)/L[r][r]
  32.        
  33.     x[n-1] = y[n-1]/U[n-1][n-1]
  34.     for r in range(n-2,-1,-1):
  35.         sum0 = sum(x[c]*U[r][c] for c in range(n-1,r,-1))
  36.         x[r] = (y[r]-sum0)/U[r][r]
  37.     print("x = ",x)
  38. crout(A,L,U,n)
  39. print(L)
  40. print(U)
  41. bksub(b,L,U,n)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement