Skip to content

Commit

Permalink
fine tune node85-102
Browse files Browse the repository at this point in the history
  • Loading branch information
0382 committed Aug 12, 2024
1 parent 96bf208 commit db5ac03
Show file tree
Hide file tree
Showing 18 changed files with 571 additions and 579 deletions.
57 changes: 29 additions & 28 deletions node100.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<html>
<head>
<title>Locking.</title>
<title></title>
<meta charset="utf-8">
<meta name="description" content="Locking.">
<meta name="description" content="">
<meta name="keywords" content="book, math, eigenvalue, eigenvector, linear algebra, sparse matrix">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script>
Expand Down Expand Up @@ -66,45 +66,48 @@
href="node422.html">
<button class="navigate">索引</button></a>
<br>
<b>下一节:</b><a name="tex2html2262" href="node101.html">Acceleration.</a>
<b>下一节:</b><a name="tex2html2262" href="node101.html">加速</a>
<b>上一级:</b><a name="tex2html2256" href="node98.html">子空间迭代法</a>
<b>上一节:</b><a name="tex2html2250" href="node99.html">Subspace Dimension.</a>


<b>上一节:</b><a name="tex2html2250" href="node99.html">子空间维度</a>
<br>
<br>
<!--End of Navigation Panel--><h4><a name="SECTION001334020000000000000"></a> <a name="7529"></a>
<br>
锁定机制。
<!--End of Navigation Panel-->
<h4>
<a name="SECTION001334020000000000000"></a>
<a name="7529"></a>
</h4>
由于通过子空间迭代计算的每个近似特征值的收敛速度不同,通常的做法是一次提取一个并进行某种形式的缩小(deflation)。因此,一旦第一个特征向量收敛,就没有必要在后续迭代中继续将其与<span class="math-inline">A</span>相乘。实际上,我们可以冻结这个向量,只处理向量<span class="math-inline">v_2, \ldots,v_m</span>。然而,我们仍然需要在需要进行正交化时对冻结向量<span class="math-inline">v_1</span>进行后续正交化。这种策略的术语是<i>锁定</i>;也就是说,我们不再试图改进对<span class="math-inline">v_1</span>的锁定近似。

由于通过子空间迭代计算的每个近似特征值的收敛速度不同,通常的做法是每次提取特征值,并进行某种形式的收缩。即,一旦第一个特征向量收敛,就没有必要在后续迭代中继续将其与<span class="math-inline">A</span>相乘。实际上,我们可以冻结这个向量,只处理向量<span class="math-inline">v_2, \ldots,v_m</span>。然而,我们仍然需要在需要进行正交化时对冻结向量<span class="math-inline">v_1</span>进行后续正交化。这种策略的术语是<i>锁定</i>;也就是说,我们不再试图改进对<span class="math-inline">v_1</span>的锁定近似。

<p>
以下算法描述了一种实用的带缩小(锁定)的子空间迭代,用于计算<span class="math-inline">n_{\mathrm{ev}}</span>个主特征值。

<p>
<br>
<a name="symsubspaceiter"></a><img
width="620" height="302" align="BOTTOM" border="0"
src="img842.png"
alt="\begin{algorithm}{Subspace Iteration with Projection and Deflation for HEP
\inde...
...igenvalues \\
{\rm (11)} \&gt; \&gt; {\bf end while}
\end{tabbing}}
\end{algorithm}">
<br>
<pre style="text-align: left;" id="symsubspaceiter">
算法 4.5 HEP带锁定和投影的子空间迭代
(1) 取初始猜测矩阵 <span class="math-inline">Z</span>,对其做QR分解得到 <span class="math-inline">Z=V R</span>
(2) 令 <span class="math-inline">j = 0</span>
(3) while <span class="math-inline">j \le n_{ev}</span> do
(4) <span class="math-inline">\hat{Y} = [V_j, A^\text{iter}V_{p-j}]</span>
(5) 对 <span class="math-inline">\hat{Y}</span> 做正交化得到 <span class="math-inline">\hat{Y} = V R</span> (前 <span class="math-inline">j</span> 列保持不变)
(6) <span class="math-inline">H = V^\ast_{p-j} A V_{p-j}</span>
(7) 计算 <span class="math-inline">H</span> 的特征分解 <span class="math-inline">H = S \Theta S^\ast</span>
(8) 测试特征值 <span class="math-inline">\Theta</span> 的收敛性
(9) <span class="math-inline">V = [V_j, V_{p-j} S]</span>
(10) 令 <span class="math-inline">j = j + i_\text{conv}</span>,其中 <span class="math-inline">i_\text{conv}</span> 是新收敛的特征值数量
(11) end while
</pre>

<p>
现在我们描述一些实现细节
下面我们讨论一些实现细节

<p>
<dl>
<dt><strong>(1)</strong></dt>
<dd>初始启动矩阵<span class="math-inline">Z</span>应构建为在感兴趣的特征向量方向上占主导地位,以加速收敛。当没有此类先验信息时,随机矩阵与其他选择一样好。
</dd>
<dt><strong>(4)</strong></dt>
<dd>迭代参数<span class="math-inline">\iter</span>应选择为在保持合理数值精度的同时最小化正交化成本。放大因子<span class="math-inline">(\lambda_1/\lambda_p)^{\iter}</span>,其中特征值<span class="math-inline">\lambda_i</span>按绝对值递减排序,给出了精度损失。鲁蒂斯豪瑟[<a href="node421.html#ruti69">381</a>]采取保守策略,仅允许放大因子为<span class="math-inline">10</span>,损失一位小数,而斯图尔特和詹宁斯[<a href="node421.html#stje81">426</a>]让算法运行至<span class="math-inline">\eps^{-1/2}</span>,即机器精度的一半,但不超过10次迭代。
<dd>迭代参数 <span class="math-inline">\mathrm{iter}</span>(乘以 <span class="math-inline">A</span> 的次数)应选择为在保持合理数值精度的同时最小化正交化成本。放大因子<span class="math-inline">(\lambda_1/\lambda_p)^\text{iter}</span>,其中特征值<span class="math-inline">\lambda_i</span>按绝对值递减排序,给出了精度损失。鲁蒂斯豪瑟[<a href="node421.html#ruti69">381</a>]采取保守策略,仅允许放大因子为<span class="math-inline">10</span>,损失一位小数,而斯图尔特和詹宁斯[<a href="node421.html#stje81">426</a>]让算法运行至<span class="math-inline">\epsilon_M^{-1/2}</span>,即机器精度的一半,但不超过10次迭代。
</dd>
</dl>

Expand All @@ -126,11 +129,9 @@
href="node422.html">
<button class="navigate">索引</button></a>
<br>
<b>下一节:</b><a name="tex2html2262" href="node101.html">Acceleration.</a>
<b>下一节:</b><a name="tex2html2262" href="node101.html">加速</a>
<b>上一级:</b><a name="tex2html2256" href="node98.html">子空间迭代法</a>
<b>上一节:</b><a name="tex2html2250" href="node99.html">Subspace Dimension.</a>


<b>上一节:</b><a name="tex2html2250" href="node99.html">子空间维度</a>
<!--End of Navigation Panel-->
<address>
Susan Blackford
Expand Down
39 changes: 14 additions & 25 deletions node101.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<html>
<head>
<title>Acceleration.</title>
<title>加速</title>
<meta charset="utf-8">
<meta name="description" content="Acceleration.">
<meta name="description" content="加速">
<meta name="keywords" content="book, math, eigenvalue, eigenvector, linear algebra, sparse matrix">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script>
Expand Down Expand Up @@ -68,16 +68,16 @@
<br>
<b>下一节:</b><a name="tex2html2274" href="node102.html">可用的软件</a>
<b>上一级:</b><a name="tex2html2268" href="node98.html">子空间迭代法</a>
<b>上一节:</b><a name="tex2html2264" href="node100.html">Locking.</a>


<b>上一节:</b><a name="tex2html2264" href="node100.html"></a>
<br>
<br>
<!--End of Navigation Panel--><h4><a name="SECTION001334030000000000000">
加速方法</a>
<!--End of Navigation Panel-->
<h4><a name="SECTION001334030000000000000"></a>
加速方法
</h4>

若需要求解接近某一<i>位移</i> <span class="math-inline">\sigma</span> 的特征值,并且可以便捷地得到分解式
<span class="math-inline">A - \sigma \, I=LU</span>(参见第&#167;<a href="node385.html#sec:directsolvers">10.3</a>节),
<span class="math-inline">A - \sigma \, I=LU</span>(参见第<a href="node385.html#sec:directsolvers">10.3</a>节),
那么可以将上述算法应用于

<span class="math-inline">\left(A - \sigma \, I\right)^{-1}</span>。接近 <span class="math-inline">\sigma</span> 的特征值将快速收敛。
Expand All @@ -97,20 +97,11 @@
通过这些改进,子空间迭代法可能成为一种相当高效的方法,其优势在于易于编码和理解。然而,后续讨论的一些方法通常更受欢迎,因为它们往往能更快地找到特征值/特征向量。

<p>
本节内容大量引自 Demmel [<a
href="node421.html#demmelbook">114</a>],Golub 和 Van Loan [<a
href="node421.html#golo96">198</a>],
以及 Saad [<a
href="node421.html#saad92">387</a>]。关于子空间迭代的进一步讨论,建议读者参考 Chatelin [<a
href="node421.html#chat93">79</a>],
Lehoucq 和 Scott [<a
href="node421.html#lesc95">292</a>],Stewart [<a
href="node421.html#stew76">422</a>],以及
Wilkinson [<a
href="node421.html#wilk65">457</a>]。另请参阅 Bathe 和 Wilson [<a
href="node421.html#bawi76">42</a>] 以及
Jennings [<a
href="node421.html#jenn77">242</a>]
本节内容大量引自 Demmel [<a href="node421.html#demmelbook">114</a>],Golub 和 Van Loan [<a href="node421.html#golo96">198</a>],
以及 Saad [<a href="node421.html#saad92">387</a>]。关于子空间迭代的进一步讨论,建议读者参考 Chatelin [<a href="node421.html#chat93">79</a>],
Lehoucq 和 Scott [<a href="node421.html#lesc95">292</a>],Stewart [<a href="node421.html#stew76">422</a>],以及
Wilkinson [<a href="node421.html#wilk65">457</a>]。另请参阅 Bathe 和 Wilson [<a href="node421.html#bawi76">42</a>] 以及
Jennings [<a href="node421.html#jenn77">242</a>]
关于结构工程方法的论述。

<p>
Expand All @@ -133,9 +124,7 @@
<br>
<b>下一节:</b><a name="tex2html2274" href="node102.html">可用的软件</a>
<b>上一级:</b><a name="tex2html2268" href="node98.html">子空间迭代法</a>
<b>上一节:</b><a name="tex2html2264" href="node100.html">Locking.</a>


<b>上一节:</b><a name="tex2html2264" href="node100.html"></a>
<!--End of Navigation Panel-->
<address>
Susan Blackford
Expand Down
60 changes: 30 additions & 30 deletions node102.html
Original file line number Diff line number Diff line change
Expand Up @@ -66,48 +66,48 @@
href="node422.html">
<button class="navigate">索引</button></a>
<br>
<b>下一节:</b><a name="tex2html2286" href="node103.html">Lanczos Method &nbsp; A.</a>
<b>上一级:</b><a name="tex2html2280" href="node94.html">Single- and Multiple-Vector Iterations</a>
<b>上一节:</b><a name="tex2html2276" href="node101.html">Acceleration.</a>


<b>下一节:</b><a name="tex2html2286" href="node103.html">Lanczos方法</a>
<b>上一级:</b><a name="tex2html2280" href="node94.html">单向量和多向量迭代</a>
<b>上一节:</b><a name="tex2html2276" href="node101.html">加速</a>
<br>
<br>
<!--End of Navigation Panel-->

<h2><a name="SECTION001335000000000000000">
Software Availability</a>
<h2><a name="SECTION001335000000000000000"></a>
可用的软件
</h2>
There are several pieces of software available for subspace
iteration. EA12 is a routine by Duff and Scott for symmetric
subspace iteration&nbsp;[<a
href="node421.html#dusc93">143</a>]. It is part of the Harwell
Subroutine Library. Given a real (sparse) symmetric matrix,
this routine computes the <span class="math-inline">r</span> largest eigenvalues and their
corresponding eigenvectors. There is a classical
implementation of subspace iteration by Rutishauser&nbsp;[<a
href="node421.html#ruti70">382</a>]
in&nbsp;[<a
href="node421.html#wire71">458</a>], where most of the refinements discussed
here have been included.

目前有多种软件可用于子空间迭代法。EA12是Duff和Scott编写的对称子空间迭代例程[<a href="node421.html#dusc93">143</a>],属于Harwell子程序库的一部分。给定一个实(稀疏)对称矩阵,该例程能够计算出前<span class="math-inline">r</span>个最大特征值及其对应的特征向量。Rutishauser在文献[<a href="node421.html#ruti70">382</a>]中提供了经典的子空间迭代实现,并在[<a href="node421.html#wire71">458</a>]中包含了此处讨论的大部分改进。

<p>
There are also two subspace iteration-based software
packages for the nonsymmetric eigenvalue problem, SRRIT by
Bai and Stewart&nbsp;[<a
href="node421.html#bast98">37</a>] and LOPSI by Stewart and Jennings&nbsp;[<a
href="node421.html#stew81">427</a>]
(see &#167;<a href="node210.html#sec:power_nsym">7.4</a> for more details).
These packages can be used to
solve the symmetric eigenvalue problem, but with some loss
in efficiency and accuracy.
此外,还有两个基于子空间迭代的软件包用于非对称特征值问题,分别是Bai和Stewart开发的SRRIT[<a href="node421.html#bast98">37</a>]以及Stewart和Jennings开发的LOPSI[<a href="node421.html#stew81">427</a>](更多详情见第<a href="node210.html#sec:power_nsym">7.4</a>节)。这些软件包虽可用于解决对称特征值问题,但在效率和精度上会有所损失。

<p>
For more information about this software, including how to access
it, see the book's homepage ETHOME.
关于这些软件的更多信息,包括如何获取,请访问本书主页ETHOME。

<p>
<br><hr>
<!--Navigation Panel-->
<a name="tex2html2285"
href="node103.html">
<button class="navigate">下一节</button></a>
<a name="tex2html2279"
href="node94.html">
<button class="navigate">上一级</button></a>
<a name="tex2html2275"
href="node101.html">
<button class="navigate">上一节</button></a>
<a name="tex2html2281"
href="node5.html">
<button class="navigate">目录</button></a>
<a name="tex2html2283"
href="node422.html">
<button class="navigate">索引</button></a>
<br>
<b>下一节:</b><a name="tex2html2286" href="node103.html">Lanczos方法</a>
<b>上一级:</b><a name="tex2html2280" href="node94.html">单向量和多向量迭代</a>
<b>上一节:</b><a name="tex2html2276" href="node101.html">加速</a>
<!--End of Navigation Panel-->
<address>
Susan Blackford
2000-11-20
Expand Down
55 changes: 38 additions & 17 deletions node85.html
Original file line number Diff line number Diff line change
Expand Up @@ -86,42 +86,40 @@ <h1>
<ul>
<li><a name="tex2html1969" href="node86.html">引言</a>
<ul>
<li><a name="tex2html1970" href="node87.html">Overview of Available Algorithms.</a>
<li><a name="tex2html1971" href="node88.html">Summary of Choices.</a>
<li><a name="tex2html1972" href="node89.html">Matrix Preparation.</a>
<li><a name="tex2html1973" href="node90.html">Orthogonalization.</a>
<li><a name="tex2html1974" href="node91.html">Eigenvalues Sought.</a>
<li><a name="tex2html1975" href="node92.html">Storage.</a>
<li><a name="tex2html1970" href="node87.html">可用的算法概览</a>
<li><a name="tex2html1971" href="node88.html">算法选择概述</a>
<li><a name="tex2html1972" href="node89.html">准备矩阵</a>
<li><a name="tex2html1973" href="node90.html">正交化</a>
<li><a name="tex2html1974" href="node91.html">寻找特征值</a>
<li><a name="tex2html1975" href="node92.html">存储</a>
</ul>
<li><a name="tex2html1976" href="node93.html">直接方法</a>
<li><a name="tex2html1977" href="node94.html">单向量与多向量迭代
<br>&nbsp; <em>M. Gu</em></a>
<li><a name="tex2html1977" href="node94.html">单向量与多向量迭代<br>&nbsp; <em>M. Gu</em></a>
<ul>
<li><a name="tex2html1978" href="node95.html">幂法</a>
<li><a name="tex2html1979" href="node96.html">逆迭代法</a>
<li><a name="tex2html1980" href="node97.html">瑞利商迭代法</a>
<li><a name="tex2html1981" href="node98.html">子空间迭代法</a>
<ul>
<li><a name="tex2html1982" href="node99.html">Subspace Dimension.</a>
<li><a name="tex2html1983" href="node100.html">Locking.</a>
<li><a name="tex2html1984" href="node101.html">Acceleration.</a>
<li><a name="tex2html1982" href="node99.html">子空间维度</a>
<li><a name="tex2html1983" href="node100.html"></a>
<li><a name="tex2html1984" href="node101.html">加速</a>
</ul>
<li><a name="tex2html1985" href="node102.html">可用的软件</a>
</ul>
<li><a name="tex2html1986" href="node103.html">Lanczos方法
<br>&nbsp; <em>A. Ruhe</em></a>
<li><a name="tex2html1986" href="node103.html">Lanczos方法<br>&nbsp; <em>A. Ruhe</em></a>
<ul>
<li><a name="tex2html1987" href="node104.html">算法</a>
<li><a name="tex2html1988" href="node105.html">收敛性质</a>
<ul>
<li><a name="tex2html1989" href="node106.html">Multiple Eigenvalues.</a>
<li><a name="tex2html1989" href="node106.html">多重特征值</a>
</ul>
<li><a name="tex2html1990" href="node107.html">谱变换</a>
<li><a name="tex2html1991" href="node108.html">重新正交化</a>
<ul>
<li><a name="tex2html1992" href="node109.html">Full Reorthogonalization.</a>
<li><a name="tex2html1993" href="node110.html">Selective Reorthogonalization.</a>
<li><a name="tex2html1994" href="node111.html">Local Reorthogonalization and Detecting Spurious Ritz Values.</a>
<li><a name="tex2html1992" href="node109.html">完全重新正交化</a>
<li><a name="tex2html1993" href="node110.html">选择重新正交化</a>
<li><a name="tex2html1994" href="node111.html">局部重新正交化和检测虚假的Ritz值</a>
</ul>
<li><a name="tex2html1995" href="node112.html">可用的软件</a>
<li><a name="tex2html1996" href="node113.html">数值示例</a>
Expand Down Expand Up @@ -189,6 +187,29 @@ <h1>
</ul></ul>
<!--End of Table of Child-Links-->
<br><hr>
<!--Navigation Panel-->
<a name="tex2html1967"
href="node86.html">
<button class="navigate">下一节</button></a>
<a name="tex2html1961"
href="book.html">
<button class="navigate">上一级</button></a>
<a name="tex2html1955"
href="node84.html">
<button class="navigate">上一节</button></a>
<a name="tex2html1963"
href="node5.html">
<button class="navigate">目录</button></a>
<a name="tex2html1965"
href="node422.html">
<button class="navigate">索引</button></a>
<br>
<b>下一节:</b><a name="tex2html1968" href="node86.html">引言</a>
<b>上一级:</b><a name="tex2html1962" href="index.html">首页</a>
<b>上一节:</b><a name="tex2html1956" href="node84.html">谱变换</a>
<br>
<br>
<!--End of Navigation Panel-->
<address>
Susan Blackford
2000-11-20
Expand Down
Loading

0 comments on commit db5ac03

Please sign in to comment.