<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Iterative_refinement</id>
	<title>Iterative refinement - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Iterative_refinement"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Iterative_refinement&amp;action=history"/>
	<updated>2026-10-25T16:30:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Iterative_refinement&amp;diff=8116781&amp;oldid=prev</id>
		<title>192.16.184.89 at 16:22, 2 February 2024</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Iterative_refinement&amp;diff=8116781&amp;oldid=prev"/>
		<updated>2024-02-02T16:22:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Method to improve accuracy of numerical solutions to systems of linear equations}}&lt;br /&gt;
{{broader|Iterative method}}&lt;br /&gt;
{{about|iterative refinement in mathematics|iterative refinement in software development|Iterative and incremental development}}&lt;br /&gt;
{{use dmy dates|date=July 2020}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Iterative refinement&amp;#039;&amp;#039;&amp;#039; is an [[iterative method]] proposed by [[James H. Wilkinson]] to improve the accuracy of numerical solutions to [[systems of linear equations]].&amp;lt;ref name=Wilkinson1963&amp;gt;{{cite book |first=James H. |last=Wilkinson |year=1963 |title=Rounding Errors in Algebraic Processes |publisher=[[Prentice Hall]] |place=Englewood Cliffs, NJ |url=https://archive.org/details/roundingerrorsin0000wilk |url-access=registration}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=Moler1967&amp;gt;{{cite journal |first=Cleve B. |last=Moler |date=April 1967 |title=Iterative refinement in floating point |journal=[[Journal of the ACM]] |volume=14 |issue=2 |pages=316–321 |publisher=[[Association for Computing Machinery]] |place=New York, NY|doi=10.1145/321386.321394|doi-access=free }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When solving a linear system &amp;lt;math&amp;gt;A \mathbf{x} = \mathbf{b} \,,&amp;lt;/math&amp;gt; due to the compounded accumulation of [[Round-off error|rounding error]]s, the computed solution &amp;lt;math&amp;gt;\hat{\mathbf{x}}&amp;lt;/math&amp;gt; may sometimes deviate from the exact solution &amp;lt;math&amp;gt;\mathbf{x}_\star\,.&amp;lt;/math&amp;gt; Starting with &amp;lt;math&amp;gt;\mathbf{x}_1 = \hat{\mathbf{x}}\,,&amp;lt;/math&amp;gt; iterative refinement computes a sequence &amp;lt;math&amp;gt;\{\mathbf{x}_1,\, \mathbf{x}_2,\, \mathbf{x}_3,\dots\}&amp;lt;/math&amp;gt; which converges to &amp;lt;math&amp;gt;\mathbf{x}_\star\,,&amp;lt;/math&amp;gt; when certain assumptions are met.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
For &amp;lt;math&amp;gt;m = 1, 2, 3, \dots\,,&amp;lt;/math&amp;gt; the {{mvar|m}}th iteration of iterative refinement consists of three steps:&lt;br /&gt;
{{ordered list | list-style-type = lower-roman&lt;br /&gt;
| Compute the residual error {{math|&amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039;{{sub|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;}}}}&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\mathbf{r}_m = \mathbf{b} - A \mathbf{x}_m\,.&amp;lt;/math&amp;gt;&lt;br /&gt;
| Solve the system for the correction, {{math|&amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039;{{sub|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;}}}}, that removes the residual error&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;A \mathbf{c}_m = \mathbf{r}_m\,.&amp;lt;/math&amp;gt;&lt;br /&gt;
| Add the correction to get the revised next solution {{math|&amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;{{sub|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;+1}}}}&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\mathbf{x}_{m+1} = \mathbf{x}_m + \mathbf{c}_m\,.&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The crucial reasoning for the refinement algorithm is that although the solution for {{math|&amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039;{{sub|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;}}}} in step&amp;amp;nbsp;(ii) may indeed be troubled by similar errors as the first solution, &amp;lt;math&amp;gt;\hat\mathbf{x}&amp;lt;/math&amp;gt;, the calculation of the residual {{math|&amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039;{{sub|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;}}}} in step&amp;amp;nbsp;(i), in comparison, is numerically nearly exact: You may not know the right answer very well, but you know quite accurately just how far the solution you have in hand is from producing the correct outcome ({{math|&amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039;}}). If the residual is small in some sense, then the correction must also be small, and should at the very least steer the current estimate of the answer, {{math|&amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;{{sub|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;}}}}, closer to the desired one, &amp;lt;math&amp;gt;\mathbf{x}_\star\,.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The iterations will stop on their own when the residual {{math|&amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039;{{sub|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;}}}} is zero, or close enough to zero that the corresponding correction {{math|&amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039;{{sub|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;}}}} is too small to change the solution {{math|&amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;{{sub|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;}}}} which produced it; alternatively, the algorithm stops when {{math|&amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039;{{sub|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;}}}} is too small to convince the linear algebraist monitoring the progress that it is worth continuing with any further refinements.&lt;br /&gt;
&lt;br /&gt;
Note that the matrix equation solved in step (ii) uses the same matrix &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; for each iteration. If the matrix equation is solved using a direct method, such as &lt;br /&gt;
[[Cholesky decomposition|Cholesky]] or [[LU decomposition|LU]] [[Matrix decomposition|decomposition]], the numerically expensive factorization of &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; is done once and is reused for the relatively inexpensive [[forward substitution|forward]] and [[back substitution]] to solve for {{math|&amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039;{{sub|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;}}}} at each iteration.&amp;lt;ref name=Moler1967/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Error analysis==&lt;br /&gt;
As a rule of thumb, iterative refinement for [[Gaussian elimination]] produces a solution correct to working precision if double the working precision is used in the computation of {{math|&amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039;}}, e.g. by using [[Quadruple-precision floating-point format|quad]] or [[extended precision|double extended]] precision [[IEEE 754]] [[floating point]], and if {{math|A}} is not too ill-conditioned (and the iteration  and the rate of convergence are determined by the condition number of {{math|A}}).&amp;lt;ref&amp;gt;{{cite book |first=Nicholas |last=Higham |title=Accuracy and Stability of Numerical Algorithms |edition=2 |publisher=SIAM |year=2002 |pages=232}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More formally, assuming that each step&amp;amp;nbsp;(ii) can be solved reasonably accurately, i.e., in mathematical terms, for every {{mvar|m}}, we have&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;A \left( I + F_m \right) \mathbf{c}_m = \mathbf{r}_m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where {{math|‖F{{sub|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;}}‖{{sub|&amp;amp;infin;}} &amp;lt; 1}}, the [[Approximation error|relative error]] in the {{mvar|m}}-th iterate of iterative refinement satisfies&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\frac{ \lVert \mathbf{x}_m - \mathbf{x}_\star \rVert_\infty }{ \lVert \mathbf{x}_\star \rVert_\infty} \leq \bigl( \sigma\,\kappa(A)\,\varepsilon_1\bigr)^m + \mu_1\, \varepsilon_1 + n\, \kappa(A)\, \mu_2\, \varepsilon_2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
* {{math|‖&amp;amp;middot;‖&amp;lt;sub&amp;gt;&amp;amp;infin;&amp;lt;/sub&amp;gt;}} denotes the [[Uniform norm|{{math|&amp;amp;infin;}}-norm]] of a vector,&lt;br /&gt;
* {{math|&amp;#039;&amp;#039;&amp;amp;kappa;&amp;#039;&amp;#039;(A)}} is the {{math|&amp;amp;infin;}}-[[condition number]] of {{math|A}},&lt;br /&gt;
* {{mvar|n}} is the order of {{math|A}},&lt;br /&gt;
* {{mvar|ε}}{{sub|1}} and {{mvar|ε}}{{sub|2}} are [[Machine epsilon|unit round-offs]] of [[floating-point arithmetic]] operations,&lt;br /&gt;
* {{mvar|σ}}, {{mvar|μ}}{{sub|1}} and {{mvar|μ}}{{sub|2}} are constants that depend on {{math|A}}, {{mvar|ε}}{{sub|1}} and {{mvar|ε}}{{sub|2}}&lt;br /&gt;
if {{math|A}} is &amp;quot;not too badly conditioned&amp;quot;, which in this context means&lt;br /&gt;
&lt;br /&gt;
{{block indent | em = 1.5 | text = {{math|0 &amp;amp;lt; &amp;#039;&amp;#039;σ &amp;amp;kappa;&amp;#039;&amp;#039;(A) &amp;#039;&amp;#039;ε&amp;#039;&amp;#039;{{sub|1}} ≪ 1}}}}&lt;br /&gt;
&lt;br /&gt;
and implies that {{mvar|μ}}{{sub|1}} and {{mvar|μ}}{{sub|2}} are of order unity.&lt;br /&gt;
&lt;br /&gt;
The distinction of {{mvar|ε}}{{sub|1}} and {{mvar|ε}}{{sub|2}} is intended to allow mixed-precision evaluation of {{math|&amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039;{{sub|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;}}}} where intermediate results are computed with unit round-off {{mvar|ε}}{{sub|2}} before the final result is rounded (or truncated) with unit round-off {{mvar|ε}}{{sub|1}}. All other computations are assumed to be carried out with unit round-off {{mvar|ε}}{{sub|1}}.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist|25em}}&lt;br /&gt;
&lt;br /&gt;
{{Numerical linear algebra}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Numerical linear algebra]]&lt;/div&gt;</summary>
		<author><name>192.16.184.89</name></author>
	</entry>
</feed>