Sei sulla pagina 1di 10

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA

Método de Muller
Trabajo final presentado por los alumnos de pregado:

Del Valle Chapoñan Ricardo David


Quito Cespedes Luis Angel

Lima, noviembre de 2018


UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA

Introducción
El método de Muller es utilizado para encontrar raíces de una función, y consiste
en obtener los coeficientes de las parábolas que pasa por tres puntos elegidos.
Dichos coeficientes son sustituidos en la fórmula cuadrática para obtener el valor
donde la parábola interseca al eje X; es decir, la raíz estimada.
Una de las mayores ventajas de este método, es que al trabajar con la formula
cuadrática es posible localizar tanto raíces reales, como raíces complejas.

Presentación del método


Recuerde que el método de la secante obtiene una aproximación de la raíz
dirigiendo una línea recta hasta el eje X con dos valores de la función. El método
de Muller es similar, pero se construye una parábola tomando tres puntos.

Figura 1
Comparación de dos métodos para obtener raíces aproximadas.

Al ser tres valores iniciales, lo que se hace es calcular la parábola que pasa por
las tres. Consideremos que queremos calcular las raíces de

𝑓 (𝑥) = 𝑎𝑛 𝑥 𝑛 + 𝑎𝑛−1 𝑥 𝑛−1 +. . . +𝑎1 𝑥 + 𝑎0

La ecuación de dicha parábola puede escribirse como:

𝑓 (𝑥) = 𝑎(𝑥 − 𝑥2 )2 + 𝑏(𝑥 − 𝑥2 ) + 𝑐

1
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA

Donde dicha parábola de grado 2 está centrado en 𝑥2 , es decir; se considera


como base 𝐵 = {1, 𝑥 − 𝑥2 , (𝑥 − 𝑥2 )2 }, en detrimento de la base canónica 𝐵 ′ =
{1, 𝑥, 𝑥 2 }.
Para saber cuál es la raíz aproximada, debemos calcular los coeficientes a, b, c,
que los podemos determinar con la ecuación de la parábola que pasa por los
puntos (𝑥0 , 𝑓(𝑥0 )), (𝑥1 , 𝑓(𝑥1 )), (𝑥2 , 𝑓(𝑥2 )). Si sustituimos los tres puntos en 𝑓(𝑥),
obtenemos el siguiente sistema no lineal a resolver.

𝑓 (𝑥0 ) = 𝑎(𝑥0 − 𝑥2 )2 + 𝑏(𝑥0 − 𝑥2 ) + 𝑐


{ 𝑓 (𝑥1 ) = 𝑎(𝑥1 − 𝑥2 )2 + 𝑏(𝑥1 − 𝑥2 ) + 𝑐
𝑓 (𝑥2 ) = 𝑎(𝑥2 − 𝑥2 )2 + 𝑏(𝑥2 − 𝑥2 ) + 𝑐

Debido a que dos términos de la ecuación 𝑓(𝑥2 ) son cero, se encuentra


inmediatamente que 𝑐 = 𝑓(𝑥2 ). Con este resultado, sustituimos en las otras dos
ecuaciones para obtener:

𝑓(𝑥0 ) − 𝑓(𝑥2 ) = 𝑎(𝑥0 − 𝑥2 )2 + 𝑏(𝑥0 − 𝑥2 )


𝑓(𝑥1 ) − 𝑓(𝑥2 ) = 𝑎(𝑥1 − 𝑥2 )2 + 𝑏(𝑥1 − 𝑥2 )
Una manipulación algebraica permite encontrar los coeficientes restantes a y
b. La manera de hacer esto, consiste en definir las diferencias:

ℎ0 = 𝑥1 − 𝑥0 ℎ1 = 𝑥2 − 𝑥1

𝑓(𝑥1 )−𝑓(𝑥0 ) 𝑓(𝑥2 )−𝑓(𝑥1 )


𝛿0 = 𝛿1 =
𝑥1 −𝑥0 𝑥2 −𝑥1

Estas se sustituyen en las dos ecuaciones anteriores, para dar

(ℎ0 + ℎ1 )𝑏 − (ℎ0 + ℎ1 )2 𝑎 = ℎ0 𝛿0 + ℎ1 𝛿1

ℎ1 𝑏 − ℎ1 2 𝑎 = ℎ1 𝛿1

de donde se despejan a y b. Por lo tanto, el resultado de los dos coeficientes es:


𝛿1 − 𝛿0
𝑎=
ℎ1 − ℎ0
𝑏 = 𝑎ℎ1 + 𝛿1

2
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA

Una vez calculado los coeficientes del polinomio 𝑓(𝑥), debemos calcular la
primera aproximación de la raíz, por lo que ahora, calcularemos el punto (𝑥3 , 0)
en el polinomio 𝑓(𝑥), es decir
𝑓 (𝑥3 ) = 𝑎(𝑥3 − 𝑥2 )2 + 𝑏(𝑥3 − 𝑥2 ) + 𝑐 = 0

Aplicando la fórmula general para la obtención de raíces se tiene:

−𝑏 ± √𝑏2 − 4𝑎𝑐
𝑥3 − 𝑥2 =
2𝑎

Sin embargo, debido a los problemas del error de redondeo ocasionados por la
sustracción de números casi iguales, se racionalizará de la siguiente manera:

(−𝑏 + √𝑏2 − 4𝑎𝑐)(−𝑏 − √𝑏2 − 4𝑎𝑐) 𝑏2 − 𝑏2 + 4𝑎𝑐


𝑥3 − 𝑥2 = =
2𝑎(−𝑏 − √𝑏2 − 4𝑎𝑐) 2𝑎(−𝑏 − √𝑏2 − 4𝑎𝑐)

−2𝑐
𝑥3 − 𝑥2 =
𝑏 + √𝑏2 − 4𝑎𝑐

Del mismo modo, considerando las dos opciones de más y menos, se tiene

−2𝑐
𝑥3 − 𝑥2 =
𝑏 + 𝑠𝑖𝑔𝑛𝑜 (𝑏)√𝑏2 − 4𝑎𝑐

En el método de Muller, el signo se elige de modo que corresponda al signo de


b. De esa forma, el determinante será el de mayor magnitud y hará que 𝑥3 sea
seleccionado como la raíz de 𝑓 que está más cercana a 𝑥2 .
Observe que, al usar la fórmula cuadrática, es posible localizar tanto las raíces
reales como las complejas. Ésta es la mayor ventaja del método.
Además, dicha ecuación racionalizada, proporciona una forma directa para
determinar el error de aproximación. Debido a que el lado izquierdo representa
la diferencia entre la raíz estimada (𝑥3 ) y la raíz anterior (𝑥2 ), el error se calcula
como

3
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA

𝑥3 − 𝑥2
𝐸𝑎 = | | 100%
𝑥3
Una vez que determinamos 𝑥3 , reiniciamos el procedimiento usando 𝑥1 , 𝑥2 , 𝑥3
en vez de 𝑥0 , 𝑥1 , 𝑥2 para obtener la siguiente aproximación, 𝑥4 . El método
prosigue hasta que se logra una conclusión satisfactoria.

Código en Octave
function muller(f,x0,x1,x2,e)
fx=inline(f);
k=0;
sigue=1;
T=[0 0 0 0 0];
while(sigue)
k=k+1;
h0=x1-x0;
h1=x2-x1;
d0=(fx(x1)-fx(x0))/h0;
d1=(fx(x2)-fx(x1))/h1;
a=(d1-d0)/(h1+h0);
b=a*h1+d1;
c=fx(x2);
raizd=sqrt(b*b-4*a*c);
if abs(b+raizd)>abs(b-raizd)
den=b+raizd;
else
den=b-raizd;
endif
dxr=-2*c/den;
xr=x2+dxr;
sigue=abs(dxr)/xr>e || k<c || abs(fx(xr))>e;
x0=x1;
x1=x2;
x2=xr;
T=[T; k x0 x1 x2 fx(x2)];
end
fprintf('El metodo tuvo exito despues de %d iteraciones \n',k);
fprintf('Resultados obtenidos: \n');
fprintf(' iteraciones x(k-2) x(k-1) xk fx(xk) \n');
disp(T);
fprintf('\n Raiz aproximada: %f', x2);

4
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA

Aplicaciones
1) Encontrar una solución de la ecuación 𝑒 −𝑥 − 𝑥 = 0.
Solución:
Definimos en primer lugar la función 𝑓(𝑥) = 𝑒 −𝑥 − 𝑥 = 0. Observemos que la
función es continua en el conjunto de los números reales y si damos valores
observamos que:
𝑓(0) = 1
𝑓(1) = 𝑒 −1 − 1 < 0
Por tanto existirá una solución a la ecuación 𝑓(𝑥) = 0en el intervalo [0;1].
Por lo tanto partimos de los siguientes datos:
𝑥0 = 0 ; 𝑥1 = 1 ; 𝑥2 = 0,5
Calculando para:
ℎ0 = 𝑥1 − 𝑥0 = 1
ℎ1 = 𝑥2 − 𝑥1 = −0.5

