J'ai besoin de générer des matrices non carrées aléatoires avec des lignes et des colonnes , des éléments distribués au hasard avec une moyenne = 0, et contraints de telle sorte que la longueur (norme L2) de chaque ligne soit et que la longueur de chaque colonne soit . De manière équivalente, la somme des valeurs carrées est 1 pour chaque ligne et pour chaque colonne.
Jusqu'à présent, j'ai trouvé un moyen d'y parvenir: il suffit d'initialiser les éléments de la matrice de manière aléatoire (par exemple à partir d'une distribution uniforme, normale ou laplace avec une moyenne nulle et une variance arbitraire), puis de normaliser alternativement les lignes et les colonnes à , se terminant par la normalisation des lignes. Cela semble converger assez rapidement vers le résultat souhaité (par exemple pour et , la variance de la longueur de colonne est généralement ~ après itérations), mais je ne suis pas sûr de pouvoir compter sur ce taux de convergence rapide en général (pour diverses dimensions de matrice et distributions initiales d'éléments).
Ma question est la suivante: existe-t-il un moyen d'obtenir le résultat souhaité ( , ) directement sans itérer entre normalisation de ligne / colonne? Par exemple, quelque chose comme l'algorithme de normalisation d'un vecteur aléatoire (initialiser les éléments au hasard, mesurer la somme des valeurs carrées, puis mettre à l'échelle chaque élément par un scalaire commun). Sinon, existe-t-il une caractérisation simple du taux de convergence (par exemple, nombre d'itérations jusqu'à erreur ) de la méthode itérative décrite ci-dessus?