Python >> Tutoriel Python >  >> Python

Python Créer une matrice orthogonale aléatoire :un guide pour débutants - Tutoriel Python

La matrice orthogonale est une matrice importante en algèbre linéaire, elle est également largement utilisée en apprentissage automatique. Dans ce tutoriel, nous expliquerons ce que c'est et comment créer une matrice orthogonale aléatoire avec pyhton.

Qu'est-ce qu'une matrice orthogonale ?

Si une matrice A est une matrice orthogonale, elle doit être n*n.

La caractéristique d'une matrice orthogonale A.

La longueur euclidienne de A.

Comment créer une matrice orthogonale aléatoire ?

La matrice orthogonale la plus simple est l'encodage à chaud, comme :

[[1, 0, 0]
[0, 1, 0]
[0, 0, 1]]

Cependant, la valeur qu'il contient n'est pas aléatoire. Comment créer une matrice orthogonale aléatoire ?

Voici un exemple simple, nous allons utiliser python scipy pour l'implémenter.

from scipy.stats import ortho_group # Requires version 0.18 of scipy
import numpy as np

m = ortho_group.rvs(dim=5)
print(m)

Ici nous allons créer une matrice orthogonale aléatoire 5*5, c'est :

[[-0.04861857 -0.44507735 -0.38079495  0.31292116 -0.74606833]
 [-0.20933804  0.4058631   0.35547015 -0.52018465 -0.62809365]
 [ 0.53353666  0.63968878 -0.53749448  0.05881791 -0.11737561]
 [ 0.45728819  0.08815114  0.66040851  0.55928113 -0.18488401]
 [ 0.67826246 -0.46926426  0.05997047 -0.56145645 -0.03035287]]

Nous vérifions qu'il s'agit ou non d'une matrice orthogonale.

l1 = np.matmul(m, m.T)
print(l1)
l2 = np.matmul(m.T, m)
print(l2)

Le résultat est :

[[ 1.00000000e+00  7.84994566e-17  1.65829696e-16 -1.31158853e-16  -9.57636165e-18]
 [ 7.84994566e-17  1.00000000e+00 -1.98313914e-16  1.25646971e-16  5.00488907e-17]
 [ 1.65829696e-16 -1.98313914e-16  1.00000000e+00 -9.72148193e-17  -2.25065344e-17]
 [-1.31158853e-16  1.25646971e-16 -9.72148193e-17  1.00000000e+00  9.59854042e-17]
 [-9.57636165e-18  5.00488907e-17 -2.25065344e-17  9.59854042e-17  1.00000000e+00]]
[[ 1.00000000e+00  8.75665129e-17 -1.39245100e-16  1.47515708e-16  6.06719417e-17]
 [ 8.75665129e-17  1.00000000e+00 -4.07319982e-17  1.76818401e-17  -5.21988496e-17]
 [-1.39245100e-16 -4.07319982e-17  1.00000000e+00 -1.89462221e-16  2.42141102e-17]
 [ 1.47515708e-16  1.76818401e-17 -1.89462221e-16  1.00000000e+00  1.42728087e-16]
 [ 6.06719417e-17 -5.21988496e-17  2.42141102e-17  1.42728087e-16  1.00000000e+00]]

D'après le résultat, nous trouverons que la matrice m est une matrice orthogonale aléatoire.