| |
|
|
p.specht
| chez manchen Aufgabenstellungen, qui mittels Matrizenrechnung gelöst volonté devoir, ist cela Produkt R = X' X einer Matrix gefragt. avec X' wird bekanntlich qui Transponierte (= qui à Hauptdiagonale à gauche-dessus à droite-unten gewendete Matrix) bezeichnet. chez Eigenmultiplikationen peux on sich cet Transposition sowie qui Berechnung aller unteren Diagonalelemente qui Ergebnismatrix R mais sparen, là chez cette Operationen toujours une quadratische, diagonalsymmetrische Matrix herauskommt. cela folgende Programmstück erspart alors une la quantité Doppel-gemoppel et, avant allem chez größeren Matrizen, viel Rechenzeit.
Hinweis: sur carrée-symmetrische Matrizen laisser sich aussi autre Operationen besonders effizient anwenden, etwa qui Spiegelungsoperationen des Algorithmus de Alston Scott Householder, cela Jacobiverfahren, qui Givens-Rotation ou bien qui schrittweise Eigenwert-Faktorenermittlung pour Von_Mises.
Titre de la fenêtre "Beschleunigte Eigenmultiplikation R=X'X einer Matrix X"
Windowstyle 24:Fenêtre 0,0-%maxx,%maxy
set("decimals",17):set("numwidth",26)
var n&=4:var m&=3
declare x![n&-1,m&-1],k&,x#
dim x#,8*m&*n&:k&=x#:x#=addr(x![0,0]):float x#,0=\
1,2,1, 2,3,3, 3,2,1, 2,1,1
' 1.1 , 2.2 , 3.33/10^2 ,\
' 4 , 5 , 6.6 ,\
' 7.7E2, 8.88, 9.9999 ,\
'10.0 ,11.11,12.3456
x#=k&:dispose x#
declare i&,j&,s!,R![m&-1,m&-1]
whileloop 0,m&-1:k&=&Boucle:s!=0
Whileloop 0,n&-1
s!=s!+SQR(x![&Boucle,k&])
endwhile
R![k&,k&]=s!
endwhile
Whileloop 0,m&-1:k&=&Boucle
Whileloop k&+1,m&-1:j&=&Boucle:s!=0
whileloop 0,n&-1:i&=&Boucle
s!=s!+x![i&,j&]*x![i&,k&]
endwhile
R![j&,k&]=s!
R![k&,j&]=s!
endwhile
endwhile
'Show
whileloop 0,m&-1:i&=&Boucle
whileloop 0,m&-1:k&=&Boucle
imprimer tab(k&*28);R![i&,k&],
endwhile:imprimer
endwhile
waitinput
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 19.05.2021 ▲ |
|
|
|