Este método te permitirá obtener las raices de una ecuación de cualquier grado, este método tiene la ventaja de que, además de obtener el resultado real, también otorga la parte imaginaría del resultado.
Para implementar el método en MATLAB, debes crear un Script que contenga el siguiente código, este será único script que debes correr.
%programa principal método Muller
fun=@(x)(16*x.^4-40*x.^3+5*x.^2+20*x+6) %La parte en negritas es la que debes sustituir
x=[0.5,-0.5,0] %El dominio en el que quieres que los resultados sean gráficados
N=5 %Corresponde al numero de iteraciones, te recomiendo que sea siempre mayor o igual a 5
P=metodoMuller(fun,x,N)
El siguiente será el código que llevará a cabo todo el proceso matemático, debe ser vaciado en un script distinto y guardado en la misma carpeta que el programa principal.
function P=metodoMuller(fun,x,N)
l=0
f=0;
c=fun(x(3))
b=(((((x(1)-x(3))^2)*(fun(x(2))-fun(x(3))))-((x(2)-x(3))^2)*(fun(x(1))-fun(x(3)))))/((x(1)-x(3))*(x(2)-x(3))*(x(1)-x(2)))
a=(((((x(2)-x(3)))*(fun(x(1))-fun(x(3))))-((x(1)-x(3)))*(fun(x(2))-fun(x(3)))))/((x(1)-x(3))*(x(2)-x(3))*(x(1)-x(2)))
x4=(x(3)-((2*c)/((b)+((b/abs(b))*sqrt((b^2)-(4*a*c))))))
%Scienceprocedures.blogspot.mx
x0=min(x)-1:0.09:max(x)+1
hold on
grid on
plot (x(1),fun(x(1)),'Ok')
hold on
plot (x(2),fun(x(2)),'Ok')
hold on
plot (x(3),fun(x(3)),'Ok')
hold on
plot(x0,fun(x0),'b')
hold on
for i=1:1:N
if i==N
plot (x0,R(x0),'+r')
hold on
end
c=fun(x(3))
b=(((((x(1)-x(3))^2)*(fun(x(2))-fun(x(3))))-((x(2)-x(3))^2)*(fun(x(1))-fun(x(3)))))/((x(1)-x(3))*(x(2)-x(3))*(x(1)-x(2)))
a=(((((x(2)-x(3)))*(fun(x(1))-fun(x(3))))-((x(1)-x(3)))*(fun(x(2))-fun(x(3)))))/((x(1)-x(3))*(x(2)-x(3))*(x(1)-x(2)))
x4=(x(3)-((2*c)/((b)+((b/abs(b))*sqrt((b^2)-(4*a*c))))))
x(1)=x(2)
x(2)=x(3)
x(3)=x4;
x0=min(x)-1:0.09:max(x)+1
R=@(x0)((a*((x0-x(3)).^2))+(b*(x0-x(3)))+c)
C=['k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m','k','b','y','g','r','m',]
plot (x0,R(x0),C(i))
hold on
end
P=x(3)
plot (P,R(P),'*r')
end
Nota importante: Ten cuidado al escribir la ecuación cuya raíz deseas encontrar, observa, como en el ejemplo, que es necesario poner un punto antes del signo "^" para que el programa funcione apropiadamente.
Si piensas utilizar el código anterior para propósitos no académicos, te pido que incluyas un link a esta pagina web.
Suscribirse a:
Enviar comentarios (Atom)
Archivo del blog
-
►
2020
(1)
- ► 08/23 - 08/30 (1)
-
►
2019
(1)
- ► 01/20 - 01/27 (1)
-
▼
2015
(17)
- ► 12/06 - 12/13 (2)
- ► 11/29 - 12/06 (1)
- ► 11/22 - 11/29 (1)
- ▼ 11/15 - 11/22 (5)
- ► 11/08 - 11/15 (3)
- ► 11/01 - 11/08 (1)
- ► 10/25 - 11/01 (4)
crack maquina fiera mastodonte leyenda QUE BUEN CODIGO :V
ResponderEliminarExcelente código muy completo, cómo se modificaría para que almacenara los valores que se van tomando?
ResponderEliminar