𝑓(𝑥1 ) − 𝑓(𝑥0 ) 𝑓(𝑥2 ) − 𝑓(𝑥1 )


𝛿0 = = −1.63212 ; 𝛿1 = = −1.4773
𝑥1 − 𝑥0 𝑥2 − 𝑥1

Los coeficientes para la parábola son:


𝛿1 − 𝛿0
𝑎= = −0.10321
ℎ1 − ℎ0
𝑏 = 𝑎ℎ1 + 𝛿1 = −1.425695
𝑐 = 𝑓(𝑥2 ) = 0.10653
Por lo tanto la tercera aproximación viene dada por:
−2𝑐
𝑥3 = 𝑥2 + = 0.57432
𝑏 − √𝑏 2 − 4𝑎𝑐
Por lo que tenemos:
𝑥0 = 0
𝑥1 = 1
𝑥2 = 0.5
𝑥3 = 0.57432

5
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA

𝑥4 = 0.567287083
Si resolvemos la ecuación con el programa nos dará:
P=0.567143…
Por lo que observamos que el método de Muller converge rápidamente a la raíz
de la ecuación.

Resolviendo con código Octave


muller('exp(-x)-x',0,1,0.5,0.00001)
El metodo tuvo exito despues de 3 iteraciones
Resultados obtenidos:
Iteraciones X0 X1 X2 Fx(X2)
0.00000 0.00000 0.00000 0.00000 0.00000
1.00000 1.00000 0.50000 0.56610 0.00163
2.00000 0.50000 0.56610 0.56714 0.00000
3.00000 0.56610 0.56714 0.56714 -0.00000

Raiz aproximada: 0.567143

2) Aplicar el método de Muller para encontrar una solución de la ecuación


𝑓(𝑥) = 𝑥 3 − 13𝑥 − 12 en los valores de 𝑥0 = 4.5, 𝑥1 = 5.5, 𝑥2 = 5.0
Solución:
Partimos de los siguientes datos:
𝑥0 = 4.5 ; 𝑥1 = 5.5 ; 𝑥2 = 5
Calculando para:
ℎ0 = 𝑥1 − 𝑥0 = 1
ℎ1 = 𝑥2 − 𝑥1 = −0.5

𝑓(𝑥1 ) − 𝑓(𝑥0 ) 𝑓(𝑥2 ) − 𝑓(𝑥1 )


𝛿0 = = 62.25 ; 𝛿1 = = 69.75
𝑥1 − 𝑥0 𝑥2 − 𝑥1

