Sous-sections

6.1 Introduction

6.1.1 Démarche du calcul scientifique

  1. Analyse physique du problème
  2. Modèle mathématique
  3. Analyse numérique
  4. Solution algorithmique
  5. Programmation sur un ordinateur
  6. Analyse physique du résultat

6.1.2 Algorithme

Algorithme:
ensemble de règles précises, qui permettent d'obtenir un résultat à partir d'opérations élémentaires
Algorithme numérique:
données et résultats = nombres
Calcul scientifique:
utilisation d'un ordinateur pour résoudre un modèle mathématique d'un problème physique à l'aide d'algorithmes numériques.
Langage algorithmique:
langage de description d'algorithmes
indépendant des ordinateurs
indépendant des langages (FORTRAN, PASCAL, C, Matlab, Maple)
Langage naturel
proche du langage mathématique
mais explicite sans syntaxe rigide (compilateur=homme)

6.1.3 Exemple

Problème:
détermination du PGCD de 2 nombres entiers a et b
Analyse:
propriété du PGCD
PGCD(a,b)=PGCD(a-b,b) (si $a>b$)
PGCD(a,b)=PGCD(a,b-a) (si $a<b$)
PGCD(a,a)=a
Algorithme PGCD

a,b entiers positifs

tant-que $a\neq b$ faire

  si $a>b$ alors $a\leftarrow a-b$

  sinon $b\leftarrow b-a$

fin tant-que

$PGCD\leftarrow a$
Programme Matlab


\begin{lstlisting}
A=round(1000*rand(1)); B=round(1000*rand(1));
a=A; b=B;
while...
...nd
end;
PGCD=a;
disp(sprintf('PGCD de %d et %d = %d\n',A,B,a));
\end{lstlisting}

Execution du programme Matlab

execution Matlab

6.1.4 Programmation structurée

“La gestion de la complexité d'un problème est l'essence même de la programmation. Nous serons toujours limités par le nombre restreint de détails que l'on peut conserver clairement en mémoire”

  1.  Conception modulaire descendante
    Décomposer le problème général en une succession de sous-problèmes plus simples et si possibles indépendants.
    Déterminer les points essentiels
  2.  Rechercher d'une solution algorithmique
    Utilisation de bibliothèques
  3.  Programmation structurée ascendante
    Des sous-programmes (procédures) au programme principal
    Soigner le fond en priorité et non la forme
    Programmer simplement (sans astuces)


Pr. Marc BUFFAT
marc.buffat@univ-lyon1.fr
2007-02-08