Generar en matlab (m-file) el método de bisección que encuentra la raíz de una ecuación.  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 %

Comparar con el método de bisección observando el número de iteraciones (n) que cada algoritmo realiza.

 

  • 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 * * * * *

[java]
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

[/java]

* * * * * funcion.m * * * * *

[java]
function [funci]=funcion(x)
funci=sin(x)+3*x-5

[/java]

 

Deja un comentario