-
Notifications
You must be signed in to change notification settings - Fork 141
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Chebop/linop convergence has gone awry #951
Comments
Yes indeed. I have been slow in achieving convergence on guide10.m because of this. |
Both of these examples work for me in development in I switch to either This suggests to me that |
I'm not saying we're wrong to revert...but there were complaints of overly long solutions when we were using plateauCheck. I'm concerned about running around in circles. EDIT: Logically, either I did not really reproduce V4 functionality in the Check, or something else is responsible for variation from V4 experience. And linopV4Check is a pretty simple function. The only intentional difference is for system problems. |
Tonight, when I use the devel branch, the Carrier example above is already fine. If I switch to plateauCheck, both of these are fine. But the orrsomm test fails. We can fix that with a tolerance increase. However, the reason for the failure is instructive. Because it's more skeptical, plateauCheck demands larger values of N. These cause the lower coefficients to get a lot more polluted (by poor conditioning, I guess). So aggressive truncation can be more accurate, not less. And if ultraS is as fast as collocation, we might make it the default. |
In response to your last comment, I agree that in some cases aggressive truncation can be more accurate. However, I'm not sure that's the case most of the time. Even if I'm wrong, it's certainly true that aggressive truncation can be less accurate, too. I don't think we're going to converge on this in the next 12 hours (pun intended), but I think the philosophy of One final note: I think it's more important that these iterations converge than that we're put off by having powers of two in the solution. |
This is the output I get from running the undamped Carrier problem in v4, using the same code for controlling the output:
The norms of the updated look identical to the output I posted for the results from e31a3c up until the 10th iteration, and then there is ever so slight change in the 11th iteration, which at least is quite comforting. The lengths of the update evolve in a much better behaved manner than the output I posted for development, where the jump really quickly from 256 -> 128 -> 32. So there appears to be a clear mismatch going on between v4 and the |
In the near future we should move more of these challenging problems into the test suite. (Preferably with true error checking and not residual checking.) I think the plateauCheck idea can be tweaked, but you're always making decisions that are likely to be contradicted by another example. We don't (for speed reasons?) have a lot of tests of highly oscillatory problems, where you could get a plateau followed by real convergence. Capturing that while also giving up appropriately for a noise plateau is a tricky balance. More fundamental thinking is needed, as we know. |
I'm confused. Even with #969 merged, I still get the following output for the undamped Carrier problem I posted above:
This behaviour keeps showing up all over the place. |
The problem always seems to occur just as there's a drop in the length of the update. |
This works fine on development now. Just awaiting a test. |
It seems that recent changes in linop convergence decisions have destroyed a lot of the convergence behaviour for Newton iteration once we're close to the solution. This is definitely related to #898, and perhaps other pull requests. On e31a3c, which I think was a point I still was happy, running the following problem (Carrier eqn. with damping off):
gave me the following output:
If I run the same on development, changing
options.damped
tooptions.damping
, I getSimilarly, solving the van der Pol demo from the GUI:
gives the following back when I was happy:
But now I get:
The text was updated successfully, but these errors were encountered: