Bonsoir,
On appelle matrice de Hilbert de taille nxn la matrice et on pose
.
Un exercice demande d'écrire un script Python qui permet d'afficher la matrice et pour
entre 1 et 10, de déterminer si
est inversible, et si c'est le cas de donner
et la somme
et de donner les valeurs propres de
.
Alors j'écris le script suivant :
import numpy as np
import numpy.linalg as alg
def hilbert(n):
H=np.zeros((n,n))
for i in range(1,n+1):
for j in range(1,n+1):
H[i-1, j-1]=1/(i+j-1)
return H
def somme(n):
invH=alg.inv(hilbert(n))
s=0
for i in range(1,n):
for j in range(i+1,n+1):
s+=invH[i-1,j-1]
for n in range(1,11):
if alg.matrix_rank(hilbert(n))==n:
print('Pour n=', n,',la matrice est inversible et le déterminant de son inverse est :', alg.det(alg.inv(hilbert(n))), 'la somme est :', somme(n), 'et les valeurs propres de la matrice sont :', alg.eigvals(hilbert(n)))
Le problème que je rencontre est qu'à chaque fois la somme est None.
Même quand j'essaye la fonction somme toute seule (avec la fonction hilbert bien sûr) je n'obtiens rien.
Je ne sais pas où peut se situer le problème. Je n'ai aucun message d'erreur. Normalement en faisant, pour un tableau H, H[i,j] (avec i entre 0 et n et j de même), il nous donne la valeur qui se trouve à la ième ligne et jème colonne. Et on peut additionner les valeurs normalement...
J'espère que vous pourrez m'aider à déterminer quel peut être le problème qui empêche la fonction somme de donner une valeur réelle.
Merci d'avance,
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :