First of all, thank you very much for your reply.And I still want to add something to the question I raised last time.
1. In the source code for reupdate.cc, I see a comment in the BeginEvaluate function that reads: dosteep_=options_.get(" cg.invert.re.do_steep ").as<bool>(); So I added the setting of true in the cg.invert.re.do_steep position in setting.xml, but an error was reported during running. Does this comment mean that the function of do_steep is only developed internally at present, so it is not available in the release version of votca?
![vot1.png](https://groups.google.com/group/votca/attach/2babad53a70b9/vot1.png?part=0.4&view=1)
2. The basic principles and differences of Steepest decent and newton-raphson methods.
In my personal understanding, the newton-raphson method is an improvement of steepest decent, which is steepest decent using a first-order derivative to minimize a variable x. However, this method usually can not correctly choose the shortest path to make the parameter drop to the lowest point, so it may be repeated in the calculation process, so it is difficult to converge. The NR method adds the second derivative, also known as the hessian matrix, to the SD method to help the parameter x to choose the right direction in the process of minimizing from a certain position to the lowest position, avoiding repeated calculation around the same value, so it can achieve convergence faster.
![vot2.png](https://groups.google.com/group/votca/attach/2babad53a70b9/vot2.png?part=0.5&view=1)
steepest decent method
![vot3.png](https://groups.google.com/group/votca/attach/2babad53a70b9/vot3.png?part=0.2&view=1)
newton-raphson method
From the above understanding, I was thinking, if I set hessian-check = false, it means that in the newton-rephson method, I no longer consider whether the second derivative matrix is positive definite, so only the first derivative matters, Is this somehow equivalent to using steepest decent methods?
3. Hessian-check = false test.
In my own tests, I can add the hessian-check = false setting to this location in setting.xml, and it does work. After I add this setting, I will no longer be unable to run the hessian matrix because it is not definite.
In reupdate.cc, there is a comment in the middle that the newton-raphson method cannot be used in the case of mathematical errors, and that steepest decent could be considered as an alternative, but that steepest decent has not yet been applied in the program.
But in the code that follows, the last line in the screenshot, dlamda = -DS_, means that after hessian-check = false is set, it will run dlamda = -DS_, which is the mathematical form of steepest decent, which has been applied.
So I want to know what does the mathematical formula dlamda = -DS_ mean when it appears here? Is this the steepest decent method that has been perfected? Or is this just a newton-raphson method that doesn't take into account whether the hessian matrix is positive definite? Or is this just a line of test code that doesn't actually run?
These are my questions, best wishes.