REGLA FALSA:
Otro método que comúnmente se emplea es el de Regula Falsa. Este método también tiene otras denominaciones, como son: Regla falsa, Posición falsa o Interpolación Lineal. Su nombre original que está en latín, denota su antigüedad. La idea del método es bastante similar al del método de bisección. Requiere un intervalo que cumpla los mismos supuestos que el método de Bisección. En lugar de obtener el punto medio en cada iteración, el método busca reemplazar la función original por otra a la cual sea más simple localizar su raíz. Dado que comenzamos con solo un intervalo, es decir, sólo tenemos 2 puntos, buscamos la curva más simple que pase por estos 2 puntos. Lógicamente usamos una línea recta. Entonces en vez de obtener puntos medios en este método se halla las raíces de las rectas que pasen por
los puntos que determinen nuestros intervalos.
Codigo para Octave:
%Metodo de la Regla Falsa
disp('METODO : REGLA FALSA');
disp('por:');
disp('Carolina Perez Gaviria');
disp('Jennifer Olano Arrieta');
disp('Carlos Trujillo');
disp(' ');
format long;
Xi=input('Cual es el valor de Xi: ');
Xu=input('Cual es el valor de Xu: ');
tol=input('Ingrese la tolerancia: ');
Ite=input('Cantidad de iteraciones: ');
Fun=input('ingrese la ecuacion entre comillas = ','S');
f=inline(Fun);
Yi=f(Xi);
Yu=f(Xu);
if Yi==0
fprintf('Xi es raiz: ');
else
if Yu==0
fprintf('Xu es raiz: ');
else
if Yi*Yu>0
fprintf('No existe raiz: ');
else
Xm=(Xu)-((f(Xu)*(Xi-Xu))/(f(Xi)-f(Xu)));
Ym=f(Xm);
Error=tol+1;
Cont=1;
M=[Cont,Xi,Xu,Xm,Ym,Error];
while Ym~=0 & Error>tol & Cont<Ite %expresion
auxiliar=Xm; %orden
if Yi*Ym<0
Xu=Xm;
Yu=Ym;
else
Xi=Xm;
Yi=Ym;
end
Xm=(Xu)-((f(Xu)*(Xi-Xu))/(f(Xi)-f(Xu)));
Ym=f(Xm);
Error=abs(Xm-auxiliar);
Cont=Cont+1;
M(Cont,1)=Cont;
M(Cont,2)=Xi;
M(Cont,3)=Xu;
M(Cont,4)=Xm;
M(Cont,5)=Ym;
M(Cont,6)=Error;
end
if Ym==0
fprintf('Xm es raiZ: ');
else
if Error<tol
fprintf('Xm es raiz y tiene un valor de %g con un error de %g: ',Xm,Error),
else
fprintf('No hay soluci—n en las iteraciones dadas: ');
end
end
fprintf(' xi Xu Xm Ym Error: ')
disp(M);
end
end
end
Hola, me podrias dar un ejemplo?
ResponderEliminar