IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

code numerical recipe


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �prouv�
    Inscrit en
    Novembre 2006
    Messages
    1 073
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par d�faut code numerical recipe
    Si vous connaissez le site Numerical recipe, que pensez vous de leurs codes C++?
    en terme de rigeur, rapidit�...?
    merci

  2. #2
    Membre chevronn�
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    D�tails du profil
    Informations personnelles :
    �ge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Par d�faut
    La qualit� (en terme code pur, pas de performance) est � mon avis d�plorable. C'est principalement du C sur lequel ils ont jet� deux ou trois fonctionalit�s du C++. Les variables sont toutes d�clar�es en d�but de fonction, ils mettent du using namespace std partout et ne font aucune utilisation de la biblioth�que standard.

    Le code est par contre conforme � l'algorithme d�crit dans le texte, que ce soit au niveau de la correction ou de la complexit�.

    La base du code est l�, mais si tu veux le modifier un tant soit peu, mieux vaut commencer par le r�-�crire un peu plus proprement.

  3. #3
    Membre �prouv�
    Inscrit en
    Novembre 2006
    Messages
    1 073
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par d�faut
    en fait, voila pourquoi je pose cette question. LE code ci dessous est tir� de NR.
    Il permet de calculer la FFT d'un 2^n points .
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    void four1(float data[],unsigned long nn,int isign)
    {
        unsigned long n,mmax,m,j,istep,i;
        double wtemp,wr,wpr,wpi,wi,theta;
        float tempr,tempi;
     
      n=nn<<1;
       j=1;
       for (i=1;i<n;i+=2){
             if(j>i){
                 SWAP(data[j],data[i]);
                 SWAP(data[j+1],data[i+1]);
             }
             m=nn;
             while (m>=2 && j>m){
                 j-=m;
                 m>>=1;
             }
             j+=m;
       }
       mmax=2;
       while(n>mmax){
           istep=mmax<<1;cout<<istep;
           theta=isign*(6.283185/mmax);
           wtemp=sin(0.5*theta);
           wpr=-2*wtemp*wtemp;
           wpi=sin(theta);
           wr=1;
           wi=0;
           for(m=1;m<mmax;m+=2){
                for(i=m;i<=n;i+=istep){
                j=i+mmax;
                tempr=wr*data[j]-wi*data[j+1];
                tempi=wr*data[j+1]+wi*data[j];
                data[j]=data[i]-tempr;
                data[j+1]=data[i+1]-tempi;
                data[i]+=tempr;
                data[i+1]+=tempi;
            }
          wr=(wtemp=wr)*wpr-wi*wpi+wr;
          wi=wi*wpr+wtemp*wpi+wi;
    }
    mmax=istep;
       }
     cout<<data[0]<<";"<<data[1]<<";"<<data[2]<<";" <<data[3]; <<";"<<data[4] ;
      }
    Le probl�me est que j'arrive pas a l'utiliser. Alors si vous pouviez m'aider, ca serait bien.
    Je ne sais pas comment appeller la fonction four1 et comment obtenir les outputs.

    Normalement, on devrait faire comme ca:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    int main(){
    float A[4]={3,2,4,5}
    four1(A,4,1) 
    }
    La r�ponse serait normalement : ([14, -1., 0, -1.]) mais c'est pas ce que j'obtiens.
    Je sais que c'est difficile de comprendre un code aussi long sans avoir lu auparavant un pseudo-algo, mais si vous pouvez jetter un coup d'oeil ca serait bien.

  4. #4
    Membre �m�rite
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Par d�faut
    Bonjour,

    Il faut aussi lire ce qui est pr�cis� dans NC.

    Charge ce fichier pdf:
    http://www.ma.utexas.edu/documentati...cpdf/c12-2.pdf

    four1 utilise des nombres complexes arrang�s dans un tableau de float.

  5. #5
    Membre �prouv�
    Inscrit en
    Novembre 2006
    Messages
    1 073
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par d�faut
    j'ai vu merci
    mais je crois que leur code ne fonctionne pas.

  6. #6
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    La r�ponse n'est pas forc�ment celle que tu donnes... Avant de dire que �a ne marche pas, relis un cours sur la FFT. - Je n'ai pas fini mon tuto sur la FFT, mais regarde la partie 1-C http://miles.developpez.com/tutoriels/algo/fft/ -

  7. #7
    Membre �m�rite
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Par d�faut
    Bonjour,
    Citation Envoy� par deubelte
    j'ai vu merci
    mais je crois que leur code ne fonctionne pas.
    Peut-�tre que leur code ne fonctionne pas, je ne l'ai pas �pluch�.

    MAIS, au moins, utilise des donn�es au format attendu par la fonction pour tes tests, ce qui n'est pas du tout le cas avec l'exemple que tu nous as donn�, ce qui, bien entendu, ne saurait donner un r�sultat coh�rent.

    Puisque tu avais vu ce qu'il fallait, pourquoi ne pas avoir utilis� des donn�es correctes ?

Discussions similaires

  1. Numerical Recipes in C#
    Par -={-_-}=- dans le forum C#
    R�ponses: 0
    Dernier message: 01/10/2009, 17h02
  2. Probl�me Functor + Numerical Recipes
    Par Jeromnimo dans le forum C++
    R�ponses: 8
    Dernier message: 03/07/2008, 10h17
  3. R�ponses: 10
    Dernier message: 12/10/2007, 16h54
  4. numerical recipes -> erreurs ?
    Par BenjaminLustrement dans le forum C
    R�ponses: 6
    Dernier message: 06/07/2006, 09h10
  5. bibliotheque numerical recipes
    Par miminou dans le forum Biblioth�ques
    R�ponses: 3
    Dernier message: 09/12/2005, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo