En análisis numérico , el método de Ridders es un algoritmo de búsqueda de raíces basado en el método de posición falsa y el uso de una función exponencial para aproximar sucesivamente una raíz de una función continua . El método se debe a C. Ridders. [1] [2]![{\displaystyle f(x)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
El método de Ridders es más simple que el método de Muller o el método de Brent pero con un rendimiento similar. [3] La siguiente fórmula converge cuadráticamente cuando la función se comporta bien, lo que implica que el número de dígitos significativos adicionales encontrados en cada paso aproximadamente se duplica; pero la función debe evaluarse dos veces para cada paso, por lo que el orden general de convergencia del método es . Si la función no se comporta bien, la raíz permanece entre corchetes y la longitud del intervalo entre corchetes se reduce al menos a la mitad en cada iteración, por lo que se garantiza la convergencia. ![{\displaystyle {\sqrt {2}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Método
Dados dos valores de la variable independiente, y , que están en dos lados diferentes de la raíz que se busca, es decir,, el método comienza evaluando la función en el punto medio . Luego se encuentra la función exponencial única tal que la función satisface . Específicamente, el parámetro está determinado por![{\displaystyle x_{0}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle x_{2}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle f(x_{0})f(x_{2})<0}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle x_{1}=(x_{0}+x_{2})/2}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle e^{ax}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle h(x)=f(x)e^{ax}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle h(x_{1})=(h(x_{0})+h(x_{2}))/2}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle a}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle e^{a(x_{1}-x_{0})}={\frac {f(x_{1})-\operatorname {signo} [f(x_{0})]{\sqrt { f(x_{1})^{2}-f(x_{0})f(x_{2})}}}{f(x_{2})}}.}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Luego se aplica el método de posición falsa a los puntos y , lo que lleva a un nuevo valor entre y , ![{\displaystyle (x_{0},h(x_{0}))}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\ Displaystyle (x_ {2}, h (x_ {2}))}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle x_{3}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle x_{0}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle x_{2}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle x_{3}=x_{1}+(x_{1}-x_{0}){\frac {\operatorname {signo} [f(x_{0})]f(x_{1})} {\sqrt {f(x_{1})^{2}-f(x_{0})f(x_{2})}}},}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
que se utilizará como uno de los dos valores entre corchetes en el siguiente paso de la iteración.
El otro valor entre corchetes se considera if (caso de buen comportamiento), o en caso contrario, cualquiera de y tiene un valor de función de signo opuesto a . El procedimiento puede finalizarse cuando se obtiene una precisión determinada. ![{\displaystyle x_{1}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle f(x_{1})f(x_{3})<0}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle x_{0}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle x_{2}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\ Displaystyle f (x_ {3})}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Referencias
- ^ Ridders, C. (1979). "Un nuevo algoritmo para calcular una raíz única de una función continua real". Transacciones IEEE sobre circuitos y sistemas . 26 (11): 979–980. doi :10.1109/TCS.1979.1084580.
- ^ Kiusalaas, Jaan (2010). Métodos numéricos en ingeniería con Python (2ª ed.). Prensa de la Universidad de Cambridge. págs. 146-150. ISBN 978-0-521-19132-6.
- ^ Prensa, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007). "Sección 9.2.1. Método de Ridders". Recetas numéricas : el arte de la informática científica (3ª ed.). Nueva York: Cambridge University Press. ISBN 978-0-521-88068-8.