Probar el método usando las funciones:
- f(x) = sen (x), en el intervalo 2,4
- f(x) = sen(x) + 3x – 5, en el intervalo 0,2
Usar una tolerancia es del 0.005 %
- Método por Bisección
Fórmula |
x | No. iteraciones | Intervalo | F(xr) |
y=sin(x) |
3.1414794921875 | 14 | (2,4) | 0.00011316 |
y=sin(x)+3x-5 |
1 | 1 | (0,2) |
-1.1585 |
- Método de la falsa posición
Fórmula |
x | No. iteraciones | Intervalo | F(xr) |
y=sin(x) |
3.14159265360489 |
4 |
(2,4) |
-1.5095e-011 |
y=sin(x)+3x-5 | 1.34202328104585 | 6 | (0,2) |
1.5223e-005 |
Código Falsa Posición
* * * * * falsaposicion.m * * * * *
[c]
function x=falsaposicion(funcion,a,b,etol)
% Cálculo de raices por el método de falsa posición
disp (‘Cálculo de raices por falsa posicion’);
fl=feval(funcion,a);
fu=feval(funcion,b);
n=1;
if sign(fl)==sign(fu)
disp(‘Error, la función debe de cambiar de signo en el intervalo’);
end
xrant=0;
xr=1;
while (((abs(xr-xrant)/xr)*100)>etol)
fl=feval(funcion,a);
fu=feval(funcion,b);
xrant=xr;
xr=b-(fu*(a-b)/(fl-fu));
fxr=feval(funcion,xr);
disp([‘El valor actual de n es:’,num2str(n)]);
disp([‘El valor actual de Xr es:’,num2str(xr,15)]);
disp([‘El valor actual de F(Xr) es:’,num2str(fxr)]);
if sign(fl)==sign(fxr)
a=xr; fl=fxr;
else
b=xr; fu=fxr;
end
n=n+1;
end;
x=xr
[/c]
* * * * * funcion.m * * * * *
[c]
function [funci]=funcion(x)
funci=sin(x)+3*x-5
[/c]