You are on page 1of 5

import numpy as np

from math import*

def TriangSup(A,b) :

n=len(b)

x = np.zeros(n)

x[n-1] = (b[n-1]) / (A[n-1][n-1])

for i in range(n-2,-1,-1):

som = b[i]

for j in range(i+1,n):

som = som - A[i][j]*x[j]

x[i] = (som) / (A[i][i])

return x

def TriangInf(A,b):

n = len(A)

x = np.zeros(n)

x[0] = b[0] / A[0][0]

for i in range(1,n):

som = b[i]

for j in range(0,i):

som = som - A[i][j]*x[j]

x[i] = (som) / (A[i][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):

A[i][j] = A[i][j] - L[i][k]*A[k][j]

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_k[k:, k:] = H_k

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('Q = ',Q ,'\n')

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)

You might also like