Ceros de Funciones¶
Problema:¶
Dada f:R→R, encontrar x∗ tal que
f(x∗)=0
Método de la Bisección¶
El método de la Bisección está basado en el siguiente teorema:
Teorema del valor intermedio : Si f:R→R es una función continua en un intervalo [a,b], Entonces para cada u tal que f(a)<u<f(b), entonces existe almenos un x0∈(a,b) tal que f(x0)=u.
De esta manera si tenemos una función f y un intervalo [a,b] en el que f(a)f(b)<0 es decir donde f(a)<0<f(b) o f(a)>0>f(b), entonces existe almenos un x∗∈(a,b) tal que f(x∗)=0
El método:
Supongamos que tenemos un intervalo [a0,b0] tal que f(a0)f(b0)<0 definimos
- m0:=a0+b02 se induce una bisección al intervalo [a0,b0]: [a0,m0] y [m0,b0]
- verificamos en cuál de estos se cumple la condición: f(a0)f(m0)<0 f(m0)f(b0)<0 es decir, en cuál de los intervalos se encuentra el cero de f.
- Redefinimos el intervalo [a0,b0]
In [1]:
f =@(x) x.^5+x.^4-5*x.^2+2*x.-10
In [2]:
fplot(f,[0 2])
In [3]:
function [x_0,N] =Bisec(a_0,b_0,f,eps)
x_0=(a_0+b_0)/2;
N=1;
while abs(f(x_0))>eps %Tolerancia
m_0=(a_0+b_0)/2;
if f(a_0)*f(m_0)<0
b_0=m_0;
x_0=m_0;
end
if f(m_0)*f(b_0)<0
a_0=m_0;
x_0=m_0;
end
N=N+1;
end
end
In [4]:
a=0;
b=2;
f
[x_0,N] =Bisec(a,b,f,.00001)
f(x_0)
In [5]:
k=14;
epss=logspace(-k,-1,10*k+1);
N=zeros(1,length(eps));
t=zeros(1,length(eps));
a=0;
b=2;
f;
for i=1:length(epss)
[x_0,n] =Bisec(a,b,f,epss(i));
N(i)=n;
zer(i)=abs(f(x_0));
end
In [9]:
subplot(1,2,1), semilogx(epss,N,'-o')
title('Numero de iteraciones contra tolerancia')
xlabel('\epsilon')
ylabel('N ')
subplot(1,2,2), loglog(epss,zer,'-o')
title('Valor de la funcion en x^{*} contra tolerancia')
xlabel('\epsilon')
ylabel('f(x^{*})')