给出数值矩阵 m 的 Hessenberg 分解.
HessenbergDecomposition
给出数值矩阵 m 的 Hessenberg 分解.
更多信息和选项
- 矩阵 m 必须是方阵.
- 结果以 {p,h} 的形式给出,其中 h 是上海森堡矩阵,p 是酉矩阵,使得 p.h.ConjugateTranspose[p]==m.
- 上海森伯格矩阵
满足
时
的条件. 也就是说,其第一对角线以下的所有项都为零. - 设置 TargetStructure->"Structured",HessenbergDecomposition[m] 以结构化矩阵的形式返回矩阵 {p,h}.
范例
打开所有单元 关闭所有单元基本范例 (1)
m = (| | | | |
| :--- | :--- | :--- | :--- |
| 1.0 | 2.9 | 3.8 | 4.7 |
| 5.6 | 6.5 | 7.4 | 8.3 |
| 9.2 | 10.1 | 11.0 | 12.9 |
| 13.8 | 14.7 | 15.6 | 16.5 |);
{p, h} = HessenbergDecomposition[m];
{p//MatrixForm, h//MatrixForm}矩阵
是上海森伯格矩阵,这意味着其在第一个下对角线下方只有零项:
UpperTriangularMatrixQ[h, -1]{UnitaryMatrixQ[p], p.h.p == m}范围 (9)
基础用法 (5)
m = {{0.5, 0.3, 0.4}, {0.3, 1.1, -0.2}, {0.4, -0.2, 0.7}};{p, h} = HessenbergDecomposition[m]MatrixForm /@ {p, h}MatrixForm /@ HessenbergDecomposition[(| | | |
| ----------- | ----------- | ------------- |
| 0.5 + 0.5 I | 1.1 | -1.3 - 3.3I |
| -I | 3.2 - 4.5 I | -2.6 |
| -2.3 + 1.2I | 0 | -1.3 + 0.24 I |)]MatrixForm /@ HessenbergDecomposition[MatrixExp[RandomReal[1, {3, 3}, WorkingPrecision -> 12]]]必须对精确矩阵进行数字化才能用于 HessenbergDecomposition:
m = (| | | |
| -- | -- | -- |
| 38 | 14 | 15 |
| 14 | 35 | 8 |
| 15 | 8 | 54 |);HessenbergDecomposition[m]MatrixForm /@ HessenbergDecomposition[N[m]]mat = RandomReal[{0, 9}, {1000, 1000}];AbsoluteTiming[HessenbergDecomposition[mat];]特殊矩阵 (4)
SparseArray[{{1, 1} -> 1.2, {1, 2} -> 2.1, {2, 2} -> 2, {2, 1} -> 0.5}, {2, 2}]HessenbergDecomposition[%]SparseArray[{{x_, y_} /; Abs[x - y] < 3 -> 1.5}, {5, 5}];MatrixForm /@ HessenbergDecomposition[%]SymmetrizedArray[{{1, 1} -> 4.1, {2, 2} -> 3, {3, 1} -> 2, {3, 3} -> 1}, {3, 3}, Symmetric[All]]MatrixForm /@ HessenbergDecomposition[%]{p, h} = HessenbergDecomposition[IdentityMatrix[3]//N];
Map[MatrixForm, {p, h}]HilbertMatrix 的海森伯格分解:
HessenbergDecomposition[HilbertMatrix[3]//N];
MatrixForm /@ %选项 (2)
TargetStructure (2)
ma = RandomReal[1, {4, 4}]设置 TargetStructure->"Dense",则 HessenbergDecomposition 的结果是是两个稠密矩阵的列表:
HessenbergDecomposition[ma, TargetStructure -> "Dense"]设置 TargetStructure->"Structured",则 HessenbergDecomposition 的结果是一个包含 OrthogonalMatrix 和 SparseArray 的列表:
HessenbergDecomposition[ma, TargetStructure -> "Structured"]ma = RandomComplex[1 + I, {4, 4}]设置 TargetStructure->"Dense",则 HessenbergDecomposition 的结果是两个稠密矩阵的列表:
HessenbergDecomposition[ma, TargetStructure -> "Dense"]设置 TargetStructure->"Structured",则 HessenbergDecomposition 的结果是包含一个 UnitaryMatrix 和一个 SparseArray 的列表:
HessenbergDecomposition[ma, TargetStructure -> "Structured"]应用 (2)
海森伯格分解对于埃尔米特矩阵特别有用,因为生成的
矩阵是三对角矩阵. 生成一个随机的 6×6 埃尔米特矩阵:
m = RandomVariate[GaussianSymplecticMatrixDistribution[3]];
Dimensions[m]HermitianMatrixQ[m]{p, h} = HessenbergDecomposition[m];Chop[MatrixForm[h]]若某矩阵同时是上海森伯格和下海森伯格矩阵,则该矩阵为三对角矩阵. 以下显示了 Chop 丢弃的小数实际上为数值不显著:
UpperTriangularMatrixQ[h, -1] && LowerTriangularMatrixQ[h, 1]计算舒尔分解的一种简单方法是未移位 QR 算法. 从
开始,在每个阶段计算
的 QR 分解
,然后令
. 在极限下,
收敛到所需的
矩阵(对于表现良好的输入矩阵). 加速这个算法的一个修改是让
成为海森伯格分解的
矩阵. 因为这么多项都已经为零,所以每个 QR 步骤都快得多. 探索随机生成的 25×25 实对称矩阵:
m = RandomVariate[GaussianOrthogonalMatrixDistribution[25]];m∈ℝ && SymmetricMatrixQ[m]使用 QRDecomposition 对未移位的 QR 算法进行 2000 次迭代:
AbsoluteTiming[t = m;Do[{q, r} = QRDecomposition[t];t = r.Transpose[q], {2000}]]Norm[Sort[Diagonal[t]] - Sort[Eigenvalues[m]]]AbsoluteTiming[{p, h} = HessenbergDecomposition[m];Do[{q, r} = QRDecomposition[h];h = r.Transpose[q], {2000}]]Norm[Sort[Diagonal[h]] - Sort[Eigenvalues[m]]]属性和关系 (7)
m = RandomReal[{0, 1}, {4, 4}];{p, h} = HessenbergDecomposition[m];UnitaryMatrixQ[p]UpperTriangularMatrixQ[h, -1]初始矩阵
由 p.h.ConjugateTranspose[p] 给出:
p.h.ConjugateTranspose[p] - m//Chop对于上海森伯格
矩阵 h,HessenbergDecomposition[h] 返回
:
h = UpperTriangularize[RandomReal[1, {10, 10}], -1];
{IdentityMatrix[10], h} == HessenbergDecomposition[h]所有 2×2 矩阵都是上海森伯格矩阵,因此 HessenbergDecomposition 的返回不变:
HessenbergDecomposition[(| | |
| --- | ---- |
| 1.5 | -2.5 |
| 3.5 | 4.5 |)]Det[m] 等于 HessenbergDecomposition[m] 的
矩阵的行列式:
m = RandomReal[1, {5, 5}];
{p, h} = HessenbergDecomposition[m];
Det[m] == Det[h]Tr[m] 等于 HessenbergDecomposition[m] 的
矩阵的迹:
m = RandomReal[1, {5, 5}];
{p, h} = HessenbergDecomposition[m];
Tr[m] == Tr[h]m = RandomVariate[GaussianUnitaryMatrixDistribution[5]];
h = Last[HessenbergDecomposition[m]];
{HermitianMatrixQ[m], UpperTriangularMatrixQ[h, -1] && LowerTriangularMatrixQ[h, 1]}m = (| | | |
| --- | ---- | --- |
| 1.5 | -2.5 | 0.5 |
| 3.5 | 4.5 | 0.5 |
| 0.5 | 1.5 | 3.5 |);
{q, t} = SchurDecomposition[m];
{r, h} = HessenbergDecomposition[m];
{UpperTriangularMatrixQ[t, -1], UpperTriangularMatrixQ[h, -1]}HessenbergDecomposition 基于行运算并保留左上角:
h[[1, 1]] == m[[1, 1]]SchurDecomposition 基于特征值;对角线下方的项表示复数值:
t[[1, 1]] + Sqrt[t[[1, 2]]t[[2, 1]]]Eigenvalues[m][[2]]可能存在的问题 (1)
HessenbergDecomposition 仅仅对近似数值矩阵有效:
HessenbergDecomposition[{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}]对精确矩阵使用 JordanDecomposition:
JordanDecomposition[{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}]技术笔记
-
▪
- 高级矩阵运算
相关指南
-
▪
- 矩阵分解
历史
2004年引入 (5.1) | 在以下年份被更新:2024 (14.0)
文本
Wolfram Research (2004),HessenbergDecomposition,Wolfram 语言函数,https://reference.wolfram.com/language/ref/HessenbergDecomposition.html (更新于 2024 年).
CMS
Wolfram 语言. 2004. "HessenbergDecomposition." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/HessenbergDecomposition.html.
APA
Wolfram 语言. (2004). HessenbergDecomposition. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/HessenbergDecomposition.html 年
BibTeX
@misc{reference.wolfram_2026_hessenbergdecomposition, author="Wolfram Research", title="{HessenbergDecomposition}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/HessenbergDecomposition.html}", note=[Accessed: 03-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_hessenbergdecomposition, organization={Wolfram Research}, title={HessenbergDecomposition}, year={2024}, url={https://reference.wolfram.com/language/ref/HessenbergDecomposition.html}, note=[Accessed: 03-November-2026]}