Hi Johannes,
this example is very helpful. In fact, rank() is very conservative. In this example Z22 = -0.999244236490726 0.038871015423655 -0.000000000000000 0.000000000000002
and Matlab still reports rank(Z22)=2 because the smallest singular value is 1.5e-15 when the tolerance is 1.44e-16.
So, you are right, it is important to use the same criterium when using check or computing the full first order solution. As we use rcond() > 1e-9, for the second, we should use the same for the first one. I will make the change and we should back port it into 4.3
The previous discussion to which you are alluding if a bit different and has to do with the way to compute eigenvalues. For the full solution, we compute the eigenvalues of the reordered real generalized Schur decomposition, for check, in Matlab, we report the eigenvalues on the basis of the real generalized Schur decomposition without reordering.
It is true that reodering the eigenvalues implies a small loss of accuracy when computing them (not in this small example). But, I'm changing my mind since our last discussion and I think that we should report the eigenvalues in the reordered Schur decomposition. In most cases, it doesn't make any difference and in the borderline cases, that are any way pathological, it is probably better to report exaclty the eigenvalues that are us compute (or fail to compute) the full solution. So I will change that as well. If you protest strong enough, we can always revert the change, but we should not back port it into 4.3.
Best,
Michel
On 09/10/2012 11:18 AM, Johannes Pfeifer wrote:
Hi all,
sorry for bothering you again with this issue, but I still think it is extremely unfortunate to base the printout of errors and the display of check on different criteria. This results in user problems like:
http://www.dynare.org/phpBB3/viewtopic.php?f=1&t=4049 http://www.dynare.org/phpBB3/viewtopic.php?f=1&t=4049
In this post, there is rank deficiency, which is correctly detected by Dynare, but the output of check does not state this. If I remember correctly, some time ago Michel argued that this behavior is desired, but I can't remember the argument. I personally find this behavior confusing and would suggest to open a ticket making the behavior consistent.
Best,
Johannes
Johannes Pfeifer
Haußerstr. 29
72076 Tübingen
Tel.: +49-(0)7071-6396184
Mobil: +49-(0)170-6936820
jpfeifer@gmx.de
Dev mailing list Dev@dynare.org https://www.dynare.org/cgi-bin/mailman/listinfo/dev