-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
18 changed files
with
571 additions
and
579 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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> | ||
|
@@ -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)} \> \> {\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> | ||
|
||
|
@@ -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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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> | ||
|
@@ -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>(参见第§<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> 的特征值将快速收敛。 | ||
|
@@ -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> | ||
|
@@ -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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.