20-04-2009 Lisez-moi - Read me

Informatique

Efficacite

Table des matières
Chapitre précédent - Chapitre suivant



5. Efficacité de l'algorithme

On ne peut parler de calcul numérique sans aborder les aspects d'efficacité des algorithmes utilisés.

Dans l'utilisation des relations de récurrence que nous avons mentionnées ci-dessus, un bon agencement des opérations à effectuer permet facilement de diminuer les temps de calculs, par exemple en sauvant des valeurs intermédiaires: si on doit calculer des termes x, x2 , x4 et x6, on a intérêt à partir de x2 pour calculer les puissances suivantes.

Ce n'est là qu'un petit gain de temps évidemment (sauf dans quelques situations particulières, telles la simulation sur ordinateur de fluides de Lenard-Jones, où l'essentiel du temps de calcul est passé dans l'évaluation des forces d'interaction entre les particules, forces dépendant justement de puissances successives d'une telle variable x).

exemple: FFT

Il est des cas où une réorganisation complète du mode de calcul fait apparaître des gains de temps calcul beaucoup plus importants.

Un exemple célèbre en science est le calcul des transformées de Fourier d'une fonction. Cette transformation permet de passer d'une représentation dans le temps à une représentation en fréquence (très utile si on cherche dans un phénomène quelconque l'une ou l'autre périodicité). Sans entrer dans les détails disons tout d'abord que l'on ramène le calcul de la transformée de Fourier à une série de Fourier. La fonction f j et sa transformée Fk sont reliées par l'expression

Il y a N termes pour la fonction fj et N termes pour la fonction Fk . Chaque terme de Fk dépend des N termes de fj . Il y a donc en tout N * N termes à évaluer.

L'idée de la transformée de Fourier rapide (FFT ou Fast Fourier Transform) repose sur la constatation que beaucoup de termes d'une estimation de F pour un k donné pourraient être regroupés. En effet, réécrivons la somme ci-dessus sous forme d'une somme de deux demi-sommes (!)

ou encore, en introduisant la fonction

Fk = Fk (pairs) + Wk * Fk (impairs)

où nous avons maintenant séparé les termes d'indice pair et les termes d'indice impair de la fonction f.
Chacune des fonctions Fk (pairs) et Fk (impairs) comprend maintenant N/2 termes.
Nous avons remplacé le calcul de la transformée de Fourier sur N points par deux transformées de Fourier sur N/2 points.

Considérons ce qui se passe si le nombre de points est une puissance de 2.
Nous pourrons répéter le schéma précédent en divisant à son tour chacun des termes en deux transformées de Fourier, chacune d'entre elles étant multipliée par le bon facteur de phase W.
Cette opération pourra être répétée log2 N fois. Il nous restera enfin à évaluer vraiment la transformée de Fourier mais sur deux points, ce qui se résume à une somme de deux termes. Pour les N points de la fonction F, nous aurons à effectuer en tout de l'ordre de N log2 N au lieu des N2 opérations si nous avions fait le calcul de manière directe.

Cette méthode de "Fast Fourier Transform" est à présent répandue partout que ce soit sous forme de programme tout fait, ou même sous forme de circuits électroniques câblés qui fournissent directement les coefficients Fk.

6. Librairies

Les différents programmes qui regroupent les "recettes" de calcul numérique sont repris dans des librairies.

Ils sont généralement donnés (vendus) dans une forme directement intégrable à un programme bien écrit, sous forme de modules, de procédures ou routines.

Parmi les nombreuses librairies existantes sur le marché, il faut citer NAG, ou encore IMSL, également les librairies du CERN et celles que chaque centre de calcul peut mettre à la disposition des utilisateurs.
On veillera à consulter avant l'emploi de telle ou telle routine, les domaines spécifiques d'utilisation, les limites, le type d'approximation mise en oeuvre, etc... Les descriptifs et modes d'emploi sont généralement accessibles dans les centres de calcul et dans les bibliothèques.
Compte tenu du fait que les librairies fournissent des routines fort générales, censées pouvoir traiter des cas très variés, on aura néanmoins parfois intérêt à réécrire soi-même le petit algorithme efficace, bien adapté au problème posé, en se basant sur les bonnes "recettes" que l'on retrouvera dans la littérature[1].


[1]. Sans compter que la lecture et la compréhension de certains modes d'emploi (nous ne parlons pas de ceux des librairies mentionnées ici) peut nécessiter un temps qui est de plusieurs ordres de grandeurs supérieur à celui nécessaire pour écrire soi-même une procédure!

Table des matières
Chapitre précédent - Chapitre suivant


Commentaires - Remarques à Eddy Kestemont