Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- rng = np.random.default_rng(0)
- # ----------------- Input -----------------------------------
- # !!!! Aceasta sectiune nu se modifica !!!!
- n = 5;
- A = np.diagflat(rng.integers(1,10, size=(n,1)), k=0)
- A[:, n-1] = rng.integers(1,20, size=(1,n))
- A[:, 0] = rng.integers(1,20, size=(1,n))
- for i in range (0,n-1):
- A[i+1,i] = rng.integers(1,10, size=(1,1))
- b = rng.integers(1,10, size=(n,1)).astype(float)
- #-----------------------------------------------------
- L = np.zeros((n,n))
- U = np.zeros((n,n))
- def crout(A,L,U,n):
- for i in range(n):
- U[i,i]=1
- for j in range(i+1):
- sum0 = sum(L[i][k]*U[k][j] for k in range(j))
- L[i][j] = A[i][j]-sum0
- for j in range(i,n):
- sum0 = sum(L[i][k]*U[k][j] for k in range(i))
- U[i][j]=(A[i][j]-sum0)/L[i][i]
- def bksub(b,L,U,n):
- x = b
- y = b
- for r in range(0,n):
- sum0 = sum(L[r][c]*y[c] for c in range(0,r))
- y[r] = (b[r] - sum0)/L[r][r]
- x[n-1] = y[n-1]/U[n-1][n-1]
- for r in range(n-2,-1,-1):
- sum0 = sum(x[c]*U[r][c] for c in range(n-1,r,-1))
- x[r] = (y[r]-sum0)/U[r][r]
- print("x = ",x)
- crout(A,L,U,n)
- print(L)
- print(U)
- bksub(b,L,U,n)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement