householderSimilarityTransformationPerform the similarity transformation S*A*S of matrix A with symmetric householder matrix S = I - 2u*u' |
This information is part of the Modelica Standard Library maintained by the Modelica Association.
As = Matrices.householderSimilarityTransformation(A,u);
This function computes the Householder similarity transformation
As = S*A*Swith
S = I -2*u*u'/(u'*u).
This transformation is widely used for transforming non-symmetric matrices to a Hessenberg form.
// First step of Hessenberg decomposition import Modelica.Math.Vectors.Utilities; Real A[4,4] = [1,2,3,4; 3,4,5,6; 9,8,7,6; 1,2,0,0]; Real Ar[4,4]; Real u[4]={0,0,0,0}; u[2:4]=Utilities.householderVector(A[2:4,1],{1,0,0}); // u= = {0, 0.8107, 0.5819, 0.0647} Ar=householderSimilarityTransformation(A,u); // Ar = [1.0, -3.8787, -1.2193, 3.531; -9.5394, 11.3407, 6.4336, -5.9243; 0.0, 3.1307, 0.7525, -3.3670; 0.0, 0.8021, -1.1656, -1.0932]
Matrices.Utilities.householderReflection,
Vectors.Utilities.householderReflection,
Vectors.Utilities.householderVector
A |
Type: Real[:,size(A, 1)] Description: Square matrix A |
---|---|
u |
Type: Real[size(A, 1)] Description: Householder vector |
SAS |
Type: Real[size(A, 1),size(A, 1)] Description: Transformation of matrix A |
---|