Today, it is found that the terminating condition of the iterative process was incorrectly written, and should be terminated when the gradient value is less than a certain value, instead of the gradient value +hessian* increment less than a certain value terminates. Because the increment itself is to solve the gradient value + Hessian * x = 0 To get the ah ...
After the change, the number of iterations increases significantly and the simulation speed becomes slower.
The user should be allowed to set the iteration termination threshold to control the simulation accuracy.
However, the most important problem is that when multiple parameters are found, the result of the simulation is incorrect.
In the current example of a cylindrical bend, the value of the angle increases to about 20 degrees, and the bending value is locked to 0 for no reason.
If one of the parameters is disabled (the method is multiplied by 0), the simulation is normal, but if the animation is too fast, there will be an unstable situation.
The next step is to identify the cause of the simulation error. Now there are a few guesses:
1. Hessian error, before the independent parameters of the Hessian, but did not measure the relevant parameters of the Hessian.
2. Gradient is not continuous?
3. Solving the equation of increment is morbid. The current variable is no longer arbitrarily growing, but the move is not moving.
There is no ready-made method for dealing with this situation.
Newton's law continues to be unstable.