Feat: Add tp5

This commit is contained in:
Namu
2025-10-15 15:32:14 +02:00
commit bdeaa7e415
7 changed files with 305 additions and 0 deletions

54
ex2.py Normal file
View File

@@ -0,0 +1,54 @@
"""
Ici, on implémente gauss
"""
import numpy as np
from ex1 import resolve_up
def gauss(A: np.array, b: np.array) -> (np.array, np.array):
n = len(A)
for k in range(n): # k = pivot
for i in range(k+1, n): # i = ligne en dessous du pivot
g = A[i, k] / A[k, k] # multiplication pour éliminer A[i, k]
A[i, k:] -= g * A[k, k:] # row operation on A
b[i] -= g * b[k] # same row operation on b
return A, b # matrice triangularisé et le b modifié
def cholesky(A: np.array) -> np.array:
L = np.zeros(A)
L = np.sqrt(A[0, 0])
m = len(A)
# first column
for i in range(1, m):
L[i, 0] = A[i, 0] / L[0, 0]
# généralisation k = 2, ..., m
for k in range(1, m):
# diagonale
L[k, k] = np.sqrt(A[k, k] - np.sum(L[k, :k]**2))
for i in range(k+1, m):
for j in range(k-1):
L[i,k] = (A[i,k] - np.sum(L[i, j] * L[k, j])) / L[k, k]
return L
if __name__ == '__main__':
A = np.array([
[1, 1, 1, 1],
[1, 5, 5, 5],
[1, 5, 14, 14],
[1, 5, 14, 15]
], dtype=np.float64)
b = np.array([1, 0, 0, 0], dtype=np.float64)
A_triangle, b_gauss = gauss(A, b)
print(f"A triangulsarisée:\n {A_triangle}")
x = resolve_up(A, b_gauss)
print(f"x={x}")
L = cholesky(A)
print(f"L\n {L}")