IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Utilitaires > Utilitaires mathématiques
        Classe de congruence
        Résolution d'équations différentielles
        Big Int
        Fractions
         Transformée de Fourier discrète

rechercher
precedent    sommaire    suivant    telechargermiroir


Auteur : Davidbrcz
Version : 13/08/2008
Page de l'auteur
Téléchargez le zip
Classe de congruence
Cette classe modélise la relation de congruence qu'il peut exister entre deux entiers


Auteur : millie
Version : 13/08/2008
Page de l'auteur
Téléchargez le zip
Résolution d'équations différentielles
Ce code permet de résoudre une équation différentielle du premier ordre du type : dy/dx = f(x,y) avec des conditions initiales sur y et x.


Auteur : Nanoc
Version : 13/08/2008
Page de l'auteur
Téléchargez le zip
Big Int
La valeur maximale des calculs est par défaut limitée en C++. Pour y remédier, il faut soit passer par des classes personnelles qui permetent une valeur maximale "infinie". Voici un exemple d'une telle classe


Auteur : Nanoc
Version : 13/08/2008
Page de l'auteur
Téléchargez le zip
Fractions
Le C++ ne propose aucune classe pour gérer les fractions ce qui peut être plus que génant dans bon nombres de cas. Voici une petite classe pour palier à ce manque.


Auteur : C++ CookBook
Version : 13/08/2008
Transformée de Fourier discrète
La transformée de Fourier est une opération mathématique permetant de décomposer en fonction en une somme de fonction périodique. Elle est essentielle dans de nombreux domaines comme par exemple le traitement du signal. Le code suivant offre une première version

/*
Excerpted from "C++ Cookbook" by Ryan Stephens, Christopher Diggins,
Jonathan Turkanis, and Jeff Cogswell. Copyright C 2006 O'Reilly Media, Inc.
All rights reserved. Used with permission.
Published by O'Reilly Media, Inc.
To purchase this book go to: http://oreilly.com/catalog/9780596007614/
*/
#include <iostream> 
#include <vector> 
#include <complex> 

const double PI = 3.1415926536;  //obligation de définir PI car il n'est pas obligé qu'elle soit définie.


unsigned int bitReverse(unsigned int x, int log2n) {   int n = 0; 
  int mask = 0x1; 
  for (int i=0; i < log2n; i++) { 
    n <<= 1; 
    n |= (x & 1); 
    x >>= 1; 
  } 
  return n; 
} 

template<class Iter_T> 
void fft(Iter_T a, Iter_T b, int log2n) 
{ 
    typedef typename std::iterator_traits<Iter_T>::value_type complex; 
    const complex J(0, 1); 
    int n = 1 << log2n; 
    for (unsigned int i=0; i < n; ++i) { 
       b[bitReverse(i, log2n)] = a[i]; 
    } 
  for (int s = 1; s <= log2n; ++s) { 
      int m = 1 << s; 
      int m2 = m >> 1; 
      complex w(1, 0); 
      complex wm = exp(-J * (PI / m2)); 
      for (int j=0; j < m2; ++j) { 
         for (int k=j; k < n; k += m) { 
             complex t = w * b[k + m2]; 
             complex u = b[k]; 
             b[k] = u + t; 
             b[k + m2] = u - t; 
         } 
         w *= wm; 
      } 
  } 
} 
Et voici un exemple d'utilisation

int main(int argc, char const *argv[])
{
    typedef std::complex<double> cx;   
    cx a[] = { cx(0,0), cx(1,1), cx(3,3), cx(4,4),  
    cx(4, 4), cx(3, 3), cx(1,1), cx(0,0) }; 
  cx b[8]; 
  fft(a, b, 3); 
  for (int i=0; i<8; ++i)  
      std::cout << b[i] << std::endl; 
    return 0;
}

rechercher
precedent    sommaire    suivant    telechargermiroir

Consultez les autres pages sources


Valid XHTML 1.1!Valid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2004 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.