Jump to content

Talk:Conjugate residual method

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

Range of matrices applicable

[edit]

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

[edit]

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

[edit]

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]