Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 10 de 16

Tema: Interpolacion de lagrange

  1. #1
    Fecha de ingreso
    24 b, 3
    Ubicación
    Medellin
    Mensajes
    256

    Predeterminado Interpolacion de lagrange

    Este es otro programas que les envio a quien depronto les interese
    realiza interpolacion de datos, aunque son mejores las regresiones, pero sirven como aproximaciones a modelos predictivos.
    Necestan crear un archivo llamado datos.dat con los datos distribuidos en dos columnas, X y Y
    en c
    inter_lagrange.c
    __________________________________________________ _________________
    #include<stdio.h>

    int MinMax(double xx[],int N, double *M, double *m)
    {
    int i;
    *m=xx[0];
    *M=xx[0];
    for(i=0;i<N;i=i+1)
    {
    if(*M<=xx[i])
    *M=xx[i];
    else
    *m=xx[i];
    }
    return 0;
    }

    double LagrPol(double x, int j, double xx[], int N)
    {
    int i;
    double Ln;
    Ln=1;
    for(i=0;i<N;i=i+1)
    {
    if(i==j)
    continue;
    Ln=Ln*((x-xx[i])/(xx[j]-xx[i]));
    }
    return Ln;
    }

    double Polinter(double x,double xx[],double yy[], int N)
    {
    int i;
    double Pn;
    Pn=0;
    for(i=0;i<N;i=i+1)
    {
    Pn=Pn+(LagrPol(x,i,xx,N)*yy[i]);
    }
    return Pn;
    }

    int main(void)
    {
    int N,n,i,j;
    double M,m;
    printf("Digite la dimension de los datos de entrada: \n");
    scanf("%d",&N);
    printf("Digite la dimension de los datos de salida: \n");
    scanf("%d",&n);
    double xx[N],yy[N],xo[n],yo[n];
    FILE *in,*out;
    in=fopen("datos.dat","r");
    for(i=0;i<N;i=i+1)
    {
    fscanf(in,"%lf %lf\n",&xx[i],&yy[i]);
    }
    MinMax(xx,N,&M,&m);
    for(i=0;i<n;i=i+1)
    {
    xo[i]=i*(M-m)/n;
    yo[i]=Polinter(xo[i],xx,yy,N);
    }
    out=fopen("interp_datos.dat","w");
    for(i=0;i<n;i=i+1)
    {
    fprintf(out,"%lf %lf\n",xo[i],yo[i]);
    }
    fclose(in);
    fclose(out);
    return 0;
    }
    __________________________________________________ _______________

    depronto no sea mucho, pero espero que a alguien le sirva

    XebaX3



    $ make me a sandwich
    What? make it yourself
    $ sudo make a sandwich
    OK


    y Dios dijo: rot E=-dB/dt, rotH=J+dD/dt, divE=ρ, divB=0 y se hizo la luz

  2. #2
    Fecha de ingreso
    24 b, 3
    Ubicación
    Medellin
    Mensajes
    256

    Predeterminado Interpolacion

    Buenop ya que aprendi a prograamr el ti basic, ya pase este a codigo a la calculadora, solo pide el ingreso de los datos de salida, y los datos a interpolar se deben dar en un archivo en main que se llama dts y es del tipo datos, debe tener dos columnas, la primera la variable independiente y la segunda la dependiente, y el programa retorna un archivo dato en main llamado interp, en este estan el numero de datos del polinomio interpolante que se ingreso al principio, el numero de datos esta limitado por la calc a 999. pero se debe tener en cuenta que ha mayor numero de datos, mas lñento el programa. luego se puede hacer una grafica xy line para ver la grafica del polinomio, espero les sirva.
    NOTA: EL programa es algo lento, recomiendo interpolar con menos de 50 datos de salida, si alguien puede optimizar el programa, lo agradeceria, y si me lo puede enviar mucho mejor, bueno eso es todo

    Suerte!!!!
    Archivos adjuntados Archivos adjuntados

    XebaX3



    $ make me a sandwich
    What? make it yourself
    $ sudo make a sandwich
    OK


    y Dios dijo: rot E=-dB/dt, rotH=J+dD/dt, divE=ρ, divB=0 y se hizo la luz

  3. #3
    Fecha de ingreso
    27 b, 3
    Ubicación
    Medellin, Antioquia, Colombia
    Mensajes
    108

    Talking aporte

    exelente aporte compañero. muchas gracias
    *************
    TI 89 TITANIUM
    OS 3.10 HW 4.00

  4. #4
    Fecha de ingreso
    22 b, 4
    Ubicación
    Buenos Aires
    Mensajes
    4,102

    Predeterminado

    Xebax, viendo el tipo de ejercicios, los cuales son con muchas iteraciones, ¿no te conviene hacerlo en C q es mas rapido q Ti-basic y ademas ya tenes el codigo?, solo tendrias q compilarlo.

    Pd. he visto en este programa tuyo y en otro q agregas estas 2 instrucciones:

    Código:
    (INVALID INSTRUCTION TOKEN: &h9F)main\dtsdts1(UNEXPECTED END_TAG)
    Código:
    (INVALID INSTRUCTION TOKEN: &hA0)dts1main\intrdts(UNEXPECTED END_TAG)
    Para q sirven? para tokenizar los programas?
    Última edición por cosmefulanito04; 18/06/2008 a las 23:Jun
    Antecedentes
    Guia para usuarios nuevos (Leanla antes de postear)

    La mayoria de los programas hechos en ti-basic funciona solamente con el idioma en Ingles.

  5. #5
    Fecha de ingreso
    24 b, 3
    Ubicación
    Medellin
    Mensajes
    256

    Predeterminado

    pues si, creo que seguire haciendo esos programas iterativos en c, el problema es que hay algunas cosas que cambian como el nombre de las librerias y esas cosas, pero son detalles menores, en estas vacaciones leo esas cosas y empiezo a subirlos.

    Sobre el codigo, en que parte yo agrego eso?
    no veo en ningun codigo que he hecho esas lineas que mencionas, igual soy muy novato en c entonces ni idea de lo que hablas, por ejemplo que es tokenizar.

    bueno me alegro que les sea de utilidad el programa,
    suerte!!

    XebaX3



    $ make me a sandwich
    What? make it yourself
    $ sudo make a sandwich
    OK


    y Dios dijo: rot E=-dB/dt, rotH=J+dD/dt, divE=ρ, divB=0 y se hizo la luz

  6. #6
    Fecha de ingreso
    22 b, 4
    Ubicación
    Buenos Aires
    Mensajes
    4,102

    Predeterminado

    Esas lineas aparecen en tu programa interp.89p hecho en basic .

    Lineas 24 y 60. ¿De donde sacaste esas lineas? porq tiene toda la pinta de ser comandos en assembler, y por lo q vi de tu programa, al ejecutarlo no necesita tokenizarlo (o algo medio raro hace ).
    Antecedentes
    Guia para usuarios nuevos (Leanla antes de postear)

    La mayoria de los programas hechos en ti-basic funciona solamente con el idioma en Ingles.

  7. #7
    Fecha de ingreso
    24 b, 3
    Ubicación
    Medellin
    Mensajes
    256

    Predeterminado

    Cosme, no se porque salen esas lineas, pero creo que eso pasa porque yo programa en la calc, y obviamente pruebo el programa y este se compila, luego lo paso al pc por el ticonect, entonces me imagino que ya pasa comilado y creo que por eso salen esas lineas, (no se que es tokenizar, pero creo que es cuando estos porgramillas se compilan y quedan guardados en si mismos, o sea que despues de compilar si no estan archivados, cuando se vuelven a ejecutar ya estan compilados y entran mas rapido, si esto no es tokenizar me corrigen), si no es eso lo que pasa con esas lineas, hay disculpan mi ignorancia.


    Suerte!!

    XebaX3



    $ make me a sandwich
    What? make it yourself
    $ sudo make a sandwich
    OK


    y Dios dijo: rot E=-dB/dt, rotH=J+dD/dt, divE=ρ, divB=0 y se hizo la luz

  8. #8
    Fecha de ingreso
    22 b, 4
    Ubicación
    Buenos Aires
    Mensajes
    4,102

    Predeterminado

    Ahh, debe ser por eso q te aparecen esas lineas.

    Pd: si tokenizar significa lo q dijiste.
    Antecedentes
    Guia para usuarios nuevos (Leanla antes de postear)

    La mayoria de los programas hechos en ti-basic funciona solamente con el idioma en Ingles.

  9. #9
    Fecha de ingreso
    24 b, 3
    Ubicación
    Medellin
    Mensajes
    256

    Predeterminado

    Esto puede servir de algo?

    quizas para evitar rutinas de instalacion, o usuarios novatos que no saben que pueden optimizar el uso de programas corriendolos y luego archivandolos.

    creo que sería buena idea, solo es una propuesta.

    Suerte!!

    XebaX3



    $ make me a sandwich
    What? make it yourself
    $ sudo make a sandwich
    OK


    y Dios dijo: rot E=-dB/dt, rotH=J+dD/dt, divE=ρ, divB=0 y se hizo la luz

  10. #10
    Fecha de ingreso
    03 b, 2
    Ubicación
    México
    Mensajes
    3,326

    Arrow re:

    Cita Iniciado por Xebax3
    Esto puede servir de algo?

    quizas para evitar rutinas de instalacion, o usuarios novatos que no saben que pueden optimizar el uso de programas corriendolos y luego archivandolos.

    creo que sería buena idea, solo es una propuesta.

    Suerte!!
    No se emocionen todavia..
    Hice unas pruebas y efectivamente.. aparecen textos raros en algunos if y funciones avanzadas..
    Ejemplo la funcion isVar() genera ese codigo..

    Curiosamente esta funcion no esta en el repletorio del Daisuke-Edit (pero si en la calc) y asi me imagino q hay varias funciones similares..

    En q hice las pruebas.. no es una funcion de tokenize.. ni nada de compilado.. solo es un error.. del Daisuke-Edit..

    Mande a mi calc algunas pruebas (q tenian este codigo).. y se tomaba el tiempo para compilar, osea q no es ninguna funcion de tokenize

    De todas maneras chequenlo.. y me confirman..

    Lo q si.. es cuando el programa ya esta compilado.. y usan la opcion de mandar de calc a calc, el programa conserva este compilado.. y se ejecuta directamente..

    Salu2
    Última edición por izerw; 20/06/2008 a las 20:Jun



Página 1 de 2 12 ÚltimoÚltimo

Marcadores

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •