finding the roots of a nonlinear equation....faster method than the Newton-Raphson method?
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hossein
el 14 de En. de 2015
Respondida: Hossein
el 14 de En. de 2015
Hi everyone,
I was wondering if there is any other way to find the roots of a nonlinear equation numerically which can be faster that NR-method? If not have you any suggestion for optimizing and choosing the startvalues for NR-method?
tnx in advance,
0 comentarios
Respuesta aceptada
John D'Errico
el 14 de En. de 2015
Why is nothing ever fast enough for us? I think we get spoiled by computers that grow in speed every few years, so we want algorithms to grow even faster. Sorry, but mathematics does not obey Moore's law.
No, you will not find something that is magically better, although there will be some improvements. I would not recommend that you try writing your own code though. You will find professionally written tools in the optimization toolbox that are perhaps more robust to problems. More capable, allowing you to provide constraints, for example. Those tools will have more options, far better than hand written code.
The best thing you can do is provide better starting values, to reduce the probability that your code will diverge. Any optimizer will gain from that. But, no, there is no magic way to choose better starting values for a general problem, especially since you have not even told us anything about the objective. If there were some magic way to choose starting values, it would be used all over.
Of course, you might think, well, why not just approximate your objective with a simple, low order approximation, then solve that to get starting values? But sadly, that is exactly what each iteration of Newton/Raphson does! And any magical higher order method to get better starting values would also require knowledge of the higher order derivatives of your objective. And that will cost more time than you will gain.
So there is no magic, except by your understanding of the problem. If you have knowledge about the parameters for your function, then you should use that information to give better starting values. And if you know nothing about the objective, so have nothing to offer, then your time will be best spent in gaining more understanding about your specific problem. For example, do some reading while you are waiting for N/R iterations to converge. :)
0 comentarios
Más respuestas (1)
Ver también
Categorías
Más información sobre Systems of Nonlinear Equations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!