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 :
a=x*x-1,et c'est le pré-processeur qui génère ensuite le tableau a.