J'ai utilisé svd d'une matrice A de taille 64*64 en Python comme suit.

U,D,V=svd(A)

Maintenant, D est un tableau de toutes les valeurs propres de A. Comment réécrire toutes les valeurs de D sous forme de matrice diagonale ? Par exemple, si D=[d1,d2,d3,d4], comment avoir

D_new=[[d1,0,0,0],[0,d2,0,0],[0,0,0,d3],[0,0,0,d4]]?
0
quas Aliki 22 sept. 2021 à 00:29

2 réponses

Meilleure réponse

Utiliser numpy :

import numpy as np 
d = [d1,d2,d3]
diagonal = np.diag(d)
2
Ayyoub ESSADEQ 21 sept. 2021 à 21:36

Créez un vecteur vide de zéro en fonction de la longueur de vos valeurs propres, puis attribuez la position au fur et à mesure que vous itérez sur la liste, en ajoutant pour créer une matrice diagonale

d=['d1','d2','d3','d4']
dnew=[]

for i,x in enumerate(d):
    vec=[0 for x in d]
    vec[i]=d[i]
    dnew.append(vec)

for x in dnew:
    print(x)  


['d1', 0, 0, 0]
[0, 'd2', 0, 0]
[0, 0, 'd3', 0]
[0, 0, 0, 'd4']
1
barker 21 sept. 2021 à 21:36