Bonjour à tous,
Me voilà coincé avec un exercice d'informatique que nous as donné notre prof de maths (je suis en première année de sup et donc encore un débutant de python).
Voici mon problème (et mon programme)(les indentations sont correctement mise dans le porgamme):


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
En essayant avec une matrice :

A=array([[ 1., 4., 7.],
[ 0., 5., 8.],
[ 0., 0., 5.]])
determinant(A)

J'obtiens : array([ 1., 4., 7.])

Où se situe mon problème d'indexation?

Merci par avance !!!