CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Main CFD Forum (https://www.cfd-online.com/Forums/main/)
-   -   what is the "iterative refinement' (https://www.cfd-online.com/Forums/main/11978-what-iterative-refinement.html)

ztdep August 9, 2006 12:34

what is the "iterative refinement'
 
hi: slove Ax=B with iterative refinement! but what is the meaning of the iterative refinement! Regards

Ananda Himansu August 9, 2006 15:55

Re: what is the "iterative refinement'
 
initial guess x_0

do i = 1, maxIters

solve A*dx = b-A*x_(i-1)

x_i = x_(i-1)+dx

if (norm(dx) < solutionTolerance) exit

if (norm(b-A*x_i) < residualTolerance) exit

end do

The above pseudocode is for iterative refinement (using delta form, dx). It helps as compared with non-delta form ("solve Ax=b") only if the residual b-A*x_(i-1) is computed using higher-precision arithmetic. It can also help in cases of poorly conditioned coefficient matrices.

Ananda Himansu August 9, 2006 18:37

Re: what is the "iterative refinement'
 
I should have said that x_0 = 0 is a suitable initial guess

ztdep August 10, 2006 20:56

Re: what is the "iterative refinement'
 
Thank you very much! why not solve the Ax=B directly! what is its advantage! Regards

Ananda Himansu August 11, 2006 17:34

Re: what is the "iterative refinement'
 
You may notice that in the iterative refinement scheme, with x_0 = 0, the first iteration of the loop amounts to

solve A*dx = b

x_1 = dx

So basically, the first iteration amounts to saying solve A*x = b.

In exact arithmetic, this is the original task. However, in finite precision computer arithmetic, espectially with a poorly conditioned matrix A, this direct one-step solution is not accurate enough. The iterative refinement improves the accuracy of the answer, provided that the residual is computed accurately enough. Incidentally, in the delta form of the equation, the matrix A can be replaced by an approximation to it which is cheaper to solve.


All times are GMT -4. The time now is 16:54.