Jump to content

Talk:Conjugate residual method

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Range of matrices applicable

The article claims that the CRM be applicable to any non-singular hermitian system. This is wrong, and no source for that wrong claim is available. Compare as a simple counter example, in Matlab notation:

A = [ 1 0 ; 0 -1 ]; b = [1 1]; x_0 = [0 0]

Then the initial residual is r_0 = [1 1]. However, 0 = r_0 * A * r_0', as you please check by yourself. So the initial alpha is 0, and one sees that the iteration keeps stuck at x_i = [ 0, 0 ], which is not the solution. Even worse in the complex valued case. Take

A = [ 1 0 ; 0 i ]; b = [1 1]; x_0 = [0 0]

Then p_0 = r_0 = b, while p_0 * A * A * p_0' = 0, as you please check by yourself, and the algorithm has a fatal break down. Hence the article makes a wrong claim. \qed --212.201.70.54 (talk) 16:55, 6 January 2013 (UTC)[reply]

I think M must be symmetric positive definite

I think the preconditioner matrix M must be spd. Otherwise the substitution by the assumption that M has a root does not work. — Preceding unsigned comment added by 84.57.213.2 (talk) 23:15, 31 May 2016 (UTC)[reply]

This is correct and I've made the edits 2607:F140:400:A008:C9C6:C619:2CD1:4285 (talk) 03:45, 28 February 2017 (UTC)[reply]

Pseudocode Doesn't Match Source Document

One line of pseudocode doesn't match the document that is linked as the only reference. The referenced document says "Compute Ap_{j+1} = Ar_{j+1} + β{j}Ap{j}", which was converted to "Ap_{j+1} := Ar_{j+1} + β{j}Ap{j}".

The ":=" pseudo-code line is not clear as it appears to be assigning a value to something that is not a variable. I believe the intention of the source document is to provide an alternative possibly more efficient way of computing Ap_{j+1}.

I think it would be more clear if this line was removed from the pseudo-code, and a comment was added to capture the information that Ap_{j+1} can be computed more efficiently.

Here is an example of a conjugate residuals implementation that makes use of this performance optimization to reduce the number of Matrix-Vector multiplications - they have a comment explaining that it is faster but less numerically stable: [1]https://github.com/ERGO-Code/HiGHS/blob/master/src/ipm/ipx/conjugate_residuals.cc#L186 198.48.255.112 (talk) 13:22, 22 October 2024 (UTC)[reply]