|
Heidelberg Educational Numerics Library Version 0.27 (from 15 March 2021)
|
This file implements QR decomposition using Gram-Schmidt method. More...
#include <cmath>#include <utility>#include "densematrix.hh"#include "vector.hh"Go to the source code of this file.
Functions | |
| template<class T > | |
| DenseMatrix< T > | hdnum::gram_schmidt (const DenseMatrix< T > &A) |
| computes orthonormal basis of Im(A) using classical Gram-Schmidt | |
| template<class T > | |
| DenseMatrix< T > | hdnum::modified_gram_schmidt (const DenseMatrix< T > &A) |
| computes orthonormal basis of Im(A) using modified Gram-Schmidt | |
| template<class T > | |
| DenseMatrix< T > | hdnum::qr_gram_schmidt_simple (DenseMatrix< T > &Q) |
| computes qr decomposition using modified Gram-Schmidt - works only with small (m>n) and square matrices | |
| template<class T > | |
| DenseMatrix< T > | hdnum::qr_gram_schmidt (DenseMatrix< T > &Q) |
| computes qr decomposition using modified Gram-Schmidt - works only with small (m>n) and square matrices | |
| template<class T > | |
| DenseMatrix< T > | hdnum::qr_gram_schmidt_pivoting (DenseMatrix< T > &Q, Vector< int > &p, int &rank, T threshold=0.00000000001) |
| computes qr decomposition using modified Gram-Schmidt and pivoting - works with all types of matrices | |
| template<typename T > | |
| void | hdnum::permute_forward (DenseMatrix< T > &A, Vector< int > &p) |
| applies a permutation vector to a matrix | |
This file implements QR decomposition using Gram-Schmidt method.
| DenseMatrix< T > hdnum::gram_schmidt | ( | const DenseMatrix< T > & | A | ) |
computes orthonormal basis of Im(A) using classical Gram-Schmidt
| hdnum::DenseMatrix<T> | A |
Example:
Output:
A =
0 1
0 2.000e+00 9.000e+00
1 1.000e+00 -5.000e+00
Q =
0 1
0 8.944e-01 4.472e-01
1 4.472e-01 -8.944e-01
| DenseMatrix< T > hdnum::modified_gram_schmidt | ( | const DenseMatrix< T > & | A | ) |
computes orthonormal basis of Im(A) using modified Gram-Schmidt
| hdnum::DenseMatrix<T> | A |
Example:
Output:
A =
0 1
0 2.000e+00 9.000e+00
1 1.000e+00 -5.000e+00
Q =
0 1
0 8.944e-01 4.472e-01
1 4.472e-01 -8.944e-01
| void hdnum::permute_forward | ( | DenseMatrix< T > & | A, |
| Vector< int > & | p ) |
applies a permutation vector to a matrix
| hdnum::DenseMatrix<T> | A |
| hdnum::Vector<int> | p |
Example:
Output:
A =
0 1
0 9.000e+00 2.000e+00
1 -5.000e+00 1.000e+00
p =
[ 0] 0
[ 1] 1
| DenseMatrix< T > hdnum::qr_gram_schmidt | ( | DenseMatrix< T > & | Q | ) |
computes qr decomposition using modified Gram-Schmidt - works only with small (m>n) and square matrices
| hdnum::DenseMatrix<T> | Q |
Example:
Output:
A =
0 1
0 2.000e+00 9.000e+00
1 1.000e+00 -5.000e+00
Q =
0 1
0 8.944e-01 4.472e-01
1 4.472e-01 -8.944e-01
R =
0 1
0 2.236e+00 5.814e+00
1 0.000e+00 8.497e+00
QR =
0 1
0 2.000e+00 9.000e+00
1 1.000e+00 -5.000e+00
| DenseMatrix< T > hdnum::qr_gram_schmidt_pivoting | ( | DenseMatrix< T > & | Q, |
| Vector< int > & | p, | ||
| int & | rank, | ||
| T | threshold = 0.00000000001 ) |
computes qr decomposition using modified Gram-Schmidt and pivoting - works with all types of matrices
| hdnum::DenseMatrix<T> | Q |
| T | threshold (optional) |
| hdnum::Vector<int> | p |
| int | rank |
Example:
Output:
A =
0 1 2
0 5.000e+00 2.000e+00 3.000e+00
1 1.100e+01 9.000e+00 2.000e+00
Q =
0 1
0 4.138e-01 -9.104e-01
1 9.104e-01 4.138e-01
R =
0 1 2
0 1.208e+01 9.021e+00 3.062e+00
1 0.000e+00 1.903e+00 -1.903e+00
QR =
0 1 2
0 5.000e+00 2.000e+00 3.000e+00
1 1.100e+01 9.000e+00 2.000e+00
| DenseMatrix< T > hdnum::qr_gram_schmidt_simple | ( | DenseMatrix< T > & | Q | ) |
computes qr decomposition using modified Gram-Schmidt - works only with small (m>n) and square matrices
| hdnum::DenseMatrix<T> | Q |
Example:
Output:
A =
0 1
0 2.000e+00 9.000e+00
1 1.000e+00 -5.000e+00
Q =
0 1
0 8.944e-01 4.472e-01
1 4.472e-01 -8.944e-01
R =
0 1
0 2.236e+00 5.814e+00
1 0.000e+00 8.497e+00
QR =
0 1
0 2.000e+00 9.000e+00
1 1.000e+00 -5.000e+00