Professional Documents
Culture Documents
INGENIERÍA EN SISTEMAS
Loja- Ecuador
MÉTODO DE LA SECANTE
Al ser un método abierto, converge con la raíz con una velocidad semejante a
la de Newton-Raphson, aunque de igual forma corre el riesgo de no converger
con esta nunca.
Consideremos la curva y=f(x), y la recta que pasa por los puntos A(a,f(a)) y
B(b,f(b)). Si la función continua y=f(x) es tal que f(x)=0 posee una única raíz a
en el intervalo (a,b), y f(a) y f(b) tienen signos opuestos, la cuerda AB cortará al
eje OX en un punto X1 del intervalo (a,b), que junto con A ó B formará el nuevo
intervalo (a1,b1).
Este método, a diferencia del de bisección y regla falsa, casi nunca falla ya que
solo requiere de 2 puntos al principio, y después el mismo método se va
retroalimentando.
B=((Af(C))-(C(f(A)))/(f(C)-f(A)).
A diferencia del resto de los métodos, aquí no hay que acomodar en columnas
cada uno de los datos, sino que se utiliza la simplificación de conceptos y como
se simplifica la fórmula para seguir con el método.
Ejemplo
Método de la Secante
El método de la secante es un método que permite evaluar las raices de
funciones cuya derivada es difícil de calcular. En dichos casos, la derivada se
puede aproximar mediante una diferencia nita dividida hacia atrás. Y se obtiene
de este modo la siguiente fórmula iterativa.
Código
function [p1,y1,err,P] = secant(p0,p1,delta,max1)
f = input("ingrese f(x): ", "s");
f = inline(f);
epsilon = 1.0842e-19;
P(1) = p0;
P(2) = p1;
P(3) = 0;
P(4) = 0;
P(5) = 0;
P(6) = 0;
y0 = feval(f,p0);
y1 = feval(f,p1);
for k=1:max1,
df = (y1-y0)/(p1-p0);
if df == 0,
dp = 0;
else
dp = y1/df;
end
p2 = p1 - dp;
y2 = feval(f,p2);
err = abs(dp);
relerr = err/(abs(p2)+eps);
p0 = p1;
y0 = y1;
p1 = p2;
y1 = y2;
P = [P;p0 p2 p1 y1 err relerr];
if (errbreak,="" end=""
end
disp(' P0 P2 Xi F(Xi) ErrAbs ErrorRelativo');
disp(P);
disp('Error Absoluto:');
disp(err);
disp('Error Relativo:');
disp(relerr);
end
function a =secante(fun,x0,x1,tol,maxiter)
fprintf(1, 'Metodo de la secante \n');
f0=subs(fun,x0);
f1=subs(fun,x1);
iter=1;
while(abs(f1)>tol) & (iter
a = x1-f1*((x1-x0)/(f1-f0));
f0=f1; f1=subs(fun,a); %Actualiza f0 y f1
fprintf(1, 'iter= %i, a= %x0,f= %e \n', iter,a ,f1)
iter = iter + 1; % Cuenta los pasos
x0=x1; x1=a; % actualiza x
end
BIBLIOGRAFÍA
http://es.wikipedia.org/wiki/M%C3%A9todo_de_la_secante
http://descartes.cnice.mec.es/materiales_didacticos/resolucion_numerica_de_ecuaciones
/secante.htm
http://noosfera.indivia.net/metodos/posicionFalsa.html
http://personales.unican.es/segurajj/mii/p4m2.pdf