Metodo de Muller
Metodo de Muller
Metodo de Muller
Método de Muller
Trabajo final presentado por los alumnos de pregado:
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.
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
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA
ℎ0 = 𝑥1 − 𝑥0 ℎ1 = 𝑥2 − 𝑥1
(ℎ0 + ℎ1 )𝑏 − (ℎ0 + ℎ1 )2 𝑎 = ℎ0 𝛿0 + ℎ1 𝛿1
ℎ1 𝑏 − ℎ1 2 𝑎 = ℎ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
−𝑏 ± √𝑏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𝑐
𝑥3 − 𝑥2 =
𝑏 + √𝑏2 − 4𝑎𝑐
Del mismo modo, considerando las dos opciones de más y menos, se tiene
−2𝑐
𝑥3 − 𝑥2 =
𝑏 + 𝑠𝑖𝑔𝑛𝑜 (𝑏)√𝑏2 − 4𝑎𝑐
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
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.
6
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA
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
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
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