{"action":"created","issue":{"url":"https://api.github.com/repos/pyamg/pyamg/issues/203","repository_url":"https://api.github.com/repos/pyamg/pyamg","labels_url":"https://api.github.com/repos/pyamg/pyamg/issues/203/labels{/name}","comments_url":"https://api.github.com/repos/pyamg/pyamg/issues/203/comments","events_url":"https://api.github.com/repos/pyamg/pyamg/issues/203/events","html_url":"https://github.com/pyamg/pyamg/issues/203","id":238985186,"number":203,"title":"Better stopping criteria","user":{"login":"lahwaacz","id":1289205,"avatar_url":"https://avatars3.githubusercontent.com/u/1289205?v=3","gravatar_id":"","url":"https://api.github.com/users/lahwaacz","html_url":"https://github.com/lahwaacz","followers_url":"https://api.github.com/users/lahwaacz/followers","following_url":"https://api.github.com/users/lahwaacz/following{/other_user}","gists_url":"https://api.github.com/users/lahwaacz/gists{/gist_id}","starred_url":"https://api.github.com/users/lahwaacz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lahwaacz/subscriptions","organizations_url":"https://api.github.com/users/lahwaacz/orgs","repos_url":"https://api.github.com/users/lahwaacz/repos","events_url":"https://api.github.com/users/lahwaacz/events{/privacy}","received_events_url":"https://api.github.com/users/lahwaacz/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2017-06-27T21:16:35Z","updated_at":"2017-07-04T09:24:08Z","closed_at":null,"body":"As far as I understand, the current stopping criterion used in pyamg is `norm(r_k) / norm(r_0) < eps`, where `eps` is specified with the `tol` parameter of the multigrid solver.\r\n\r\nI understand that setting a fixed tolerance this way is useful to assess the efficiency of the solver regarding how fast the residue is reduced, but it does not provide any indication of how good the resulting approximation actually is. Obviously, if `norm(r_0)` is big, then also `norm(r_k)` will be big for a fixed `eps`. In practice, using `norm(r_k) / (norm(A) norm(x_k) + norm(b))` or at least `norm(r_k) / norm(b)` is much better. In some cases estimates involving `norm(x_k - x_{k-1})` might be useful as well.\r\n\r\nFor pyamg, it would be nice if the user did not have to write `tol=eps * norm(b) / norm(b - A*x0)` or something like that in order to enforce custom criterion. This trick is still insufficient for the last case."},"comment":{"url":"https://api.github.com/repos/pyamg/pyamg/issues/comments/312829401","html_url":"https://github.com/pyamg/pyamg/issues/203#issuecomment-312829401","issue_url":"https://api.github.com/repos/pyamg/pyamg/issues/203","id":312829401,"user":{"login":"lahwaacz","id":1289205,"avatar_url":"https://avatars3.githubusercontent.com/u/1289205?v=3","gravatar_id":"","url":"https://api.github.com/users/lahwaacz","html_url":"https://github.com/lahwaacz","followers_url":"https://api.github.com/users/lahwaacz/followers","following_url":"https://api.github.com/users/lahwaacz/following{/other_user}","gists_url":"https://api.github.com/users/lahwaacz/gists{/gist_id}","starred_url":"https://api.github.com/users/lahwaacz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lahwaacz/subscriptions","organizations_url":"https://api.github.com/users/lahwaacz/orgs","repos_url":"https://api.github.com/users/lahwaacz/repos","events_url":"https://api.github.com/users/lahwaacz/events{/privacy}","received_events_url":"https://api.github.com/users/lahwaacz/received_events","type":"User","site_admin":false},"created_at":"2017-07-04T09:24:08Z","updated_at":"2017-07-04T09:24:08Z","body":"As for the reference for the stopping criterion, see the work of [Zdeněk Strakoš](http://www.karlin.mff.cuni.cz/~strakos/), namely _C.C. Paige and Z. Strakos, Residual and Backward Error Bounds in Minimum Residual Krylov Subspace Methods, SIAM J. Sci. Comput. 23, 6, 2002, pp. 1899-1924._ The preference of `norm(r_k) / (norm(A) norm(x_k) + norm(b))` over `norm(r_k) / norm(r_0)` is mentioned around eq. (5.6), but I believe the whole paper is very interesting."}}
{"actor":{"display_login":"lahwaacz"}}