Professional Documents
Culture Documents
def TriangSup(A,b) :
n=len(b)
x = np.zeros(n)
for i in range(n-2,-1,-1):
som = b[i]
for j in range(i+1,n):
return x
def TriangInf(A,b):
n = len(A)
x = np.zeros(n)
for i in range(1,n):
som = b[i]
for j in range(0,i):
return x
#EXERCICE03
#1-
def DecomposeLU(A):
n = len(A)
U = np.zeros((n,n))
L = np.zeros((n,n))
for k in range(0,n):
pivot = A[k][k]
if pivot != 0 :
L[k][k] = 1
for i in range(k+1,n):
L[i][k] = A[i][k]/pivot
for j in range(k,n):
else :
print('ereur')
return L,A
#2-
A = np.array([[1,2,3],[4,5,6],[7,8,10]])
L,U = DecomposeLU(A)
print('L = ')
print(L)
print('U = ')
print(U)
#3-
def SolveDecomposeLU(A,b):
n = len(A)
y = np.zeros(n)
L,U = DecomposeLU(A)
y = TriangInf(L,b)
x = TriangSup(U,y)
return x
#4-
A = np.array([[1,3,1],[-1,1,1],[2,2,4]])
b = np.array([1,5,6])
SolveDecomposeLU(A,b)
ex 3
def SolveDecomposeQR(A,b):
Q,R = DecomposeQR(A)
x = TriangSup(R, np.dot(Q.T,b))
return x
#EXERCICE 03
#1
def vecteur_e1(n):
return np.eye(n)[:,0]
def Householder(v):
n = len(v)
v_norm = np.linalg.norm(v)
u = v - v_norm * vecteur_e1(n)
u_norm = np.linalg.norm(u)
v_unit = u / u_norm
H = np.eye(n) - 2 *(np.outer(v_unit,v_unit))
return H
v = np.array([12,6,-4])
H = Householder(v)
print('H=',H)
v = np.array([0,2])
H = Householder(v)
print('H=',H)
def DecomposeQR(A):
n = A.shape[0]
Q = np.eye(n)
R = A.copy()
for k in range(n-1):
v = R[k: ,k]
H_k = Householder(v)
Q_k = np.eye(n)
Q = np.dot(Q, Q_k.T)
R = np.dot(Q_k, R)
return Q, R
A = np.array([[12,-53,4],[6,167,-68],[-4,24,-41]])
Q,R = DecomposeQR(A)
print('R = ',R)
def SolveDecomposeQR(A,b):
Q,R = DecomposeQR(A)
x = TriangSup(R, np.dot(Q.T,b))
return x
A = np.array([[1,-1,2],[-1,1,0],[0,-2,1]])
b = np.array([1,2,-2])
x= SolveDecomposeQR(A,b)
print(x)