内容列表
1. 矩阵分解
- SVD分解
- QR分解
- LU,LDU分解
- Cholesky 分解
_(LDLT 和LL分解合起来称为乔里斯基分解Cholesky decomposition)_ - 奇异值分解
- 特征分解
- 极分解
正交矩阵
- 正交矩阵:是一个方块矩阵 Q,其元素为实数,而且行向量与列向量皆为正交的单位向量,使得该矩阵的转置矩阵为其逆矩阵:
Q T = Q − 1 ⇔ Q T Q = Q Q T = I . Q^{T}=Q^{-1}\Leftrightarrow Q^{T}Q=QQ^{T}=I.\,\! </span><span class="katex-html"><span class="base"><span class="strut" style="height: 1.03577em; vertical-align: -0.19444em;"></span><span class="mord"><span class="mord mathdefault">Q</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.841331em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.13889em;">T</span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span></span><span class="base"><span class="strut" style="height: 1.00855em; vertical-align: -0.19444em;"></span><span class="mord"><span class="mord mathdefault">Q</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.814108em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mtight">1</span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">⇔</span><span class="mspace" style="margin-right: 0.277778em;"></span></span><span class="base"><span class="strut" style="height: 1.03577em; vertical-align: -0.19444em;"></span><span class="mord"><span class="mord mathdefault">Q</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.841331em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.13889em;">T</span></span></span></span></span></span></span></span></span><span class="mord mathdefault">Q</span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span></span><span class="base"><span class="strut" style="height: 1.03577em; vertical-align: -0.19444em;"></span><span class="mord mathdefault">Q</span><span class="mord"><span class="mord mathdefault">Q</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.841331em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.13889em;">T</span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span></span><span class="base"><span class="strut" style="height: 0.68333em; vertical-align: 0em;"></span><span class="mord mathdefault" style="margin-right: 0.07847em;">I</span><span class="mord">.</span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="mspace" style="margin-right: -0.166667em;"></span></span></span></span></span></li><li>行列式值为+1的正交矩阵,称为特殊正交矩阵,它是一个旋转矩阵。</li><li>所有特殊正交矩阵形成一个子群 {\displaystyle SO(n)} SO(n),称为特殊正交群。亦即,旋转矩阵与旋转矩阵的乘积也是一个旋转矩阵。</li></ul>
2. QR分解
-
QR分解把矩阵分解成一个正交矩阵与一个上三角矩阵的积。QR分解经常用来解线性最小二乘法问题。
-
QR分解也是特定特征值算法即QR算法的基础。
-
实数矩阵A的QR分解是把A分解为
A = Q R , {\displaystyle A=QR,\,} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.87777em; vertical-align: -0.19444em;"></span><span class="mord"><span class="mord mathdefault">A</span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mord mathdefault">Q</span><span class="mord mathdefault" style="margin-right: 0.00773em;">R</span><span class="mpunct">,</span><span class="mspace" style="margin-right: 0.166667em;"></span></span></span></span></span></span><br> 这里的Q是<strong>正交矩阵</strong>(意味着QTQ = I)而R是<strong>上三角矩阵</strong>。类似的,我们可以定义A的QL, RQ和LQ分解。</p> </li><li> <p>更一般的说,我们可以因数分解复数 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> m × n {\displaystyle m} × {\displaystyle n} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.66666em; vertical-align: -0.08333em;"></span><span class="mord"><span class="mord mathdefault">m</span></span><span class="mspace" style="margin-right: 0.222222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right: 0.222222em;"></span></span><span class="base"><span class="strut" style="height: 0.43056em; vertical-align: 0em;"></span><span class="mord"><span class="mord mathdefault">n</span></span></span></span></span></span>矩阵(有着m ≥ n)为<span class="katex--inline"><span class="katex"><span class="katex-mathml"> m × n {\displaystyle m} × {\displaystyle n} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.66666em; vertical-align: -0.08333em;"></span><span class="mord"><span class="mord mathdefault">m</span></span><span class="mspace" style="margin-right: 0.222222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right: 0.222222em;"></span></span><span class="base"><span class="strut" style="height: 0.43056em; vertical-align: 0em;"></span><span class="mord"><span class="mord mathdefault">n</span></span></span></span></span></span> 幺正矩阵(在<span class="katex--inline"><span class="katex"><span class="katex-mathml"> Q ∗ Q = I Q^∗Q = I </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.883136em; vertical-align: -0.19444em;"></span><span class="mord"><span class="mord mathdefault">Q</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.688696em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">∗</span></span></span></span></span></span></span></span><span class="mord mathdefault">Q</span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span></span><span class="base"><span class="strut" style="height: 0.68333em; vertical-align: 0em;"></span><span class="mord mathdefault" style="margin-right: 0.07847em;">I</span></span></span></span></span>的意义上)和 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> m × n {\displaystyle m} × {\displaystyle n} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.66666em; vertical-align: -0.08333em;"></span><span class="mord"><span class="mord mathdefault">m</span></span><span class="mspace" style="margin-right: 0.222222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right: 0.222222em;"></span></span><span class="base"><span class="strut" style="height: 0.43056em; vertical-align: 0em;"></span><span class="mord"><span class="mord mathdefault">n</span></span></span></span></span></span> 上三角矩阵的乘积。</p> </li><li> <p>如果A是非奇异的,且限定R 的对角线元素为正,则这个因数分解是唯一的。</p> </li></ul>
2.1 QR分解的求法
- QR分解的实际计算有很多方法,例如Givens旋转、Householder变换,以及Gram-Schmidt正交化等等。每一种方法都有其优点和不足。
2.2 Eigen QR module
- 此模块提供各种QR分解。此模块还提供一些MatrixBase方法,包括:
MatrixBase::householderQr()
MatrixBase::colPivHouseholderQr()
MatrixBase::fullPivHouseholderQr() - 头文件
#include <Eigen/QR> - 得到R
MatrixXd R = qr.matrixQR().triangularViewEigen::Upper();
2.3.1 HouseholderQR()
- HouseholderQR()
- HouseholderQR(const EigenBase&)
- HouseholderQR qr(matrix.rows(), matrix.cols());
qr.compute(matrix); - HouseholderQR( EigenBase&)
1、householderQ()
-
该方法返回矩阵Q的表达式作为Householder变换的序列。
-
返回的表达式可以直接用于执行矩阵乘积。 也可以将其分配给密集的Matrix对象。
-
这是显示如何恢复完整或稀疏矩阵Q以及如何使用算子*执行矩阵乘积的示例:
MatrixXf A(MatrixXf::Random(5,3)), thinQ(MatrixXf::Identity(5,3)), Q;
A.setRandom();
HouseholderQR<MatrixXf> qr(A);
Q = qr.householderQ();
thinQ = qr.householderQ() * thinQ;
std::cout << “The complete unitary matrix Q is:\n” << Q << “\n\n”;
std::cout << “The thin matrix Q is:\n” << thinQ << “\n\n”;output:
The complete unitary matrix Q is:
-0.676 0.0793 0.713 -0.0788 -0.147
-0.221 -0.322 -0.37 -0.366 -0.759
-0.353 -0.345 -0.214 0.841 -0.0518
0.582 -0.462 0.555 0.176 -0.329
-0.174 -0.747 -0.00907 -0.348 0.539The thin matrix Q is:
-0.676 0.0793 0.713
-0.221 -0.322 -0.37
-0.353 -0.345 -0.214
0.582 -0.462 0.555
-0.174 -0.747 -0.009072、solve()
-
此方法找到方程Ax = b的解x,其中A是矩阵*这是QR分解(如果存在)
-
这种方法只是试图找到尽可能好的解决方案。 如果要检查解决方案是否存在或是否正确,只需调用此函数以获取结果,然后计算该结果的错误,或直接使用MatrixBase :: isApprox(),例如:
bool a_solution_exists = (A*result).isApprox(b, precision);
- 1
求解示例:
typedef Matrix<float,3,3> Matrix3x3;
Matrix3x3 m = Matrix3x3::Random();
Matrix3f y = Matrix3f::Random();
cout << “Here is the matrix m:” << endl << m << endl;
cout << “Here is the matrix y:” << endl << y << endl;
Matrix3f x;
x = m.householderQr().solve(y);
assert(y.isApprox(m*x));
cout << “Here is a solution x to the equation mx=y:” << endl << x << endl;# output:
Here is the matrix m:
0.68 0.597 -0.33
-0.211 0.823 0.536
0.566 -0.605 -0.444
Here is the matrix y:
0.108 -0.27 0.832
-0.0452 0.0268 0.271
0.258 0.904 0.435
Here is a solution x to the equation mx=y:
0.609 2.68 1.67
-0.231 -1.57 0.0713
0.51 3.51 1.052.3.2 ColPivHouseholderQR()
- ColPivHouseholderQR()
- ColPivHouseholderQR qr(matrix.rows(), matrix.cols());
qr.compute(matrix); - ColPivHouseholderQR(const EigenBase&)
- ColPivHouseholderQR(EigenBase&)
利用qr 求解 Ax=y
Matrix3f m = Matrix3f::Random();
Matrix3f y = Matrix3f::Random();
cout << “Here is the matrix m:” << endl << m << endl;
cout << “Here is the matrix y:” << endl << y << endl;
Matrix3f x;
x = m.colPivHouseholderQr().solve(y);
assert(y.isApprox(m*x));
cout << “Here is a solution x to the equation mx=y:” << endl << x << endl;其中解是否存在判断一样
bool a_solution_exists = (A*result).isApprox(b, precision);
- 1
2.3.3 FullPivHouseholderQR()
- FullPivHouseholderQR()
- FullPivHouseholderQR( EigenBase&)
- FullPivHouseholderQR qr(matrix.rows(), matrix.cols());
qr.compute(matrix); - FullPivHouseholderQR(const EigenBase&)
Matrix3f m = Matrix3f::Random();
Matrix3f y = Matrix3f::Random();
cout << “Here is the matrix m:” << endl << m << endl;
cout << “Here is the matrix y:” << endl << y << endl;
Matrix3f x;
x = m.fullPivHouseholderQr().solve(y);
assert(y.isApprox(m*x));
cout << “Here is a solution x to the equation mx=y:” << endl << x << endl;# output:
Here is the matrix m:
0.68 0.597 -0.33
-0.211 0.823 0.536
0.566 -0.605 -0.444
Here is the matrix y:
0.108 -0.27 0.832
-0.0452 0.0268 0.271
0.258 0.904 0.435
Here is a solution x to the equation mx=y:
0.609 2.68 1.67
-0.231 -1.57 0.0713
0.51 3.51 1.053. 特征值分解 EVD
- 线性代数中,特征分解(Eigendecomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。需要注意只有对可对角化矩阵才可以施以特征分解。
3.1 特征值与特征向量的基础理论
-
N N </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.68333em; vertical-align: 0em;"></span><span class="mord mathdefault" style="margin-right: 0.10903em;">N</span></span></span></span></span>维非零向量 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> v v </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.43056em; vertical-align: 0em;"></span><span class="mord mathdefault" style="margin-right: 0.03588em;">v</span></span></span></span></span> 是<span class="katex--inline"><span class="katex"><span class="katex-mathml"> N × N N×N </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.76666em; vertical-align: -0.08333em;"></span><span class="mord mathdefault" style="margin-right: 0.10903em;">N</span><span class="mspace" style="margin-right: 0.222222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right: 0.222222em;"></span></span><span class="base"><span class="strut" style="height: 0.68333em; vertical-align: 0em;"></span><span class="mord mathdefault" style="margin-right: 0.10903em;">N</span></span></span></span></span> 的矩阵 A 的特征向量,当且仅当下式成立:<br> <span class="katex--inline"><span class="katex"><span class="katex-mathml"> A v = λ v {\displaystyle \mathbf {A} \mathbf {v} =\lambda \mathbf {v} } </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.69444em; vertical-align: 0em;"></span><span class="mord"><span class="mord"><span class="mord mathbf">A</span></span><span class="mord"><span class="mord mathbf" style="margin-right: 0.01597em;">v</span></span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mord mathdefault">λ</span><span class="mord"><span class="mord mathbf" style="margin-right: 0.01597em;">v</span></span></span></span></span></span></span></li><li>其中 λ 为一标量,称为 v 对应的特征值。也称 v 为特征值 λ 对应的特征向量。也即特征向量被施以线性变换 A 只会使向量伸长或缩短而其方向不被改变。</li><li>由上式可得<br> <span class="katex--inline"><span class="katex"><span class="katex-mathml"> p ( λ ) : = det ( A − λ I ) = 0. p\left(\lambda\right) := \det\left(\mathbf{A} - \lambda \mathbf{I}\right)= 0. </span><span class="katex-html"><span class="base"><span class="strut" style="height: 1em; vertical-align: -0.25em;"></span><span class="mord mathdefault">p</span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="minner"><span class="mopen delimcenter" style="top: 0em;">(</span><span class="mord mathdefault">λ</span><span class="mclose delimcenter" style="top: 0em;">)</span></span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">:</span></span><span class="base"><span class="strut" style="height: 0.36687em; vertical-align: 0em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span></span><span class="base"><span class="strut" style="height: 1em; vertical-align: -0.25em;"></span><span class="mop">det</span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="minner"><span class="mopen delimcenter" style="top: 0em;">(</span><span class="mord"><span class="mord mathbf">A</span></span><span class="mspace" style="margin-right: 0.222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right: 0.222222em;"></span><span class="mord mathdefault">λ</span><span class="mord"><span class="mord mathbf">I</span></span><span class="mclose delimcenter" style="top: 0em;">)</span></span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span></span><span class="base"><span class="strut" style="height: 0.64444em; vertical-align: 0em;"></span><span class="mord">0</span><span class="mord">.</span></span></span></span></span><br> 称多项式 p(λ) 为矩阵的<a href="https://zh.wikipedia.org/wiki/%E7%89%B9%E5%BE%B5%E5%A4%9A%E9%A0%85%E5%BC%8F">特征多项式</a>。上式亦称为矩阵的<a href="https://zh.wikipedia.org/wiki/%E7%89%B9%E5%BE%B5%E6%96%B9%E7%A8%8B%E5%BC%8F">特征方程</a>。特征多项式是关于未知数 λ 的 N 次多项式。由代数基本定理,特征方程有 N 个解。这些解的解集也就是特征值的集合,有时也称为“谱”(Spectrum)。</li></ul>
3.2 矩阵的特征分解
- 令 A 是一个 N×N 的方阵,且有 N 个线性独立的特征向量
q i ( i = 1 , … , N ) {\displaystyle q_{i}\,\,(i=1,\dots ,N)} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 1em; vertical-align: -0.25em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right: 0.03588em;">q</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.311664em;"><span class="" style="top: -2.55em; margin-left: -0.03588em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.15em;"><span class=""></span></span></span></span></span></span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="mopen">(</span><span class="mord mathdefault">i</span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="minner">…</span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="mpunct">,</span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="mord mathdefault" style="margin-right: 0.10903em;">N</span><span class="mclose">)</span></span></span></span></span></span> 。这样, A 可以被分解为<span class="katex--inline"><span class="katex"><span class="katex-mathml"> A = Q Λ Q − 1 \mathbf{A}=\mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^{-1} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.68611em; vertical-align: 0em;"></span><span class="mord"><span class="mord mathbf">A</span></span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span></span><span class="base"><span class="strut" style="height: 1.00855em; vertical-align: -0.19444em;"></span><span class="mord"><span class="mord mathbf">Q</span></span><span class="mord"><span class="mord mathbf">Λ</span></span><span class="mord"><span class="mord"><span class="mord mathbf">Q</span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.814108em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mtight">1</span></span></span></span></span></span></span></span></span></span></span></span></span></li><li>其中 Q 是N×N方阵,且其第 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> i i </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.65952em; vertical-align: 0em;"></span><span class="mord mathdefault">i</span></span></span></span></span> 列为 A 的特征向量 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> q i {\displaystyle q_{i}} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.625em; vertical-align: -0.19444em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right: 0.03588em;">q</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.311664em;"><span class="" style="top: -2.55em; margin-left: -0.03588em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.15em;"><span class=""></span></span></span></span></span></span></span></span></span></span></span>。 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> Λ Λ </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.68333em; vertical-align: 0em;"></span><span class="mord">Λ</span></span></span></span></span> 是对角矩阵,其对角线上的元素为对应的特征值,也即 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> Λ i i = λ i {\displaystyle \Lambda _{ii}=\lambda _{i}} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.84444em; vertical-align: -0.15em;"></span><span class="mord"><span class="mord"><span class="mord">Λ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.311664em;"><span class="" style="top: -2.55em; margin-left: 0em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mord mathdefault mtight">i</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.15em;"><span class=""></span></span></span></span></span></span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mord"><span class="mord mathdefault">λ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.311664em;"><span class="" style="top: -2.55em; margin-left: 0em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.15em;"><span class=""></span></span></span></span></span></span></span></span></span></span></span> 。这里需要注意只有<strong>可对角化矩阵才可以作特征分解</strong>。比如 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> [ 1 1 0 1 ] {\displaystyle {<span class="MathJax_Preview" style="color: inherit; display: none;"></span><div class="MathJax_Display"><span class="MathJax MathJax_FullWidth" id="MathJax-Element-1-Frame" tabindex="0" data-mathml="<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><mrow><mo>[</mo><mtable rowspacing="4pt" columnspacing="1em"><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></math>" role="presentation" style="position: relative;"><nobr aria-hidden="true"><span class="math" id="MathJax-Span-1" style="width: 100%; display: inline-block; min-width: 3.445em;"><span style="display: inline-block; position: relative; width: 100%; height: 0px; font-size: 102%;"><span style="position: absolute; clip: rect(2.382em, 1003.14em, 5.115em, -999.997em); top: -3.997em; left: 0em; width: 100%;"><span class="mrow" id="MathJax-Span-2"><span style="display: inline-block; position: relative; width: 100%; height: 0px;"><span style="position: absolute; clip: rect(2.382em, 1003.14em, 5.115em, -999.997em); top: -3.997em; left: 50%; margin-left: -1.668em;"><span class="mrow" id="MathJax-Span-3"><span class="mo" id="MathJax-Span-4" style="vertical-align: 0em;"><span style="font-family: MathJax_Size3;">[</span></span><span class="mtable" id="MathJax-Span-5" style="padding-right: 0.154em; padding-left: 0.154em;"><span style="display: inline-block; position: relative; width: 2.027em; height: 0px;"><span style="position: absolute; clip: rect(2.534em, 1000.46em, 4.913em, -999.997em); top: -3.997em; left: 0em;"><span style="display: inline-block; position: relative; width: 0.509em; height: 0px;"><span style="position: absolute; width: 100%; clip: rect(3.192em, 1000.41em, 4.154em, -999.997em); top: -4.655em; left: 0em;"><span class="mtd" id="MathJax-Span-6"><span class="mrow" id="MathJax-Span-7"><span style="display: inline-block; position: relative; width: 100%; height: 0px;"><span style="position: absolute; clip: rect(3.192em, 1000.41em, 4.154em, -999.997em); top: -3.997em; left: 50%; margin-left: -0.251em;"><span class="mn" id="MathJax-Span-8" style="font-family: MathJax_Main;">1</span><span style="display: inline-block; width: 0px; height: 4.002em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.002em;"></span></span><span style="position: absolute; width: 100%; clip: rect(3.192em, 1000.46em, 4.154em, -999.997em); top: -3.237em; left: 0em;"><span class="mtd" id="MathJax-Span-12"><span class="mrow" id="MathJax-Span-13"><span style="display: inline-block; position: relative; width: 100%; height: 0px;"><span style="position: absolute; clip: rect(3.192em, 1000.46em, 4.154em, -999.997em); top: -3.997em; left: 50%; margin-left: -0.251em;"><span class="mn" id="MathJax-Span-14" style="font-family: MathJax_Main;">0</span><span style="display: inline-block; width: 0px; height: 4.002em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.002em;"></span></span></span><span style="display: inline-block; width: 0px; height: 4.002em;"></span></span><span style="position: absolute; clip: rect(2.534em, 1000.41em, 4.913em, -999.997em); top: -3.997em; left: 1.521em;"><span style="display: inline-block; position: relative; width: 0.509em; height: 0px;"><span style="position: absolute; width: 100%; clip: rect(3.192em, 1000.41em, 4.154em, -999.997em); top: -4.655em; left: 0em;"><span class="mtd" id="MathJax-Span-9"><span class="mrow" id="MathJax-Span-10"><span style="display: inline-block; position: relative; width: 100%; height: 0px;"><span style="position: absolute; clip: rect(3.192em, 1000.41em, 4.154em, -999.997em); top: -3.997em; left: 50%; margin-left: -0.251em;"><span class="mn" id="MathJax-Span-11" style="font-family: MathJax_Main;">1</span><span style="display: inline-block; width: 0px; height: 4.002em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.002em;"></span></span><span style="position: absolute; width: 100%; clip: rect(3.192em, 1000.41em, 4.154em, -999.997em); top: -3.237em; left: 0em;"><span class="mtd" id="MathJax-Span-15"><span class="mrow" id="MathJax-Span-16"><span style="display: inline-block; position: relative; width: 100%; height: 0px;"><span style="position: absolute; clip: rect(3.192em, 1000.41em, 4.154em, -999.997em); top: -3.997em; left: 50%; margin-left: -0.251em;"><span class="mn" id="MathJax-Span-17" style="font-family: MathJax_Main;">1</span><span style="display: inline-block; width: 0px; height: 4.002em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.002em;"></span></span></span><span style="display: inline-block; width: 0px; height: 4.002em;"></span></span></span></span><span class="mo" id="MathJax-Span-18" style="vertical-align: 0em;"><span style="font-family: MathJax_Size3;">]</span></span></span><span style="display: inline-block; width: 0px; height: 4.002em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.002em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -1.03em; border-left: 0px solid; width: 0px; height: 2.533em;"></span></span></nobr><span class="MJX_Assistive_MathML MJX_Assistive_MathML_Block" role="presentation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><mrow><mo>[</mo><mtable rowspacing="4pt" columnspacing="1em"><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable><mo>]</mo></mrow></math></span></span></div><script type="math/tex; mode=display" id="MathJax-Element-1">\begin{bmatrix}1&1\\0&1\\\end{bmatrix}</script>}} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 2.40003em; vertical-align: -0.95003em;"></span><span class="mord"><span class="mord"><span class="minner"><span class="mopen delimcenter" style="top: 0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 1.45em;"><span class="" style="top: -3.61em;"><span class="pstrut" style="height: 3em;"></span><span class="mord"><span class="mord">1</span></span></span><span class="" style="top: -2.41em;"><span class="pstrut" style="height: 3em;"></span><span class="mord"><span class="mord">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.95em;"><span class=""></span></span></span></span></span><span class="arraycolsep" style="width: 0.5em;"></span><span class="arraycolsep" style="width: 0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 1.45em;"><span class="" style="top: -3.61em;"><span class="pstrut" style="height: 3em;"></span><span class="mord"><span class="mord">1</span></span></span><span class="" style="top: -2.41em;"><span class="pstrut" style="height: 3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.95em;"><span class=""></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top: 0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></span></span> 不能被对角化,也就不能特征分解。</li><li>一般来说,特征向量 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> q i ( i = 1 , … , N ) {\displaystyle q_{i}\,\,(i=1,\dots ,N)} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 1em; vertical-align: -0.25em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right: 0.03588em;">q</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.311664em;"><span class="" style="top: -2.55em; margin-left: -0.03588em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.15em;"><span class=""></span></span></span></span></span></span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="mopen">(</span><span class="mord mathdefault">i</span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="minner">…</span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="mpunct">,</span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="mord mathdefault" style="margin-right: 0.10903em;">N</span><span class="mclose">)</span></span></span></span></span></span> 一般被单位化(但这不是必须的)。未被单位化的特征向量组 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> v i ( i = 1 , … , N ) , {\displaystyle v_{i}\,\,(i=1,\dots ,N),} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 1em; vertical-align: -0.25em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right: 0.03588em;">v</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.311664em;"><span class="" style="top: -2.55em; margin-left: -0.03588em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.15em;"><span class=""></span></span></span></span></span></span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="mopen">(</span><span class="mord mathdefault">i</span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="minner">…</span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="mpunct">,</span><span class="mspace" style="margin-right: 0.166667em;"></span><span class="mord mathdefault" style="margin-right: 0.10903em;">N</span><span class="mclose">)</span><span class="mpunct">,</span></span></span></span></span></span> 也可以作为 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> Q Q </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.87777em; vertical-align: -0.19444em;"></span><span class="mord mathdefault">Q</span></span></span></span></span> 的列向量。这一事实可以这样理解: Q 中向量的长度都被 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> Q − 1 Q^{−1} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 1.00855em; vertical-align: -0.19444em;"></span><span class="mord"><span class="mord mathdefault">Q</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.814108em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mtight">1</span></span></span></span></span></span></span></span></span></span></span></span></span> 抵消了。</li></ul>
通过特征分解求反(逆)矩阵
- 若矩阵 A 可被特征分解并特征值中不含零,则矩阵 A 为非奇异矩阵,且其逆矩阵可以由下式给出:
A − 1 = Q Λ − 1 Q − 1 \mathbf{A}^{-1}=\mathbf{Q}\mathbf{\Lambda}^{-1}\mathbf{Q}^{-1} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.814108em; vertical-align: 0em;"></span><span class="mord"><span class="mord"><span class="mord mathbf">A</span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.814108em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mtight">1</span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span></span><span class="base"><span class="strut" style="height: 1.00855em; vertical-align: -0.19444em;"></span><span class="mord"><span class="mord mathbf">Q</span></span><span class="mord"><span class="mord"><span class="mord mathbf">Λ</span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.814108em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mtight">1</span></span></span></span></span></span></span></span></span><span class="mord"><span class="mord"><span class="mord mathbf">Q</span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.814108em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mtight">1</span></span></span></span></span></span></span></span></span></span></span></span></span><br> 因为 Λ 为对角矩阵,其逆矩阵容易计算出:<span class="katex--inline"><span class="katex"><span class="katex-mathml"> [ Λ − 1 ] i i = 1 λ i \left[\Lambda^{-1}\right]_{ii}=\frac{1}{\lambda_i} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 1.24971em; vertical-align: -0.39971em;"></span><span class="minner"><span class="minner"><span class="mopen delimcenter" style="top: 0em;"><span class="delimsizing size1">[</span></span><span class="mord"><span class="mord">Λ</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.814108em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mtight">1</span></span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top: 0em;"><span class="delimsizing size1">]</span></span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.061954em;"><span class="" style="top: -2.30029em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mord mathdefault mtight">i</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.39971em;"><span class=""></span></span></span></span></span></span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span></span><span class="base"><span class="strut" style="height: 1.29021em; vertical-align: -0.4451em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.845108em;"><span class="" style="top: -2.655em;"><span class="pstrut" style="height: 3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight">λ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.328086em;"><span class="" style="top: -2.357em; margin-left: 0em; margin-right: 0.0714286em;"><span class="pstrut" style="height: 2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.143em;"><span class=""></span></span></span></span></span></span></span></span></span><span class="" style="top: -3.23em;"><span class="pstrut" style="height: 3em;"></span><span class="frac-line" style="border-bottom-width: 0.04em;"></span></span><span class="" style="top: -3.394em;"><span class="pstrut" style="height: 3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.4451em;"><span class=""></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></li></ul>
3.3 对特殊矩阵的特征分解
对称矩阵
- 任意的
N × N N×N </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.76666em; vertical-align: -0.08333em;"></span><span class="mord mathdefault" style="margin-right: 0.10903em;">N</span><span class="mspace" style="margin-right: 0.222222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right: 0.222222em;"></span></span><span class="base"><span class="strut" style="height: 0.68333em; vertical-align: 0em;"></span><span class="mord mathdefault" style="margin-right: 0.10903em;">N</span></span></span></span></span> 实对称矩阵都有 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> N N </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.68333em; vertical-align: 0em;"></span><span class="mord mathdefault" style="margin-right: 0.10903em;">N</span></span></span></span></span> 个线性无关的特征向量。并且这些特征向量都可以正交单位化而得到一组正交且模为 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> 1 1 </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.64444em; vertical-align: 0em;"></span><span class="mord">1</span></span></span></span></span> 的向量。故实对称矩阵 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> A A </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.68333em; vertical-align: 0em;"></span><span class="mord mathdefault">A</span></span></span></span></span> 可被分解成<br> <span class="katex--inline"><span class="katex"><span class="katex-mathml"> A = Q Λ Q T \mathbf{A}=\mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^{T} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.68611em; vertical-align: 0em;"></span><span class="mord"><span class="mord mathbf">A</span></span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span></span><span class="base"><span class="strut" style="height: 1.03577em; vertical-align: -0.19444em;"></span><span class="mord"><span class="mord mathbf">Q</span></span><span class="mord"><span class="mord mathbf">Λ</span></span><span class="mord"><span class="mord"><span class="mord mathbf">Q</span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.841331em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.13889em;">T</span></span></span></span></span></span></span></span></span></span></span></span></span></li><li>其中 <span class="katex--inline"><span class="katex"><span class="katex-mathml"> Q Q </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.87777em; vertical-align: -0.19444em;"></span><span class="mord mathdefault">Q</span></span></span></span></span> 为<a href="https://zh.wikipedia.org/wiki/%E6%AD%A3%E4%BA%A4%E7%9F%A9%E9%98%B5">正交矩阵</a>,<span class="katex--inline"><span class="katex"><span class="katex-mathml"> Λ Λ </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.68333em; vertical-align: 0em;"></span><span class="mord">Λ</span></span></span></span></span>为<a href="https://zh.wikipedia.org/wiki/%E5%B0%8D%E8%A7%92%E7%9F%A9%E9%99%A3">实对角矩阵</a>。</li></ul>
正规矩阵
- 类似地,一个复正规矩阵具有一组正交特征向量基,故正规矩阵可以被分解成
A = U Λ U H \mathbf{A}=\mathbf{U}\mathbf{\Lambda}\mathbf{U}^{H} </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.68611em; vertical-align: 0em;"></span><span class="mord"><span class="mord mathbf">A</span></span><span class="mspace" style="margin-right: 0.277778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right: 0.277778em;"></span></span><span class="base"><span class="strut" style="height: 0.841331em; vertical-align: 0em;"></span><span class="mord"><span class="mord mathbf">U</span></span><span class="mord"><span class="mord mathbf">Λ</span></span><span class="mord"><span class="mord"><span class="mord mathbf">U</span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.841331em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.08125em;">H</span></span></span></span></span></span></span></span></span></span></span></span></span></li><li>其中 U 为一个<a href="https://zh.wikipedia.org/wiki/%E9%85%89%E7%9F%A9%E9%98%B5">酉矩阵</a>。进一步地,若 A 是埃尔米特矩阵,那么对角矩阵 Λ 的对角元全是实数。若 A 还是酉矩阵,则 Λ 的所有对角元在复平面的单位圆上取得。</li></ul>
3.4 Eigen 案例
# code:
Eigen::Matrix2d matrix_22;
matrix_22 << 2,3,2,1;
cout << “matrix = \n”<< matrix_22<<endl;<span class="token comment">//Eigen::SelfAdjointEigenSolver<Eigen::Matrix2d> eigen_solver1 ( matrix_22 );/这句是啥不清楚</span> Eigen<span class="token punctuation">:</span><span class="token punctuation">:</span>EigenSolver<span class="token operator"><</span>Eigen<span class="token punctuation">:</span><span class="token punctuation">:</span>Matrix2d<span class="token operator">></span> eigen_solver <span class="token punctuation">(</span> matrix_22 <span class="token punctuation">)</span><span class="token punctuation">;</span> cout <span class="token operator"><<</span> <span class="token string">"matrix values = \n"</span> <span class="token operator"><<</span> eigen_solver<span class="token punctuation">.</span><span class="token function">eigenvalues</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator"><<</span> endl<span class="token punctuation">;</span><span class="token comment">//形式为二维向量(4,0)和(-1,0)。真实值为4,-1。</span> cout <span class="token operator"><<</span> <span class="token string">"matrix vectors = \n"</span> <span class="token operator"><<</span> eigen_solver<span class="token punctuation">.</span><span class="token function">eigenvectors</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator"><<</span> endl<span class="token punctuation">;</span><span class="token comment">//输出为单位化之后的。形式如下:</span>
# output:
matrix =
2 3
2 1
matrix values =
(4,0)
(-1,0)
matrix vectors =
(0.83205,0) (-0.707107,0)
(0.5547,0) (0.707107,0)4. 奇异值分解 SVD
- 上面的特征值分解,对矩阵有着较高的要求,它需要被分解的矩阵
- 类似地,一个复正规矩阵具有一组正交特征向量基,故正规矩阵可以被分解成
- 任意的
- 若矩阵 A 可被特征分解并特征值中不含零,则矩阵 A 为非奇异矩阵,且其逆矩阵可以由下式给出:
- 令 A 是一个 N×N 的方阵,且有 N 个线性独立的特征向量
-
评论(0)
您还未登录,请登录后发表或查看评论