Talk:Conjugate residual method
This article is rated Stub-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | |||||||||||
|
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)
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)
This is correct and I've made the edits 2607:F140:400:A008:C9C6:C619:2CD1:4285 (talk) 03:45, 28 February 2017 (UTC)
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)