6
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA

Los coeficientes para la parábola son:


𝛿1 − 𝛿0
𝑎= = 15
ℎ1 − ℎ0
𝑏 = 𝑎ℎ1 + 𝛿1 = 62.25
𝑐 = 𝑓(𝑥2 ) = 48
Por lo tanto la tercera aproximación viene dada por:
−2𝑐
𝑥3 = 𝑥2 + = 3.9765
𝑏 − √𝑏 2 − 4𝑎𝑐
El error estimado es:
𝑥𝑛 − 𝑥𝑛−1
𝜀𝑛 = | | ∗ 100% = 25.74%
𝑥𝑛

Por ser el error muy grande, se procedería a repetir el proceso n veces. Por lo
tanto, resolviendo con código Octave:
muller('x^3-13*x-12',4.5,5.5,5,0.00001)
El metodo tuvo exito despues de 4 iteraciones
Resultados obtenidos:

Iteraciones X0 X1 X2 Fx(X2)
0.00000 0.00000 0.00000 0.00000 0.00000
1.00000 5.50000 5.00000 3.97649 -0.81633
2.00000 5.00000 3.97649 4.00105 0.03678
3.00000 3.97649 4.00105 4.00000 0.00002
4.00000 4.00105 4.00000 4.00000 0.00000

Raiz aproximada: 4.000000

3) Hallar una raíz aproximada de la función 𝑓 (𝑥) = 16𝑥 4 − 40𝑥 3 + 5𝑥 2 + 20

Solución:
Utilizando el código Muller en octave, en los puntos 0.5, -0.5 y 0, se obtiene la
siguiente raíz:

7
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA

muller('16*x^4-40*x^3+5*x^2+20*x+6',0.5,-0.5,0,0.00001)
El metodo tuvo exito despues de 7 iteraciones
Resultados obtenidos:
Iteraciones X0 X1 X2 Fx(X2)
0.00000 + 0.00000 + 0.00000 + 0.00000 +
0.00000
0.00000i 0.00000i 0.00000i 0.00000i
-0.50000 + 0.00000 + -0.55556 - -29.40070 +
1.00000
0.00000i 0.00000i 0.59835i 3.89872i
0.00000 + -0.55556 - -0.43545 - 1.33222 +
2.00000
0.00000i 0.59835i 0.10210i 1.19310i
-0.55556 - -0.43545 - -0.39063 - 0.37506 +
3.00000
0.59835i 0.10210i 0.14185i 0.67017i
-0.43545 - -0.39063 - -0.35770 - -0.14675 +
4.00000
0.10210i 0.14185i 0.16993i 0.00745i
-0.39063 - -0.35770 - -0.35605 - -0.00184 -
5.00000
0.14185i 0.16993i 0.16286i 0.00054i
-0.35770 - -0.35605 - -0.35606 - 0.00000 -
6.00000
0.16993i 0.16286i 0.16276i 0.00000i
-0.35605 - -0.35606 - -0.35606 - -0.00000 -
7.00000
0.16286i 0.16276i 0.16276i 0.00000i

Raiz aproximada: -0.35606 - 0.16276i

8
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA

Bibliografía
Steven C. Chapra. (2007). Métodos Numéricos para ingenieros. México DF:
McGraw-Hill Interamericana.
Juan Antonio Infante Del Río y Jose María Rey Cabezas (2007). Métodos
Numéricos Teoría, problemas y prácticas con MATLAB. Ediciones Pirámide, 3
edición. ISBN 978-84-368-2090-4.
Richard L.B., J. Douglas (2011). Análisis Numérico. México: Parainfo. ISBN:
978-607-481-663-1.
Cristobal López Silla. Resolución de ecuaciones, métodos iterativos.
https://es.scribd.com/document/190929144/Calculo-Raices-Con-Octave

Potrebbero piacerti anche