Informe de Métodos Numéricos
Enviado por Danespme • 8 de Noviembre de 2016 • Trabajo • 1.250 Palabras (5 Páginas) • 325 Visitas
Informe de Métodos Numéricos
Nombre: Daniel Andrés España Medina
Grupo: 2
Introducción
El método de la bisección es usado para encontrar los ceros de una función, funciona cogiendo un intervalo a y b tal que f(a)*f(b)<0 y con este intervalo hacer la operación x = (a+b)/2 de tal manera que si f(a)*f(x)<0 se repetirá la operación con x en vez de b o, caso contrario, si f(x)*f(b)<0 se lo reemplazara en vez de a hasta que f(x) sea tan pequeño como la tolerancia dada, es decir, hasta que f(x) sea menor o igual a la tolerancia, de esta manera nos aseguramos que el cero de la función siempre este en el intervalo y que este se reduzca cada vez más.
Para realizar este proceso se harán k iteraciones donde el intervalo será cada vez más pequeño, si las iteraciones tendieran al infinito, el proceso seria exacto, el intervalo k-esimo está dado por la ecuación donde es el modulo del primer intervalo, es decir el módulo de b – a si b>a.[pic 1][pic 2]
Como no podemos hacer infinitas iteraciones, se suele dar una tolerancia donde se pondrá un número aproximado a cero al cual queramos aproximar.
Así mismo para llegar a esta tolerancia, se tendrán un mínimo de iteraciones las cuales las podemos aproximar con la desigualdad:
[pic 3]
Donde:
Es la tolerancia[pic 4]
R es cualquier base
Desarrollo del código
Bisección
Primero creamos una función que desarrolle el proceso que llamaremos bisección y utilizaremos 4 variables que serán fun, que será una variable en modo escrito para luego convertirla en una función, aquí se colocará la función del ejercicio, las siguientes variables serán x1 y x2 que serán los limites menor y mayor respectivamente y por ultimo tole que será la tolerancia que queramos dar raíz será lo que retorna la función, luego con la función inline convertiremos fun en una función:
>>function raiz=biseccion(fun,x1,x2,tole)
>>f=inline(fun);
Ahora ya podemos iniciar el proceso donde, si los límites son correctos, seguirá con el proceso y caso contrario retornara un mensaje, utilizamos if y colocamos la condición así:
>>function raiz=biseccion(fun,x1,x2,tole)
>>f=inline(fun);
>>if f(x1)*f(x2)<0
Daremos un valor inicial a x para poder usarlo por ejemplo con x1 y realizamos el bucle que tendrá como condición que se realice si el valor absoluto de x es mayor a la tolerancia y dentro del bucle daremos el valor de x que sera la suma de los limites dividido entre dos:
>>function raiz=biseccion(fun,x1,x2,tole)
>>f=inline(fun);
>>if f(x1)*f(x2)<0
>> x=x1;
>> while abs(f(x))>tole
>> x=(x1+x2)/2;
Luego se procede a comprobar por cual límite se debe reemplazar este x, si f(x)*f(x2)<0 entonces x se reemplazara con x1 y caso contrario se reemplazara con x2, asi termina el if y también el while:
>>function raiz=biseccion(fun,x1,x2,tole)
>>f=inline(fun);
>>if f(x1)*f(x2)<0
>> x=x1;
>> while abs(f(x))>tole
>> x=(x1+x2)/2;
>> if f(x)*f(x2)<0
>> x1=x;
>> else
>> x2=x;
>> end
>> end
Al finalizar la función while, el x que quede será el valor de la raíz y así se dará por terminado el proceso, quedando de la siguiente manera:
>>function raiz=biseccion(fun,x1,x2,tole)
>>f=inline(fun);
>>if f(x1)*f(x2)<0
>> x=x1;
>> while abs(f(x))>tole
>> x=(x1+x2)/2;
>> if f(x)*f(x2)<0
>> x1=x;
>> else
>> x2=x;
...