1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| import numpy as np
def permutation(A,i,k):
A[i], A[k] = A[k], A[i]
return
def transvection(A,i,k,c):
m = len(A[0])
for j in range (0,m):
A[k][j] -= c*A[i][j]
return A
def recherche_pivot(A,i):
n = len(A)
maxi, pivot = abs(A[i][i]), i
for k in range (i+1,n):
elem = abs(A[k][i])
if elem > maxi:
maxi, pivot = elem, k
return (pivot)
from copy import deepcopy
def triangularisée(A):
n, m = len(A), len(A[0])
p = 0
M = deepcopy(A)
if n != m:
Z = np.zeros((n,m))
s = 0
return (Z, s)
for i in range(n-1):
k = recherche_pivot(M, i)
if k != i:
permutation(M,i,k)
p += 1
for k in range(i+1, n):
transvection(M, i, k, M[k][i] / M[i][i])
if type(p / 2) != int:
s = -1
else:
s = 1
return (M, s)
def determinant(A):
Mat = deepcopy(A)
Mat = triangularisée(Mat)
n = len(Mat)
det = 1
for k in range(0,n-1):
u = Mat[k][k]
det *= u
return (det) |
Partager