next up previous contents
Next: Les Exercices de la Up: LEÇON: Introduction au calcul Previous: Algorithme

Programmation

Le programme en C++ est le suivant:

 
 
#include <stdlib.h>
#include <math.h>
#include <iostream.h>
#include "rgrafpor.h"

const int M = 100;
const float dx = 0.1;
const int jmax = 200;

typedef enum{ texte,graphique } affiche;

class data
{	public:
 	float k, T0, TM, Te; 
 	float a[M];
 	void read();
};

void init( float* T, data& d);
void relax( float* T, data& d);
void showresult( affiche mode, float* T);

void data::read()
{
	cout << "enter k:"; 	 cin >> k;
	cout << "enter Te:"; 	cin >> Te;
	cout << "enter T0:"; 	cin >> T0;
	cout << "enter TM:"; 	cin >> TM;
	for(int m = 0; m< M ; m++) 
    a[m] = float(m)*float(m)/(M-1.)/(M-1.);
}

void init( float* T, data& d)
{
	for(int m = 0; m<= M; m++) 
	   T[m]=d.T0 * float(M- m)/float(M) + d.TM *float(m)/float(M);
}

void relax( float* T, data& d)
{
  const float kdx2 = d.k / dx / dx;
  for(int m = 1; m< M; m++)
  	T[m] = (kdx2 * (T[m+1] +T[m-1])
  	+ d.a[m] * d.Te) / (d.a[m]+  2 * kdx2);
}

void showresult( affiche mode, float* T)
{ int m;
  if(mode==graphique) 
  {
      initgraphique();
      move2( 0, (int)T[0]); 
      for( m = 1; m<= M; m++)
       line2( m, (int)T[m]);
      rattente(1);
      closegraphique();
  } else if(mode==texte)   	
    for( m = 0; m<= M; m++)
      cout<<T[m]<<endl;  
}

void main()
{
	float* T = new float[M+1];
	data d;

	d.read();
	init(T, d);
 for (int j= 0; j< jmax; j++)
	  relax(T, d);

	showresult(texte, T);
}

Cet exemple simple nous montre les quatre étapes d'un logiciel de calcul scientifique :

Les étapes de programmation sont les étapes 2 à 4, l'étape 1 étant une étape de modélisation et d'analyse numérique. Même sur cet exemple simple, le nombre d'instructions dans les parties pré et post-processeurs est plus grand que le nombre d'instructions dans la partie calcul. Cela signifie que le programmeur a passé plus de temps à écrire les pré et post-processeurs. Cette situation est assez générale en calcul scientifique, et c'est la raison principale pour laquelle les personnes qui programment préfèrent utiliser des logiciels commerciaux plutôt que d'écrire eux-mêmes leurs propres programmes d'entrée des données ou d'exploitation graphique.

Enfin remarquons que le programme que nous avons écrit n'est pas très  convivial  , et ceci pour plusieurs raisons :


next up previous contents
Next: Les Exercices de la Up: LEÇON: Introduction au calcul Previous: Algorithme

Olivier Pironneau
Mon May 17 17:14:42 METDST 1999