miércoles, 11 de marzo de 2015

INTERPOLACION DE LAGRANGE EN C++


Polinomio de interpolación de Lagrange:




La interpolación de Lagrange es una de las interpolaciones más útiles en integración numérica, está consiste en una representación de polinomios de la función:
Esta interpolación pasa por los puntos n+1 dados:



Para hallar la Interpolacion de Lagrange se tiene que seguir ciertas fórmulas, nosotros veremos un algoritmo en el cual no es necesario utilizar las fórmulas basta con lo siguiente:



Ahora vemos como sería el código en C++:

#include<iostream.h>
#include<conio.h>
void main(){
float x[50],y[50],z,l, valor=0;
int n;

cout<<"ingrese el numero de elementos: "; cin>>n;
cout<<"ingrese x: ";

   for(int i=0; i<n; i++){
 cin>>x[i];
    }

      cout<<endl;
      cout<<"ingrese y: ";
for(int i=0; i<n; i++){
              cin>>y[i];

}
  cout<<endl;
  cout<<endl<<"ingrese z: "; cin>>z;

 for(int i=0; i<n ;i++){
        l=y[i];
        for(int j=0; j<n; j++){
          if(i!=j){
             l=(l*(z-x[j]))/(x[i]-x[j]);
            }
        }
       valor=valor+l;
 }

 cout<<endl<<endl<<"El valor al polinomio de interpolacion en Z= "<<z <<" es : "<<valor;
 getch();
 }

En Dev c++ sería de la siguiente forma:



#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    float x[50],y[50],z,l, valor=0;
int n;

cout<<"ingrese el numero de elementos: "; cin>>n;
 cout<<"ingrese x: ";

for(int i=0; i<n; i++){
 cin>>x[i];
}

      cout<<endl;
cout<<"ingrese y: ";
for(int i=0; i<n; i++){
              cin>>y[i];

}
  cout<<endl;

cout<<endl<<"ingrese z: "; cin>>z;

 for(int i=0; i<n ;i++){
        l=y[i];
        for(int j=0; j<n; j++){
          if(i!=j){
             l=(l*(z-x[j]))/(x[i]-x[j]);
            }
        }
       valor=valor+l;
 }

 cout<<endl<<endl<<"El valor al polinomio de interpolacion en Z = "<<z<<" es : "<< valor<<endl;
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
 


DESCARGA EL ARCHIVO AQUÍ










9 comentarios:

  1. muy buen programa! oye, de casualidad sabras como imprimir el polinomio?

    ResponderEliminar
  2. solo ingresa el nnumero de elementos mas de ahi no hace nada no realiza el metodo de lagrange

    ResponderEliminar
  3. interesante código; pero cuando lo ejecuto en el ZINAJI no compila. Podrían decirme por qué?

    ResponderEliminar
  4. Gracias, me sirvio la función que utilizaste para el método

    ResponderEliminar
  5. Necesitaba que el programa me diera la funcion y no solo el valor de la funcion en un numero x. Coomo se haria para poder mostrar en pantalla la funcion?

    ResponderEliminar
  6. #include
    #include
    #include

    using namespace std;

    int main(int argc, char *argv[])
    {
    float x[50],y[50],z,l, valor=0;
    int n;

    printf("\nBienvenido Uusario\n");
    printf("\nPractica 9\n");
    printf("\nIntroduzca el numero de elementos:\n");
    scanf("%f",&n);
    printf("\nIntroduce los valores de x:\n");

    for(int i=0; i<n; i++){
    scanf("%f",&x[i]);
    }
    cout<<endl;

    printf("\nIntroduzca el valor de la funcion f(X)");
    for(int i=0; i<n; i++){
    scanf("%f",&y[i]);

    }
    cout<<endl;

    printf("Introduzca el valor de x a evaluar:");
    scanf("%f",&z);

    for(int i=0; i<n ;i++){
    l=y[i];
    for(int j=0; j<n; j++){
    if(i!=j){
    l=(l*(z-x[j]))/(x[i]-x[j]);
    }
    }
    valor=valor+l;
    }

    cout<<endl<<endl<<"El valor al polinomio de interpolacion en Z = "<<z<<" es : "<< valor<<endl;


    system("PAUSE");
    return EXIT_SUCCESS;
    }
    crea un bucle infinito en introduzca el valor de x

    ResponderEliminar
  7. ahi algun curso me interesa aprender dev c++

    ResponderEliminar