Página web del curso

Método de Regula-Falsi

El método de la Regula-Falsi se puede considerar un híbrido del método de Bisección con el método de la Secante.

  • Empezamos con una función $f$, y dos puntos iniciales $a$ y $b$ que cumplan las condiciones del teorema de Bolzano, como en Bisección.
  • En cada iteración calculamos un punto nuevo $c$ con la misma fórmula que la Secante, a partir de los dos puntos anteriores.
  • Descartamos uno de los dos puntos de la iteración anterior usando los mismos criterios que para Bisección, es decir, nos quedamos con los dos puntos para los cuales la función cumple el teorema de Bolzano.

La fórmula para calcular la siguiente iteración con el método de la secante es

$$x_k=x_{k-1}-f(x_{k-1})\dfrac{x_{k-1}-x_{k-2}}{f(x_{k-1})-f(x_{k-2})}$$

En el método de la Regula-Falsi, el punto siguiente es

$$c = b - f(b)\frac{b-a}{f(b)-f(a)}=\frac{b f(b)-b f(a)-b f(b)+a f(b)}{f(b)-f(a)}=\frac{a\,f(b)-b\,f(a)}{f(b)-f(a)}$$

Algoritmo

  • Sea $a_1=a$, $b_1=b$.
  • Para $k=1,2,\ldots,\mathrm{MaxNumIter}$
    • Calcular el punto $x_k=\dfrac{a_k\,f(b_k)-b_k\,f(a_k)}{f(b_k)-f(a_k)}$.
    • Si $x_k$ satisface el criterio de parada, parar.
    • En el caso contrario,
      • si $f(a_k)f(x_k)<0$ entonces:

        $ a_{k+1}=a_{k},$ $ b_{k+1}=x_k,$

      • si $f(x_k)f(b_k)<0$ entonces:

        $ a_{k+1}=x_{k},$ $ b_{k+1}=b_k.$

      • en otro caso:

        acabar.

Inconvenientes

  • Converge más lentamente que el método de la Secante, ya que el orden de convergencia es 1.
  • El intervalo que contiene la raíz no siempre disminuye de longitud de forma significativa con las iteraciones, como en Bisección. Por lo tanto, su longitud no es una buena cota de error.

Ventajas

  • A diferencia del método de la secante, para el método de Regula-Falsi, si se cumplen las condiciones de Bolzano, la convergencia está garantizada.
  • Al igual que el método de la secante, no necesita derivada.

Ejercicio

Aproximar utilizando el método de la Regula-Falsi $r=\sqrt{3}.$ Utilizar el intervalo inicial $[1,2]$. Realizar 3 iteraciones.Calcular el residuo. Dar una cota del error cometido al calcular esta raíz. ¿Es una buena cota?¿Por qué?


Aproximar utilizando el método de la Regula-Falsi $r=\sqrt{3}.$ Utilizar el intervalo inicial $[1,2]$. Realizar 3 iteraciones.

Nuestra ecuación es

$$x=\sqrt{3} \quad \Rightarrow \quad x^2=3 \quad \Rightarrow \quad x^2-3=0$$

Por lo tanto $f(x)=x^2-3$

La sucesión que genera regula-falsi utiliza la fórmula

$$x_k=\dfrac{a_k\,f(b_k)-b_k\,f(a_k)}{f(b_k)-f(a_k)}$$

Iteraciones

Iteración 1

El intervalo es $[1,2]$ y el punto siguiente es

$$c = \frac{a\,f(b)-b\,f(a)}{f(b)-f(a)}= \frac{1(2^2-3)-2\,(1^2-3)}{(2^2-3)-(1^2-3)}=\frac{1+4}{1+2}= \frac{5}{3}=1.666667$$

Como $f(1.666667)=-0.22$, $f(2)=1$ tienen signo distinto el siguiente intervalo es $[1.666667,2]$.

Iteración 2

El intervalo es $[1.666667,2]$ y el siguiente punto intermedio es

$$c =\frac{1.666667(2^2-3)-2\,(1.666667^2-3)}{(2^2-3)-(1.666667^2-3)}=1.727273$$

Como $f(1.727273)=-0.02$, $f(2)=1$ tienen signo distinto el siguiente intervalo es $[1.727273,2]$.

Iteración 3

El intervalo es $[1.727273,2]$ y el siguiente punto intermedio es

$$c = \frac{1.727273(2^2-3)-2\,(1.727273^2-3)}{(2^2-3)-(1.727273^2-3)}=1.731707$$
\begin{array}{|r|rrr|rrr|r|} \hline \mathrm{iteraci\acute{o}n} & a & c & b & f(a) & f(c) & f(b) & \mathrm{cota}\; \mathrm{error}\\ \hline 1 & 1.000000 &{\color{red}{1.666667}} &{\color{blue}{2.0}} & -2.00 &{\color{red}{-0.222}} & {\color{blue}{1.0}} & 0.333333\\ 2 & 1.666667 &{\color{red}{1.727273}} &{\color{blue}{2.0}} & -0.22& {\color{red}{-0.017}} & {\color{blue}{1.0}} & 0.272727\\ 3 & 1.727273 &{\color{red}{1.731707}} &{\color{blue}{2.0}} & -0.02 &{\color{red}{-0.001}} & {\color{blue}{1.0}} & 0.268293\\ \hline \end{array}

Calcular el residuo.

El valor de la función en la raíz es cero. El valor de la función en la aproximación se llama residuo y, si es una buena aproximación, es un número pequeño

$$r =|f(x_3)|=|1.731707^2-3|=0.001$$

El residuo en el paso $k$, es conocido, mientras que el error es desconocido (necesitamos la raíz exacta, que es lo que estamos buscando).

Como $\alpha= 1.732051$ el error absoluto es

$$e_a = |x_3-\alpha|=|1.731707-1.732051|=0.0003$$

Dar una cota del error cometido al calcular esta raíz. ¿Es una buena cota?¿Por qué?

En la tabla hemos calculado una cota del error cometido. Esta, como en el método de Bisección, viene dada por la longitud del último intervalo. Pero en el caso de la regula-falsi, no es muy util porque, en muchos casos (como este) la longitud del intervalo no disminuye significativamente conforme nos acercamos a la raíz porque el método crea una sucesión que, a partir de cierto momento, se acerca a la raíz siempre desde la izquierda o siempre desde la derecha.

Así, la cota final es aproximadamente 0.28 que es muy distinta del error 0.0003 y, por lo tanto, no aporta información relevante.


Teniendo en cuenta que la raíz que buscamos es $\alpha= 1.732051$ comparemos los tres métodos que hemos usado para resolver este problema

\begin{array}{|cccc|} \hline k & \mathrm{Newton} & \mathrm{Secante} & \mathrm{Regula-Falsi}\\ \hline 1 & 2.000000 & 1.666667 & 1.666667\\ 2 & 1.750000 & 1.727273 & 1.727273\\ 3 & 1.732143 & 1.732143 & 1.731707\\ \hline \end{array}

En este caso, hemos obtenido los mismos resultados con los métodos de Newton y la Secante. Regula-Falsi obtiene unos resultados un poco peores pero bastante buenos.