Bonjour,
Pour mon plaisir personnel, j'aimerais bien transposer ce script Scilab dans mon langage préféré (C/C++).
function A=randsym(k)
A=2*rand(k,k)-ones(k,k)
B=2*rand(k,k)-ones(k,k)
A=A+imult(B)
A=A+A'
A=A*A'
R=max(abs(spec(A)))
A=rand()*(A/R)
endfunction
Voila mon algorithme, il y a des chose que je ne comprends pas ou dont je ne suis pas sûr.

Fonction A renvoyant une valeur théoriquement comprise entre 0 et 1.
Création d'une matrice carrée A de dimension k dont les termes appartiennent à l'intervalle [-1 ; 1]
Idem pour B.
La matrice A est une matrice à termes complexes
Les deux lignes suivantes ne sont pas claires pour moi. Supposition : A est la somme de A et de sa transposée, puis A est le produit de A et de sa transposée.
Calcul de R :
Je suppose que spec(A) donne le rayon spectral de A j'ai trouvé la formule (pour n=2) r.s;=lim(norme(A)^1/2,
c'est le max de la valeur absolue du rayon spectral de A. ?? Tout ça n'est pas clair pour moi.

Pour être tout à fait franc, je ne comprends pas tout, mais j'aimerais bien le coder pour comprendre pourquoi Scilab donne quelques résultats aberrants sur un grand nombre d'essais. Problème de précision ou des choses du genre "matrice non diagonalisable" ?
Je me demande si le passage en complexe n'est pas là justement pour que ce soit toujours diagonalisable, auquel cas, il ne faut pas s'étonner qu'il y ait des cas "non réels".

Merci de votre compréhension et de votre patience.