Devo generare matrici casuali non quadrate con righe e colonne C , elementi distribuiti casualmente con media = 0 e vincolati in modo tale che la lunghezza (norma L2) di ogni riga sia 1 e la lunghezza di ogni colonna sia √ . Equivalentemente, la somma dei valori quadrati è 1 per ogni riga eR per ogni colonna.
Finora ho trovato un modo per raggiungere questo obiettivo: inizializzare semplicemente gli elementi della matrice in modo casuale (ad es. Da una distribuzione uniforme, normale o laplace con media zero e varianza arbitraria), quindi alternare in modo normale righe e colonne a , che termina con la normalizzazione delle righe. Questo sembra convergere al risultato desiderato abbastanza rapidamente (ad esempio per R = 40 e C = 80 , la varianza della lunghezza della colonna è in genere ~ 0,00001 dopo 2 iterazioni), ma non sono sicuro di poter dipendere da questo rapido tasso di convergenza in generale (per varie dimensioni di matrice e distribuzioni iniziali di elementi).
Mia domanda è: esiste un modo per ottenere il risultato desiderato ( , c o l u m n l e n g t h s = √ ) direttamente senza iterare tra la normalizzazione di riga / colonna? Ad esempio qualcosa come l'algoritmo per normalizzare un vettore casuale (inizializzare gli elementi in modo casuale, misurare la somma dei valori quadrati, quindi ridimensionare ogni elemento con un comune scalare). In caso contrario, esiste una semplice caratterizzazione del tasso di convergenza (ad es. Num iterazioni fino all'errore<ϵ) del metodo iterativo sopra descritto?