domingo, 18 de marzo de 2012

"METODO DE BISECCION"

MÉTODO DE DISECCIÓN

Esta técnica se basa en el teorema del valor intermedio y parte del supuesto que $ f(a)$ y $ f(b)$ tienen signos opuestos.

Básicamente el Teorema del Valor Intermedio nos dice que toda función continúa en un intervalo cerrado, una vez que alcanzó ciertos valores en los extremos del intervalo,entonces debe alcanzar todos los valores intermedios.

El método de la bisección se basa en este teorema y se emplea para aproximar ceros de funciones. Supóngase que queremos encontrar los ceros de una función f(x) continua. Dados dos puntos a y b tal que f(a) y f(b) tengan signos distintos, sabemos por el Teorema de Bolzano que f(x) debe tener, al menos, una raíz en el intervalo [a; b]. El método de bisección divide el intervalo en dos, usando un tercer punto
En este momento,existen dos posibilidades: f(a) y f(c), ó f(c) y f(b) tienen distinto signo. El método de bisección se aplica al subintervalo donde el cambio de signo ocurre. Este proceso puede aplicarse tantas veces como sea necesario para alcanzar la precisión que se requiera.

En resumen 

1.- Dan como valores un intervalo y se debe garantizar que en ese intervalo esta la raiz.
2.- Dan una tolerancia la cual nos indica cuando el resultado obtenido es correcto.
3.- Dan el numero de iteraciones.

INCONVENIENTES:

SOLO CALCULA UNA DE LAS RAICES.

AQUI DEJO UN CODIGO EL CUAL ELABORE EN EL LABORATORIO

#include<iostream.h>
#include <conio.h>
#include <math.h>

class bisec
{
private: float a,b,w;
       double e;


public: void inic();
         void valores();
         float f(float , float );
         float calculo();
};


void bisec :: inic(){
a=0;
b=0;
//c=0;
e=0;
}

void bisec :: valores(){
cout << "Ingrese el valor de la raiz a calcular: "<<endl;
   cin>>w;
cout << "Ingrese el valor de a: "<<endl;
   cin>>a;
   cout << "Ingrese el valor de b: "<<endl;
   cin>>b;
   cout << "Ingrese error: ";
   cin>>e;
}

float bisec :: f(float x, float n){
    return pow(x,2) - n;
}


float bisec :: calculo(){
int i=0;
float c,total;
double ea;

cout<<"\ti"<<"\txi"<<"\t\txi+1"<<"\t\tf(xi)"<<"\t\tEa"<<endl;
 do{
         c=(a+b)/2;
        total=f(a,w)*f(c,w);
      cout.precision(5);
      cout<<"\t"<<i<<"\t"<<a<<"\t\t"<<b<<"\t\t"<<c<<"\t\t"<<ea<<endl;
      if(total < 0)
          b=c;
      else
          a=c;
      ea = fabs((a-b)*100/a );

      i++;
   }while(ea>e);

   return c;
}

void main()
{
    bisec fz;
    fz.valores();
    cout << "La raiz es: " <<fz.calculo();


   getch();
}

domingo, 4 de marzo de 2012

"SERIE DE TAYLOR"

SERIE DE TAYLOR 

Este teorema permite aproximar una funcion derivable en un entorno reducido alrededor de un punto Z(a,b) mediante un polinomio cuyos coeficientes dependen de las derivadas de la funcion en ese punto.
 La serie de Taylor se basa en ir haciendo operaciones según una ecuación general y mientras mas operaciones tenga la serie mas exacto será el resultado que se esta buscando. Dicha ecuación es la siguiente:

o en forma compacta

donde n! es el factorial de n y Rn(f) es la enésima derivada de R en el punto a. si a=o se le llama serie de Maclaurin.
  

EJEMPLOS: