Método De Búsqueda de Intervalos

Este método de búsqueda de intervalos pretende a partir de una función y de un intervalo muy grande, determinar en que subintervalos pequeños hay raíces. Para esto se debe recorrer todo el intervalo principal con un avance dado y verificar en cada subintervalo si hay un cambio de signo en la función evaluada en sus extremos. Si la función es continua se puede garantizar que en un subintervalo con cambio de signo hay una raíz. Este método no detectara los subintervalos donde la función toca el eje x tangencialmente pues no se presenta cambio de signo.

 

Datos de entrada:

Opción 1

Intervalo grande

numero de iteraciones

 

Opción 2

Un punto de inicio

un delta

numero de iteraciones


Pseudocodigo

Datos entrada: intervalo, numero iteraciones, función

Datos salida: intervalos con raíz, raíces

paso=(b-a)/n

x0=a

x1=a+paso

l=1

r=1

raiz=0

ni=0

para i=1 hasta n

si f(x0)=0

raiz(r)=x0

r=r+1

sino si f(x0)*f(x1)<0

intervalo(l,1)=x0

intervalo(l,2)=x1

l=l+1

ni=ni+1

fin si

x0=x1

x1=x1+paso

fin para

si f(x0)=0

raiz(r)=x0

fin si

if ni=0

Escriba 'No se detectaron intervalos con cambio de signo que indiquen la existencia de una raiz’

Fin si

 

si raiz~=0

escriba ‘raiz es raiz'

fin si



Codigo Matlab/Octave

Se debe crear un arrchivo .m llamado busquedaincremental y copiar y pegar el siguiente codigo

function busquedaincremental
f=input('ingrese la funcion: ','s');
a=input('ingrese el valor inferior del intervalo: ');
b=input('ingrese el valor superior del intervalo: ');
f=inline(f);
n=input('defina el numero de iteraciones deseadas: ');
fprintf('\n Intervalos con raiz \n a b \n')
paso=(b-a)/n;
x0=a;
x1=a+paso;
l=1;
r=1;
raiz=0;
ni=0;
for i=1:n
    if f(x0)==0
      raiz(r)=x0;
      r=r+1;
        else if f(x0)*f(x1)<0
          fprintf(' %2.4f %2.4f  \n',x0,x1)
          intervalo(l,1)=x0;
          intervalo(l,2)=x1;
          l=l+1;
          ni=ni+1;          
        end  
    end
    x0=x1;
    x1=x1+paso;
end
if f(x0)==0
    raiz(r)=x0;
end
if ni==0
    fprintf('No se detectaron intervalos con cambio de signo que indiquen la existencia de una raiz\n')
end

if raiz~=0
    fprintf('%1.10f es raiz\n',raiz)
end
end
 
 
Comments