Crear el m-file para el método de la secante para encontrar raíces de ecuaciones no lineales.
Usar como base el método de Newton Raphson.
Probar el método usando las funciones:
- f(x) = sen (x),
- f(x) = sen(x) + 3x – 5,
Usar una tolerancia es del 0.005 %
- Método de Newton – Raphson
Número máximo de iteraciones: 100
Fórmula |
Valor inicial estimado | Solución | No. iteraciones | Error aproximado % |
y=sin(x) |
2.5 |
3.14159265358979 |
5 |
6.4097e-010 |
y=sin(x)+3x-5 | 1 | 1.34201856313019 | 4 |
0.0024394 |
- Método de la secante
Número máximo de iteraciones: 100
Fórmula |
Valor inicial Xn | Valor inicial Xn-1 | Solución | No. iteraciones |
Error aproximado % |
y=sin(x) |
3.5 | 2.5 | 3.14159265358979 | 5 | 1.5061e-007 |
y=sin(x)+3x-5 | 2 | 1 | 1.34201857646419 | 5 |
0.0016196 |
Código Secante
* * * * secante.m * * * * *
[c]
% Obtención de raices de funciones por el método de la Secante
disp (‘OBTENCIÓN DE RAICES DE FUNCIONES USANDO EL METODO DE LA SECANTE’);
etol = input (‘Error de tolerancia: ‘);
nmax = input (‘Número máximo de iteraciones: ‘);
xn = input (‘Valor estimado de la raiz (Xn)): ‘);
xnmenos1 = input (‘Valor estimado de la raiz (Xn-1)): ‘);
ea=100;
i=1;
while (ea > etol) & (i < nmax)
fxn = funcion(xn);
fxnmenos1=funcion(xnmenos1);
dfxn = funcion_derivada(xn);
xnmas1 = xn – ((fxn*(xn-xnmenos1))/(fxn-fxnmenos1));
ea = abs((xnmas1 – xn)/xnmas1)*100;
xnmenos1=xn;
xn = xnmas1;
i=i+1;
end
if (i<nmax)
disp ([‘La solución es: ‘,num2str(xnmas1,15)]);
disp ([‘El error aproximado porcentual es: ‘,num2str(ea)]);
disp ([‘El número de iteraciones fue: ‘,num2str(i)]);
else
disp (‘Se rebasó el número máximo de iteraciones.’);
end
[/c]
* * * * * funcion.m * * * * *
[c]
function y = funcion(x)
y = sin(x);
[/c]
* * * * * funcion_derivada.m * * * * *
[c]
function y=funcion_derivada(x)
y = cos(x);
[/c]