Vous êtes sur la page 1sur 56

Introduction à Scilab

Préparé et présenté par

Dr. M. DIOP

1
Table des matières

1 Calcul Matriciel 8

1.1 Vecteurs et matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.1.1 Extraction des éléments d’un vecteur ou d’une matrice . . . . . . . 9

1.1.2 Matrices particulières . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.1.3 Opérations sur les matrices . . . . . . . . . . . . . . . . . . . . . . . 12

1.1.4 Systèmes linéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2 La programmation sous Scilab 21

2.1 Fonctions mathématiques élémentaires . . . . . . . . . . . . . . . . . . . . 21

2.2 Script et fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.3 Les instructions de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.3.1 Opérateurs de comparaison Opérateurs logiques . . . . . . . . . . . 24

2.3.2 La boucle for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.3.3 La boucle while . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.3.4 La commande if . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3 Les graphiques et la visualisation des données en Scilab 32

3.1 Graphes 2D et 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.1.1 Modification de l’apparence d’une courbe . . . . . . . . . . . . . . 34

3.1.2 Annotation de figure . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.2 Autres types de graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2
4 APPLICATION DES METHODES NUMERIQUES AVEC SCILAB 41

4.1 Problèmes aux limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.1.1 Exemples et motivation . . . . . . . . . . . . . . . . . . . . . . . . 42

4.1.2 Méthode des différences finies . . . . . . . . . . . . . . . . . . . . . 43

4.1.3 Discrétisation ou maillage du domaine . . . . . . . . . . . . . . . . 45

4.1.4 Application de la méthode sur le modèle (M1 ) . . . . . . . . . . . . 45

4.2 Travaux Pratiques Méthodes Numériques . . . . . . . . . . . . . . . . . . 50

4.2.1 TP : Équation non linéaire . . . . . . . . . . . . . . . . . . . . . . . 50

4.2.2 TP : Système Linéaire . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.2.3 TP : Interpolation polynomiale . . . . . . . . . . . . . . . . . . . . 52

4.2.4 TP : Intégration numérique . . . . . . . . . . . . . . . . . . . . . . 53

4.2.5 TP : Équation différentielle et système d’équation différentiel . . . 54

4.3 Calcul des structures (barres et poutres ) selon la Méthode des Eléments

Finis (MEF) par Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

4.4 Calculs symboliques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

3
INTRODUCTION

Ce cours intermédiaire entre l’Analyse Numérique et l’Informatique propose une in-

troduction à Scilab et développe un ensemble de fonctionnalités spécifiques à certains do-

maines des sciences comme le traitement du signal, l’optimisation, le traitement d’image,

l’automatisme ... .

Scilab est un logiciel, un outil et en même temps un langage. C’est un logiciel interactif

permettant d’effectuer des calculs numériques complexes particulièrement utiles dans le

domaine de l’ingénierie.

Scilab contient plusieurs fonctions, de calcul ou de traitements de données, d’affichage, de

tracés de courbes et d’algorithmes de calculs numériques.

Scilab permet de travailler soit interactivement en passant des commandes directement

au clavier (comme une calculatrice) ; soit de réaliser des programmes (appelés scripts) ou

de définir des fonctions.

Ce support ne constitue en aucun cas une documentation exhaustive du logiciel Scilab.

Toutefois, les principales notions sont présentées et invitent l’étudiant à chercher par lui-

même les informations complémentaires pour mener à bien ses projets.

Le logiciel est libre. On le télécharge à adresse suivante : http ://www.scilab.org/ pour

remplacer le logiciel payant Matlab.

I Environnement de Scilab

• Pour lancer Scilab dans les environnements Windows ou MacOs, il suffit de cliquer sur

l’icône de l’application. La fenêtre de commande s’ouvre comme suit

4
où on distingue 4 fenêtres :

1 : C’est la zone du chargement du répertoire de travail et des fichiers.

2 : C’est la zone de commande (aussi appelé le terminal). Cette zone permet de taper les

commandes ou les expressions à évaluer à droite du prompt −− > puis taper < enter >

pour déclencher le processus d’évaluation.

3 : C’est la zone des variables, des tableaux. Cette zone permet de visualiser les variables

définies, leur type et la taille.

4 : C’est la zone de l’historique des commandes. Il est possible de faire glisser ces com-

mandes vers la fenêtre de commande.

• Scilab est un langage interprété, c’est à dire qu’il exécute directement (sans compilation)

les commandes qu’on entre dans la fenêtre de commandes.

Exemple

−− > 2+5

ans =

Le résultat est mis automatiquement dans une variable appelée ans (answer). Celle-ci peut

5
être utilisée pour le calcul suivant.

Il peut être utile d’enregistrer le résultat d’un calcul dans une variable autre que ans. On

le fait en mettant le nom de la variable à gauche d’un signe égal qui à droite a le résultat

du calcul :

Exemple

−− > a=2+5

a=

• Scilab gère les nombres entiers, réels, complexes, les chaı̂nes de caractères ainsi que les

tableaux de nombres de façon transparente.

• Taper directement dans la console a deux inconvénients : l’enregistrement n’est pas

possible, et si plusieurs lignes d’instructions ont été tapées, les modifications ne sont pas

aisées.

• Pour ouvrir l’éditeur à partir de la console, cliquez sur la première icone dans la barre

d’outils ou sur Applications > SciNotes dans la barre de menus. (ou dans la console edit).

L’éditeur s’ouvre avec un fichier par défaut qui s’intitule « sans titre 1 »

6
• Pour compiler le fichier on clique sur Exécuter dans la barre de menus, trois options

sont proposées :

a) fichier sans écho : le fichier est exécuté sans que le programme ne s’écrive dans la

console (en ayant enregistré le fichier au préalable).

b) fichier avec écho : réécrit le fichier dans la console et l’exécute.

c) jusqu’au curseur, avec écho : réécrit la sélection choisie avec la souris dans la console

et l’exécute.

• L’aide sur SciLab est caractérisé par la fonction help qui va afficher l’aide général. Pour

avoir une aide spécifique, il faut renseigner à la fonction help ce que nous voulons chercher

réellement.

Par exemple help (suivi d’un nom de fonction ) : se passe d’explication !

• Le logiciel Scilab est essentiellement basé sur le calcul matriciel numérique. Tous les

objets utilisés dans Scilab sont donc définis au travers de matrices ou vecteurs.

7
Chapitre 1

Calcul Matriciel

1.1 Vecteurs et matrices

Les composantes d’une même ligne sont séparées par un espace ou une virgule. Les

lignes sont séparées par un point virgule. La matrice est déterminée par des crochets,

c’est-à-dire []. Par exemple,

-->A = [1 2;3 4]

A =

1. 2.

3. 4.

Les composantes d’une matrice peuvent être des nombres réels, complexes ou d’un

autre type Scilab. Par exemple,

-->v=[0.7 sqrt(2) %pi %i]

v =

0.7 1.4142136 3.1415927 i

8
Afin d’alléger l’affichage, un point-virgule « ; » en fin de commande empêche le renvoie

du résultat dans la fenêtre (évidemment l’instruction est toujours exécutée).

En l’absence de point-virgule ( ;), il s’affichera à l’écran.

1.1.1 Extraction des éléments d’un vecteur ou d’une matrice

On accède à la composante i (élément i) d’un vecteur v en tapant :

−− > v(i)

Soit A une matrice, l’élément en troisième ligne et quatrième colonne s’obtient par :

» A(3,4)

Pour extraire la ligne i de A, on écrit :

−− > A(i, :)

et la colonne j de A est donnée par :

−− > A( :, j)

On peut aussi facilement extraire des sous matrices d’une matrice à l’aide de cette syntaxe

» B=A([1 3],[1 2])

Ici B sera la matrice formées des lignes 1 et 3 et des colonnes 1 et 2 de la matrice A.

Pour mettre sous forme d’un vecteur colonne les colonnes de A les unes après les autres,

on écrit :

−− > A( :)

Enfin, pour supprimer des lignes ou des colonnes d’une matrice, on les remplace par une

matrice vide. Par exemple, la commande suivante supprime la première ligne de A :

−− > A(1, :)=[]

On peut également obtenir un bloc d’éléments d’une matrice. Par exemple,

A([1 2], :) ou A(1 :2, :) fournit la matrice composée des 2 premières lignes de A

A( :, [2 3]) ou A( :, 2 :3) fournit la matrice composée des colonnes 2 et 3 de A

9
TP Soit  
 0 −8 6 6
 
 
A=  ∈ M4 (R)
−1 −8 7 −8

 
 
1 −14 11 1

1. créer la matrice A.

2. Tester les commandes suivantes, et les commenter.

A(2,3), A(2, :), A( :,3), A(2 :3, :),A(1 :2,3 :4), A([1,3],[2,4]),A( :,1)=[], A(2, :)=[], A=[A ;[0

0 0]],A( :,4)= [0 ;0 ;0], A=[A,[1 1 1 1]],A(3, :)= [1 1 1 1].

NB : Plusieurs commandes peuvent être écrites sur une ligne. Elles seront alors séparées

par ’ ;’ou par ’,’

Le symbole // dans une ligne a pour effet que le reste de la ligne ne sera pas exécuté (ceci

permet des commentaires dans un fichier d’exécution)

TP : Observez l’effet de : sur les exemples suivants :

−− > y=[1 :10]

−− > z=[1 :2 :7]

Remarque C’est l’opérateur d’incrémentation sous Scilab. Par défaut l’incrément est de

1.

1.1.2 Matrices particulières

Dans Scilab, il existe des fonctions qui permettent de générer automatiquement des

matrices particulières.

La fonction ones(m,n) construit une matrice de taille m × n dont toutes les composantes

sont égales à 1. Par exemple,

-->A=ones(3,5)

A =

1. 1. 1. 1. 1.

10
1. 1. 1. 1. 1.

1. 1. 1. 1. 1.

De façon similaire, on peut définir une matrice de composantes nulles avec zeros(m,n).

-->A=zeros(5,3)

A =

0. 0. 0.

0. 0. 0.

0. 0. 0.

0. 0. 0.

0. 0. 0.

La fonction eye(m,n) construit une matrice dont les éléments diagonaux sont égaux à

1, et le reste des composantes est nul.

-->A=eye(3,4)

A =

1. 0. 0. 0.

0. 1. 0. 0.

0. 0. 1. 0.

La commande linspace(a,b,n) permet de créer un vecteur avec de n éléments uni-

formément espacés, allant de a à b.

v=linspace(1,5,3)

v =

1. 3. 5.

11
Nous présentons dans la suite (TP) un ensemble de fonctions usuelles liées à l’utilisation

des matrices.

TP Soit la matrice A= [1 2 3 ;2 5 4 ;1 0 -1]

Tester les commandes suivantes, et en déduire le sens de chacune

max(A) , min(A) , rank(A) , det(A) , diag(A) , triu(A) tril (A), inv(A) et spec(A)

1.1.3 Opérations sur les matrices

Pour obtenir les dimensions d’un vecteur, on peut utiliser les fonctions size ou length.

Considérons les séquences suivantes :

-->p=[1 2 3 4]

p =

1. 2. 3. 4.

-->q=p’

q =

1.

2.

3.

4.

Maintenant pour

-->length(p)

ans =

4.

12
Scilab renvoie 4 et il renvoie aussi la même valeur que

-->length(q)

ans =

4.

De même,

-->size(p)

ans =

1. 4.

-->size(q)

ans =

4. 1.

0
p est la transposée de p. La fonction length peut aussi être utilisée pour les matrices.

Elle retourne le nombre d’éléments d’une matrice.

Les opérateurs les plus courants :+, −, ∗, /,∧ s’utilisent de manière classique. Le dernier

signifie ”puissance”.

TP Entrez ces lignes à l’invite de Scilab.

−− > 1+2*3

−− > (1+2)*3

−− > 2∧ (1/2)

−− > 2∧ 1/2

Au vu des résultats précédents et d’autres que vous auriez pu essayer, proposez des règles

de priorité dans Scilab.

13
Attention

Avec Scilab, il faut être très attentif sur le type d’opérations souhaitées et cela en parti-

culier lorsque l’on a affaire à des multiplications, des puissances, etc.

Comme exemple, considérons deux vecteurs que l’on multiplie entre eux :

v1 = [1 ; 2 ; 3] ;

v2 = [1, 2, 3] ;

L’opération v1*v2 effectue le produit d’un vecteur colonne v1 avec un vecteur ligne v2 et

le résultat est une matrice 3x3 :

−− > y1 = v1*v2

−− > y1 =

1. 2. 3.

2. 4. 6.

3. 6. 9.

En croisant v1 et v2, on obtient le produit scalaire :

−− > y2 = v2*v1

−− > y2 =

−− > 14

Alors que si l’on veut effectuer le produit composante par composante, il faut utiliser

l’opérateur de multiplication précédé d’un point (.*) :

−− > y3 = v1’.*v2

−− > y3 =

−− > 1 4 9

Les opérations usuelles entre matrices et vecteurs sont aussi possibles. Par exemple, si A

et B sont des matrices, on peut écrire

-->A=[1 2;3 4]

A =

14
1. 2.

3. 4.

-->B=[4 3;2 1]

B =

4. 3.

2. 1.

-->A+B

ans =

5. 5.

5. 5.

-->A-B

ans =

- 3. - 1.

1. 3.

-->A*B

ans =

8. 5.

20. 13.

0
La transposée d’une matrice est obtenue avec . Par exemple, C = AT s’obtient avec

15
-->C=A’

C =

1. 3.

2. 4.

Les produits terme à terme sont aussi définis. Soient A = (aij ) et

B = (bij ), deux matrices de même dimensions. Ainsi,

-->P=A.*B

P =

4. 6.

6. 4.

construit une matrice P = (pij ) ayant les mêmes dimensions et définie par

pij = aij bij .

De même

-->Q=A./B

Q =

0.25 0.6666667

1.5 4.

fournit la matrice Q = (qij ) définie par

qij = aij /bij .

16
TP Soit la matrice A= [1 2 3 ;2 5 4 ;1 0 -1]

Tester les commandes suivantes, et en déduire le sens de chacune

max(A) , min(A) , rank(A) , det(A) , diag(A) , triu(A) tril (A) et inv(A)

Description

- max(A) : renvoie un vecteur-ligne contenant les valeurs maximales associées à chaque

colonne.

- min(A) : renvoie un vecteur-ligne contenant les valeurs minimales associées à chaque

colonne.

- rank(A) : renvoie le rang de la matrice.

- det(A) : renvoie le déterminant de la matrice.

- diag(A) : extrait la diagonale de la matrice.

- triu(A) : extrait la matrice-triangle supérieure de M.

- tril : donne la matrice-triangle inférieure.

- inv(A) : renvoie l’inverse de la matrice.

TP Soient les matrice suivantes


     
 1 0 1   1 1 1   1 0 0 
     
     
A= 
 ,B =
1 0 1  
 ,C =
0 0 0  
 1 0 0 

     
     
1 0 1 0 0 0 1 1 1

1. Entrer ces données sous Scilab.

2. En utilisant uniquement les commandes ones et zeros donner les instructions qui per-

mettent de construire les matrices A, B et C.



5
4. Calculer A + B, A × B, A2 + 2
B.

5. déterminer les dimensions de la matrice A, en extraire la deuxième colonne de A et

l’élément a1,3 .

6. Calculer les déterminants et inverses de chacune des matrices.

NB Les dimensions des matrices intervenant dans les opérations doivent évidemment être

17
compatibles pour l’opération envisagée. Si tel n’est pas le cas, un message d’erreur sera

affiché par SCILAB.

1.1.4 Systèmes linéaires

L’algorithme d’élimination de Gauss est implémenté pour résoudre les systèmes linéaires.

Si la matrice A et le second membre du système Ax = b sont construits, on obtient la

solution en utilisant l’opérateur \, c’est-à-dire

-->A=[1 -1 2;7 -3 2;1 8 5]

A =

1. - 1. 2.

7. - 3. 2.

1. 8. 5.

-->b=[0; 2; -5]

b =

0.

2.

- 5.

-->x=A\b

x =

0.1833333

- 0.45

- 0.3166667

18
Il existe d’autres fonctions fonctions numériques pour résoudre les systèmes linéaires

algébriques. Par exemple, on peut remplacer dans le programme précédent l’instruction

x = A\b par

-->A1=inv(A)

A1 =

- 0.2583333 0.175 0.0333333

- 0.275 0.025 0.1

0.4916667 - 0.075 0.0333333

-->x=A1*b

x =

0.1833333

- 0.45

- 0.3166667

TP Résoudre le système suivant


x + 2y − z = 1







 −x + 3y − z = 0



−x + 2y − 5z = 0


TP Soit  
 0 1 1 
 
 
A= 
 1 0 1 

 
 
1 1 0

1. Calculer A2 et vérifier que A2 = A + 2I3 où I3 est la matrice identité d’ordre 3.

2. La matrice A est-elle inversible.

19
3. Si oui, Calculer son inverse A−1 .

TP On considère la matrice carrée d’ordre 3

 
 0 2 −1 
 
 
A= 
 −1 3 −1 

 
 
−1 2 0

1. Déterminer le spectre de A.

2. La matrice A est-elle inversible ? Si oui, Calculer A−1 .

3. a) En déduire la solutions du système linéaire suivant :


2y − z = 1







 −x + 3y − z = 0



−x + 2y = 0


Remarque

Les commandes effectuées jusqu’à maintenant ont créé des variables qui sont stockées

dans l’espace de travail de Scilab. La commande

cd : indique le répertoire de travail courant

dir : indique ce que contient le répertoire de travail courant

who : indique la liste des variables dans le workspace

Pour en savoir plus, il faut exécuter la commande whos

La commande clear détruit toutes les variables de l’espace de travail.

clc : efface la console.

20
Chapitre 2

La programmation sous Scilab

2.1 Fonctions mathématiques élémentaires

Un certain nombre de fonctions mathématiques de base sont implémentées dans Sci-

lab. Parmi les fonctions fréquemment utilisées, on peut noter les suivantes :

−− > sin(x) : le sinus de x,

−− > cos(x) : le cosinus de x,

−− > tan(x) : le tangent de x,

−− > sinh : le sinus hyperbolique,

−− > cosh : le cosinus hyperbolique,

−− > tanh : le tangent hyperbolique,

−− > asin : l’arc sinus x,

−− > acos : l’arc cosinus,

−− > atan : l’arc tangent ,

−− > exp : exponentielle

−− > log : logarithme naturel,

−− > log10 : logarithme à base 10,

−− > sqrt : racine carrée

−− > abs : valeur absolue ou module complexe,

21
−− > conj : complexe conjugué,

−− > imag : partie imaginaire,

−− > real : partie réelle,

−− > norm : norme, vectorielle ou matricielle (diverses options...),

−− > sum : somme de tous les éléments d’un argument vectoriel,

2.2 Script et fonctions

Un script est un ensemble d’instruction rassemblées dans un fichier : c’est la routine

principale d’un programme. Scilab a son propre éditeur, mais n’importe quel éditeur de

text suffit.

Comme nous l’avons vu précédemment Scilab contient un grand nombre de fonction

prédéfinie, mais à coté de ses fonctions prédéfinies, Scilab offre à l’utilisateur la possibi-

lité de définir ses propres fonctions : La première méthode permet de définir des fonctions

simples sur une ligne de commande. La seconde, beaucoup plus générale permet de définir

des fonctions très évoluées en la définissant dans un fichier.

♠ Commande deff()

Lorsque le corps de la fonction se résume à une expression relativement simple, on peut

créer la fonction directement dans l’espace de travail courant, sans utiliser un m-file .

La syntaxe est simple :

deff(’y=f(x)’,’y=expression’)

Exemple définir f (x) = x2 + x + 1

−− > def f (0 y = f (x)0 ,0 y = x∧ 2 + x + 10 )

−− > f(2), f(-1), f(0),f(10)

Remarque

L’expression mathématique qui constitue le corps de la fonction ainsi que les variables

sont considérées par Scilab comme des chaines de caractères et doivent donc être tapées

22
entre apostrophes.

♠ Les fonctions

Pour définir une fonction en Scilab, la méthode la plus courante est de l’écrire dans un

fichier dont le nom comporte l’extension .sci, dans lequel on pourra d’ailleurs mettre plu-

sieurs fonctions. Chaque fonction doit commencer par l’instruction :

function[y1 , y2 , ...yn ] = nomfonction(arg1, arg2, · · · argn)

y1 =

y2 =

..
.

yn =

endfunction

où les variables arg1 , arg2 , · · · argn sont les variables d’entrées et ils ne doivent pas être

modifiées à l’intérieur de la fonction.

Les variables y1 , y2 , ...yn sont les arguments de sortie, la fonction doit affecter une valeur

pour y1 , y2 , ...yn .

Le rôle d’une fonction est d’effectuer des opération sur une ou plusieurs entrée pour ob-

tenir un résultat (appelé sortie).

Une fonction est appelé depuis un script (un programme principal) ou dans une fenêtre

commande en utilisant le nom du script comme commande :

» nom fonction( )

TP : définir une fonction avec function où f (x) = x2 +x+1 et calculer f(2), f(-1), f(0),f(10)

function[y] = lmi(x)

23
y = x.∧ 2 + x + 1

end

Pour exécuter le programme il suffit de taper dans la fenêtre de commande lmi(valeur).

TP Définir la fonction g avec function où g(x) = x3 + 6x2 + x + 1

L’utilisateur peut saisir des informations au clavier grâce à la commande input(...).

Il peut également afficher quelque chose en utilisant la commande disp(...) qui affiche

le contenu.

−− > a=input(’valeur de a :’)

−− > A=[1 2 3] ;

−− > disp(A)

2.3 Les instructions de contrôle

Les instructions de contrôle sont à la base de tout calcul numérique. En Scilab, les

boucles for et while sont très utilisées pour les processus itératifs. Leur utilisations est le

premier pas dans la programmation. Il est donc indispensable de les bien comprendre.

2.3.1 Opérateurs de comparaison Opérateurs logiques

== égal

< inférieur à

> supérieur à

<= inférieur ou égal à

>= supérieur ou égal à

∼= différent de (non égal)

| ou

∼ non

24
2.3.2 La boucle for

La boucle for / end répète une instruction un certain nombre de fois. Sa forme

générique est :

for compteur = début : pas : fin}

instruction 1

instruction 2

instruction k

end

for est associée à une variable, et exécute un processus plusieurs fois en prenant à chaque

fois une nouvelle valeur pour cette variable.

. Une utilisation est la syntaxe

for i = 1 : 2 : 10

instruction 1

instruction 2

instruction k

end

Ici 2 est la valeur du pas. Ainsi les valeurs correspondantes de i sont 1, 3, 5, 7 et 9.

Exemple Soit A=[1 1 2 3] utilise la boucle for pour soustraire à tous les éléments (sauf

le premier) de ce vecteur A la première valeur (i.e. A(1))

25
−− > for i = 2 : 4

−− > A(i)=A(i)-A(1)

−− > end

Exemple on veut construire une matrice 5 × 5 contenant 1 sur la diagonale et 2 sur la

diagonale supérieure, tandis que les autres valeurs sont nulles.

-->A=zeros(5,5);

-->for i=1:5

-->A(i,i)=1;

-->end

-->for i=1:4

-->A(i,i+1)=2;

-->end

-->disp(A)

1. 2. 0. 0. 0.

0. 1. 2. 0. 0.

0. 0. 1. 2. 0.

0. 0. 0. 1. 2.

0. 0. 0. 0. 1.

TP Calculer
100
i2
X
S=
i=1

2.3.3 La boucle while

La boucle while / end répète une instruction jusqu’à ce qu’une condition, ou un groupe

de conditions soit vérifié. Elle se met sous la forme

26
while condition

instruction

end

Example Calculer
100
i2
X
S=
i=1

en utilisant la boucle while.

−− > S=0

−− > i=1

−− > while i <= 100

−− > S = S + i2 ;

−− > i=i+1

−− > end

Example on va générer la matrice A précédente avec la boucle while

-->A=eye(5,5);

-->i=1;

-->while i<5

--> A(i,i+1) = 2;

--> i = i + 1;

-->end

-->disp(A)

1. 2. 0. 0. 0.

0. 1. 2. 0. 0.

27
0. 0. 1. 2. 0.

0. 0. 0. 1. 2.

0. 0. 0. 0. 1.

TP Soient la matrice et les vecteurs colonnes suivants


     
 1 2 2   1   5 
     
     
A= 
 1 −1 1 ,b
 = 
 0  , u0
 = 
 2 

     
     
5 1 −2 5 −4

et on définit, pour n ≥ 1 la suite de vecteurs un+1 = Aun + b

1. Construire une fonction suite.sci calculant les premiers termes de la suite un . Cette

fonction aura comme arguments d’entrée les données suivantes : la matrice A, le second

membre b, le terme initial u0 , et le nombre de termes nbt voulus (prenez nbt=100).

2. Représenter graphiquement l’évolution de chacune des composantes.

2.3.4 La commande if

Les instructions conditionnés permettent d’ effectuer une action si une certaine condi-

tion est satisfaite.

La plus simple est if, qui exécute des commandes seulement si une condition est remplie.

Dans sa version la plus complète la structure if permet aussi de prévoir ce que l’on fait si

la condition n’est pas remplie.

La commande if

La forme la plus simple est la structure :

if condition 1

expression 1

else

expression 2

end

28
La forme générale de la commande if est

if condition 1

expression 1

elseif condition 2

expression 2

else

expression 3

end

TP Faire un programme sous Scilab qui résout le problème suivant :


x si x<0



y=
x2 x≥0


 si

TP on veut générer la matrice A précédente avec if

-->A=zeros(5,5);

-->for i=1:5

-->for j=1:5

-->if j==i+1 then

--> A(i,j) = 2;

-->elseif j==i

--> A(i,j) = 1;

-->end

-->end

-->end

-->disp(A)

29
1. 2. 0. 0. 0.

0. 1. 2. 0. 0.

0. 0. 1. 2. 0.

0. 0. 0. 1. 2.

0. 0. 0. 0. 1.

D’autres instructions de contrôle telles que switch, break, continue, et error sont dispo-

nibles. Vous pourrez consulter la documentation avec la commande help suivi du nom de

la commande.

TP

Faire un programme sous Scilab qui trouve les racines d’une équation de second degré

ax2 + bx + c=0

TP

Faire un programme sous Scilab qui résout le système suivant :


x si x<0







y =  x2 si x>0
 



 10 si x=0

TP

Construction d’une fonction de demande de la forme :



0 si p ≤ 2







y= 1 − 0.5p si 2 < p ≤ 3




2p−2


 sinon

TP Soit 
Xn+1 = AXn + b





 X0 donné

30
   
 1 2 −1   1 
   
   
Avec A = 
 −1 3 −1 
 et b= 
 1 

   
   
−1 2 0 1
 
 1 
 
 
Calculer X1 , X2 , X3 , X4 , X5 , X6 , X7 . Prenez X0 = 
 0 

 
 
1
• Nous pouvons calculer le temps CPU d’exécution d’un programme. Il suffit de faire

l’instruction tic au début du script et ensuite de faire toc en fin du script pour avoir le

temps d’ exécution du programme.

31
Chapitre 3

Les graphiques et la visualisation des

données en Scilab

Dans cette partie, nous allons présenter les principes de base indispensable pour des-

siner des courbes sous Scilab. Les graphiques, crées peuvent être visualiser en TP.

3.1 Graphes 2D et 3D

La commande de base utilisée est la commande plot. Dans sa syntaxe la plus simple,

elle prend deux vecteurs x et y de même dimension en entrée et retourne un graphique

où sont reliés continûment les points (xi ; yi ).

La commande plot(x, y) trace le graphe de y en fonction x.

Exemple : Pour obtenir le graphe de la fonction sin(x) sur l’intervalle [0, 2π], nous com-

mençons par définir deux vecteurs :

−− > x = [0 : .5 : 2π] ;

−− > y=sin(x) ;

ensuite nous construisons le graphe au moyen de la commande :

−− > plot(x,y)

Remarque

32
Si une figure existe déjà, elle trace le graphe sur cette figure sinon Scilab crée automati-

quement une nouvelle fenêtre.

Pour créer une autre figure, utiliser la fonction figure.

Exemple :

−− > figure(1) ;

−− > x=[0 : .1 : 2π] ;

−− > f=cos(x) ;

−− > plot(x,f)

−− > figure(2) ;

−− > g=sin(x) ;

−− > plot(x,g)

Ces deux séquences construisent deux fenêtres, la première contenant le graphe de cos(x),

la seconde le graphe de sin(x).

TP :

−− > x=[0 : .1 : 2 ∗ π] ;

−− > f=cos(x) ;

−− > g=sin(x) ;

−− > plot(x,f)

−− > plot(x,g)

Les deux graphes, celui de cos(x) et celui de sin(x), apparaissent dans la même fenêtre et

dans le même système d’axes.

Remarque : Scilab définit automatiquement un système d’axes.

On peut également utiliser plot avec plusieurs couple (x,y).

−− > x=[0 : .1 : 2 ∗ π]

−− > f=cos(x) ;

−− > g=sin(x) ;

−− > plot(x,f,x,g)

33
Le tracé d’une courbe paramétrique dans l’espace se base sur la commande param3d

Exemple

−− > t=-3*pi :pi/10 :3*pi ;

−− > x = 4*sin(t) ;

−− > y =4*cos(t) ;

−− > z =2*t ;

−− > param3d3(x,y,z)

Exemple Commande plot3d

−− > t = linspace(0,10*pi,500) ;

−− > x = cos(t) ;

−− > y = sin(t) ;

−− > plot3(x,y,t)

−− > title(’Helice’)

On a alors différents plot :

plotframe : rectangle de représentation

plot2d : plusieurs courbes avec styles différents

plot2d1 : idem, avec plus d’options

plot2d2 : représentation en escalier

plot2d3 : barres verticales

plot2d4 : flèches

fplot2d : représenter des fonctions

3.1.1 Modification de l’apparence d’une courbe

Lorsque plusieurs tracés ont lieu dans la même fenêtre, il peut être intéressant d’utiliser

un style différent pour distinguer les différents tracés. Pour cela on ajoute un troisième

argument à la définition de chaque tracé de type chaı̂ne de caractère à la fonction plot

34
comme suit :

P lot(x, y,0 marqueur0 )

Le marqueur est un caractères pris dans le tableau ci-dessous :

couleurs symboles Tracés continus

y jaune . point - trait continu

m magenta ◦ cercle : pointillés

c cyan × croix -. trait-point

r rouge + plus – trait-trait

g vert * étoiles

b bleu d diamants

Exemple

−− > x = [0 :0.1 :2*pi ] ;

−− > y = cos (x) ;

−− > plot (x,y,’*’)

Exemple

−− > x=[0 :0.1 :2*pi] ;

−− > f=cos(x) ;

−− > g=sin(x) ;

−− > plot(x,f,’o’,x,g,’*’)

Exemple

−− > x = [0 :0.1 :2*pi ] ;

−− > y1 = cos(x) ;

−− > y2 = cos(2 ∗ x) ;

−− > y3 = cos(4 ∗ x) ;

−− > y4 = cos(6 ∗ x);

−− > plot (x,y1,’y’ )

−− > plot (x,y2 ,’r’)

35
−− > plot (x,y3 ,’k :’)

−− > plot (x,y4 ,’g–’)

3.1.2 Annotation de figure

Les différentes fonctions suivantes permettent de gérer les labels des axes et commen-

taires sur les figures, ainsi que diverses fonctions pour manipuler les graphiques.

Pour donner un titre à une figure, on utilise la fonction title comme suit :

−− > title(’titre de la figure’)



Pour donner un titre pour l’axe des ordonnées, on utilise la fonction ylabel comme

suit :

−− > ylabel(’axe des ordonnées’)



Pour donner un titre pour l’axe des ordonnées, on utilise la fonction xlabel comme

suit :

−− > xlabel(’axe des abscisses’)



Pour faire un quadrillage on utilise la fonction xgrid comme suit :

−− > xgrid

La légende (surtout en cas de plusieurs graphes) peut être affichée en utilisant la com-

mande legend(legend1, legend2, ... ).

Exemple de programmation

TP :

−− > x = -pi : 0.1 : pi ;

−− > y = sin(x);

−− > plot(x,y)

−− > xgrid

−− > xlabel (’Temps’)

−− > ylabel (’Température’)

−− > title (’Evolution de la température en fonction du temps’)

36
−− > legend (’y=sin (x)’) ;

TP

Soit un vecteur x contenant des valeurs comprises entre 0 et 10 avec un pas de 0.05.

1. Ecrire le fichier (f.sci) qui crée la fonction f (x) = x exp(−x2 ) − 0.2/x3

2. Ecrire (prog.sci) qui trace le graphe de f (x), Ajouter le libellé des axes (titres) et don-

ner un titre à la figure avec des grilles.

3. Mettre la courbe de f (x) en ligne pointillée courte rouge

TP

Soit un vecteur x contenant des valeurs comprises entre −6π et 6π avec un pas de 0.001.

Soit deux fonctions f et g définie par : f (x) = sin( π4 x) et g(x) = cos( π4 x).

Écrire un script Scilab représentant f et g en fonction de x sur le même graphe.

(Veillez à ce que ce graphe ait un titre, des noms aux axes, une légende).

Il est possible de décomposer une fenêtre en sous-fenêtres et d’afficher une figure différente

sur chacune de ces sous-fenêtres grâce à la commande subplot comme suit :

−− > Subplot(m,n,p) : Découpe la fenêtre graphique en m lignes et n colonnes et trace

la courbe dans la case numéro p.

TP :

1. Soit un vecteur x contenant des valeurs comprises entre 0 et 2π avec un pas de 0.1.

Soit les fonctions

f1 (x) = cos(x), f2 (x) = cos(2x), f3 (x) = cos(4x) et f4 (x) = cos(6x).

Écrire un script Scilab représentant f1 , f2 , f3 et f4 ,en fonction de x sur le même graphe.

2. Utiliser la fonction subplot pour tracer ces courbes dans la même fenêtre (Veillez à ce

que chaque graphe ait un titre, des noms aux axes, une légende).

TP :

Les équations paramétriques d’une ellipse centrée à l’origine sont :


x(t) = A cos(t)



avec 0 ≤ t ≤ 2π


 y(t) = B sin(t)

37
1 Tracer ces équations dans le plan pour A = 2 et B = 1.

2 Ajouter un titre et des labels.

TP :

Soit un signal créneau f(t) d’amplitude A, de période T et de valeur moyenne nulle. Sa

décomposition en série de Fourier est donnée par :

+∞
X
f (t) = an cos(nwt)
n=1

Avec an = 2A

sin(n π2 ) et w = 2π
T

Représenter le signal f(t) à partir de sa décomposition en série de Fourier pour différentes

valeurs de n.

A.N : On prendra A = 2 et T = 0.5. Échelle temporelle : 0 ≤ t ≤ 2 avec un pas de 0.001.

•Surfaces (ou nappes) : le tracé d’une surface dans l’espace se base sur : la fonction

mesh(X,Y,Z) ou surf(X,Y,Z)

Exemple : Représentation de la surface d’une parabole de type : z = x2 + y 2 .

−− > x = -10 :0.8 :10 ;

−− > y = x ;

−− > [X, Y ]=meshgrid(x,y) // Création de deux matrices X et Y qui définissent le

domaine de calcul de Z.

−− > Z = X.∧ 2 + Y.∧ 2 ; // Calcul de Z.

−− > mesh(X,Y,Z) //Représentation en  fil de fer  de la surface d’équation Z.

−− > surf(X,Y,Z) //Donne une représentation où les mailles sont colorées.

Exemple : Représentation de la fonction z(x, y) = cos(x)sin(y) sur [−π : 0.2 : π] × [−π :

0.2 : π]

−− > x = [- pi :0.2 : pi ] ;

−− > y = [- pi :0.2 : pi ] ;

−− > [X,Y] = meshgrid (x,y) ;

−− > Z = cos (X ).* sin(Y) ;

38
−− > surf (X,Y,Z).

TP Représenter la surface définie par la fonction z = sin(xy) sur le carré suivant [− π2 , π2 ]×

[− π2 , π2 ] à l’aide d’une grille de points 31 × 31.

Remarque Rotation de la surface

Dans le cas d’une nappe, la figure proposée par Scilab n’est pas toujours très lisible. Il faut

cliquer sur l’icône pivoter en haut à gauche de la fenêtre graphique, puis faire tourner

la figure en maintenant le clic droit enfoncé sur le graphique jusqu’à obtenir une vue

correcte.

3.2 Autres types de graphes

Scilab ne permet pas uniquement l’affichage des point pour tracer des courbes, mais

il offre aussi la possibilité de tracer des diagrammes en bâton et des histogrammes.

Les calculs statistiques de base peuvent être effectués avec Scilab. Pour des calculs plus

complexes, il existe une librairie spécialisée : la Statistics Toolbox.

Exemple Traitement statistique

Application

Pour des véhicules légers on a relevé les consommations moyenne de carburant en fonction

des vitesses présentée dans le tableau ci-après.

Vitesse (km/h) 10 20 30 40 50 60 70 80 90

Consommation (l/100 km) 16.5 11.5 9 7.5 6.8 6.6 7 7.5 9

1. Représenter graphiquement le nuage de points.

2. Calculer les moyennes arithmétiques, les variances, les écart type, la covariance de x y

et le coefficient de corrélation de cette série.

3. Faites une représentation par un diagramme à bâton.



Pour représenter graphiquement le nuage de points on utilise la fonction plot comme

suit :

−− > plot(X,Y)

39
On peut également utiliser plod2d

Pour la moyenne on utilise la fonction mean comme suit :

−− > mean (X)



Pour la variance on utilise la fonction var comme suit :

−− > var(X,1) ; var(Y,1)



Le calcul de l’écart type peut se faire par la commande :

−− > st− deviation==sqrt(variance de X)



Pour tracer un graphe à bâton nous utilisons la fonction bar qui a le même principe

de fonctionnement que plot

Il est possible de modifier l’apparence des bâtons

Parmi les fonction de dessin, on peut trouver : histplot, hist3d pie, polarplot, stem...

etc.

TP Tester ces commande sur l’application.

40
Chapitre 4

APPLICATION DES METHODES

NUMERIQUES AVEC SCILAB

Quand un problème physique, mathématique, chimique, économique ...etc, devient

complexe, on a recours à la notion de modèle mathématiques.

L’analyse numérique est le domaine des mathématiques où l’on conçoit et étudie des

méthodes de résolution de certains problèmes mathématiques, en général issus de la

modélisation de phénomènes réels, et dont on cherche à calculer la solution ou son ap-

proximation à l’aide d’un calculateur.

Nous allons voir dans ce qui suit, comment utiliser Scilab comme un véritable langage de

programmation.

Avant de programmer il faut :

1) analyser le problème : analyser et établir le contexte.

2) définir le problème : développement mathématique.

3) établir le système de traitement : qu’a-t-on entré et que veut-on en sortie.

4) créer l’algorithme de calcul : que va-t-on vouloir faire étape par étape

5) coder l’algorithme en langage Scilab ou Matlab

6) évaluer chaque étape : lancer le programme à chaque étape et voir la cohérence des

résultats.

41
4.1 Problèmes aux limites

4.1.1 Exemples et motivation

Nous citons quelques modèles mathématiques traduisant des phénomènes physiques

et mécaniques.

1. Déformation d’un fil élastique

Soit le modèle M1 suivant trouver u : Ω =]a, b[→ R :

− u00 (x) + c(x)u(x) = f (x), ∀x ∈]a, b[ (4.1)

u(a) = ga , (4.2)

u(b) = gb (4.3)

Où c(x) ∈ L∞ (]a, b[) un coefficient qui dépend des propriétés du matériau (module de

Young, de l’inertie et du poids) et f ∈ L2 (]a, b[) représente la charge extérieure.

Ce problème modélise la déformation u d’un fil élastique de longueur b − a avec (a < b)

fixé (ga = gb = 0) à ses extrémités x = a et x = b. 6.1 est l’équation de conservation et

6.2 représente les conditions aux limites.

2. Diffusion de la chaleur

Soit le modèle (M2 ) suivant trouver T :]a, b[×R∗+ → R tel que :

∂T (x, t) ∂ 2 T (x, t)
−α = f (x, t), ∀x ∈]a, b[ , ∀t > 0 (4.4)
∂t ∂x2
T (x, 0) = T0 (x), ∀x ∈]a, b[, (4.5)

T (a, t) = Ta (t), ∀t > 0, (4.6)

T (b, t) = Tb (t), ∀t > 0 (4.7)

42
Où T est la température de la barre métallique de longueur l([a, b]) = b − a, α > 0 le

coefficient de diffusion thermique de la barre. Ce problème modélise la diffusion de la

chaleur le long d’une barre métallique [a, b].

3. Déformation d’une poutre encastrée

Soit le modèle (M3 ) suivant trouver u :]a, b[→ R :

u(4) (x) + b(x)u(x) = f (x), ∀x ∈]0, l[ (4.8)

u(a) = u(b) = 0, (4.9)

u0 (a) = u0 (b) = 0 (4.10)

Es
Où b(x) = Ep Ip (x)
, Es module de réaction du sol, Ep le module d’élasticité du pieu, Ip (x)

l’inertie du pieu, f ∈ L2 (]a, b[) et 0 < b ∈ L∞ (]a, b[). Ce problème modélise la déformation

u d’une poutre encastrée de longueur b − a.

Tous ces problèmes sont appelés ”problèmes aux limites” et leur résolution analytique est

très complexe et généralement impossible.

4.1.2 Méthode des différences finies

Nous allons dans cette partie proposer une méthode d’approximation à savoir la

méthode des différences finies pour trouver la solution approchée des ces types de problèmes.

La méthode est basée sur l’approximation des dérivées par leur quotient différentiel.

En effet soit u une fonction dérivable au point x on a alors

u(x + h) − u(x)
u0 (x) = lim
h→0 h

u(x+h)−u(x)
Pour h ≪ 0 on pose u0 (x) approximativement égale à son quotient différentiel h

i.e
u(x + h) − u(x)
u0 (x) '
h

43
pour h ”très petit” (h ≪ 0). On utilise le développement limité de u autour de x à l’ordre

2, on a alors
h2 (2)
u(x + h) = u(x) + hu0 (x) + u (η)
2!

avec x < η < x + h, on obtient ainsi

u(x + h) − u(x) h
− u0 (x) = u(2) (η) → 0
h 2!

lorsque h → 0. Ce qui entraine l’approximation suivante

u(x + h) − u(x)
u0 (x) '
h

pour h ”très petit”.

• Approximation de la dérivée première Avec le même principe on obtient les ap-

proximations suivantes de la dérivée première :

le quotient différentiel progressif

u(x + h) − u(x)
u0 (x) '
h

, le quotient différentiel rétrograde

u(x) − u(x − h)
u0 (x) '
h

et le quotient différentiel centré

u(x + h) − u(x − h)
u0 (x) '
2h

pour h ”très petit” (h ≪ 0).

• Approximation de la dérivée seconde

Avec la même idée développée précédemment on a l’approximation de la dérivée seconde

44
par :
u(x + h) − 2u(x) + u(x − h)
u00 (x) '
h2

pour h ”très petit” (h ≪ 0).

• Approximation de la dérivée quatrième

Avec la même idée développée précédemment on a l’approximation de la dérivée quatrième

par :
u(x − 2h) − 4u(x − h) + 6u(x) − 4u(x + h) + u(x + 2h)
u(4) (x) '
h4

pour h ”très petit” (h ≪ 0).

4.1.3 Discrétisation ou maillage du domaine


b−a
On subdivise l’intervalle [a, b] en N + 1 intervalles de longueur h = N +1
, appelé pas

de la discrétisation où du maillage. On pose xi = a + ih pour tout i ∈ {0, 1, 2 . . . N + 1}

les points du maillage avec x0 = a et xN +1 = b.

4.1.4 Application de la méthode sur le modèle (M1 )

Pour chaque point intérieur xi avec i ∈ {1, 2, . . . N } on applique l’approximation

suivante :
u(xi + h) − 2u(xi ) + u(xi − h)
u00 (xi ) ' ;
h2

On pose ui la valeur approchée de u au point xi . On a alors

ui+1 − 2ui + ui−1


u00 (xi ) ' .
h2

L’équation (4.1) devient


ui+1 − 2ui + ui−1
− + ci u i = f i
h2

avec fi la valeur approchée de f au point xi . Les conditions aux bords sont discrétisées

par : u(a) = u0 = ga et u(b) = uN +1 = gb . On a le schéma à trois points suivant :

45
ui+1 − 2ui + ui−1
− + ci ui = fi , ∀i ∈ {1, 2, . . . N } (4.11)
h2
u0 = ga (4.12)

uN +1 = gb , (4.13)

approchant le modèle (M1 ).

On dit usuellement qu’on a discrétisé le problème par une méthode de différences finies

utilisant le ”schéma à trois points” de la dérivée seconde.

Matriciellement, Le schéma s’écrit :

Ah Uh = Fh

où les coefficients de Ah sont définis par :


2
aii = + ci , ∀i ∈ {1, 2, . . . N }


h2





−1
 aij = h2
, ∀(i, j) ∈ ({1, 2, . . . N })2 et |i − j| = 1 ,





 aij = 0, ailleurs

 
 u1 
 
 

 u2 

 
 

 . 

Uh = 




 . 

 
 

 . 

 
 
uN

46
et  
ga
 f1 + h2 
 
 

 f2 

 
 

 . 

Fh = 

.


 . 

 
 

 . 

 
 
gb
fN + h2

Pour déterminer la solution discrète Uh , il suffit donc de résoudre le système d’équation

linéaire

Ah Uh = Fh

Application : Résolution numérique d’un problème pratique

soit le problème (P ) suivant

1
− u00 (x) + u(x) = p, ∀x ∈]0, 1[ (4.14)
EI
u(a) = 0, (4.15)

u(b) = 0 (4.16)

qui traduit la déformation d’une poutre en flexion fixée à ses extrémités, où le module de

young E = 40 l’inertie I = 10 et le poids p = 20.

On va alors résoudre le système

Ah Uh = Fh

TP : Proposer un programme qui permet de visualiser la déformation de la

poutre.

PROJET

47
Dans ce projet on utilise la méthode des différences finies pour la résolution

numérique.

L’implémentation en Scilab comprend les étapes suivantes :

1. Définir les paramètres du modèle.

2. Discrétisation du domaine spatio-temporel.

3. Construction du système matriciel.

4. Prise en compte des conditions aux bords.

5. Itérations pour le calcul de la solution.

6. Visualisation des résultats.

Problème 1

On considère l’équation de la chaleur

∂u ∂ 2u
= µ 2, x ∈ [−L, L], t ∈ [0, T ],
∂t ∂x

où µ > 0, et une condition initiale

u(x, 0) = u0 (x), x ∈ [−L, L]

On impose des conditions aux limites de Dirichlet

u(−L, t) = u(L, t) = 0, t ∈ [0, T ].

1. Donner une discrétisation du domaine [-L, L]×[0, T].

2. Donner une semi-discrétisation espace avec la méthode des différences finies.

3. Donner la discrétisation en temps avec le schéma d’Euler explicite.

4. Se ramener à un problème d’itération

U n+1 = M U n

48
où la matrice M et le vecteur U n sont à préciser.

5. Quelle est la condition de stabilité du schéma obtenu ?

6. Ecrire un programme Matlab qui calcule U n .

7. Afficher la solution numérique en divers pas de temps.

On utilise pour les calculs µ = 1, L=10, T=1 et


1+x si|x| < 1,



u0 (x) =


 0 sinon.

Problème 2

On considère la dispersion d’un polluant à la surface d’un liquide en mouvement. Le pol-

luant est miscible dans le liquide, mais plus léger. La concentration de polluant C(x, y, t)

dans le domaine Ω est décrite par l’équation de convection diffusion suivante

!
∂C ∂C ∂C ∂ 2C ∂ 2C
+ V1 + V2 −K +
∂t ∂x ∂y ∂x2 ∂y 2

Le Vecteur V = (V1 , V2 ) est la vitesse d’écoulement du fluide. Le terme K représente le

coefficient de diffusion du polluant dans le fluide.

La frontière de Ω, notée Γ, est subdivisée en deux parties disjointes : le bord entrant Γ0

et le bord sortant Γ1 . En notant n le vecteur unitaire normal extérieur à la frontière, elles

sont définies par :

Γ0 = {(x, y) ∈ Γ |V.n(x, y) < 0}

Γ1 = {(x, y) ∈ Γ |V.n(x, y) ≥ 0}

La condition sur le bord entrant est une condition Dirichlet :

C|Γ0 = Cin

49
Sur le bord sortant, le fluide transporte le polluant vers l’extérieur. On impose alors

une condition aux limites de Neumann. Cette condition autorise la sortie du polluant du

domaine.
∂C
=0
∂n|Γ1

La répartition initiale de la concentration de polluant est donnée :

C(x, y, t = 0) = C0 (x, y)

Ramener le problème sous la forme

C n+1 = AC n

où la matrice C et le vecteur C n sont à préciser.

NB : On utilise un schéma centré pour la discrétisation en espace et de Crank-Nicholson

pour la discrétisation en temps. Le domaine est subdivisé en un maillage uniforme.

4.2 Travaux Pratiques Méthodes Numériques

4.2.1 TP : Équation non linéaire

Dans ce TP, nous allons implémenter les algorithmes des méthodes de résolution des

équations non linéaires étudiées : la méthode de Dichotomie, la méthode de Point fixe et

la méthode de Newton-Raphson.

Soit l’équation non linéaire : f (x) = x2 − 2

1) Déclarer la fonction f (x) avec x = −10 : 0.001 : 10.

2) Tracer le graphe y = f (x) sur un intervalle tel qu’il vous permet de localiser la solution

de l’équation.

50
√ √
3) Il est à noter que, les solutions exactes de cette équation sont x1 = 2 et x2 = − 2

et on veut trouver la première racine x1 de cette équation en utilisant :

1. La méthode de dichotomie

a) Quel est le nombre d’opération nécessaire pour atteindre une précision de  = 0.01 si

on prend l’intervalle [0,3] ?

b) Écrire un script qui implémente la méthode de Dichotomie suivant les étapes :

• Déclarer a, b et .

• Initialiser un compteur d’itération.

• Écrire l’algorithme en incrémentant le compteur i à chaque passage de boucle.

• Arrêter la boucle quand la largeur de l’intervalle devient inférieure ou égale à .

• Afficher la solution calculée ainsi que le nombre d’itérations.

• Faire dérouler le programme et remplir la table ci-dessous :

i a b c f(a) f(b) f(c) 

2. La méthode de point fixe

• Quelles sont les formes possibles de la fonction g(x) ?

• Quelle est la fonction qui vérifie le théorème des points fixes, sur l’intervalle [0, 3] ?

• Écrire un programme Scilab qui donne la solution de cette équation. Prendre  = 0.01

et x0 = 0 puis x0 = 3. Conclure !.

3. La méthode de Newton

• Écrire un programme Scilab qui donne la solution de cette équation. Prendre  = 0.01

et x0 = 2 puis x0 = 3. Conclure !.

4) Comparer les résultats des différentes méthodes implémentées.

51
4.2.2 TP : Système Linéaire

Durant ce TP, nous allons implémenter les méthodes numériques de résolution des

systèmes d’équations linéaires (Méthode de Cramer, méthode de Gauss , de Jacobi et de

Gauss-Seidel). Soit le système linéaire suivant : Let the system


9x1 + x2 + x3 = 14







(S) :  x1 + 15x2 + 4x3 = 43





 x1 + 4x2 + 24x3 = 81

1. Donner l’écriture matricielle de S puis calculer X = inv(A) × B .

2. Résoudre ce système en utilisant les méthodes directes : méthode de Cramer, LU,

Cholesky et méthode de Gauss .

3. On cherche maintenant à résoudre (S) par les méthodes itératives de type :

Xk+1 = M Xk + D

3. 1. Utiliser Scilab pour déterminer la matrice de Jacobi et la matrice de Gauss-Seidel

associée à la matrice A.

3. 2. Proposer pour chacune des méthodes utilisées un code qui résout (S).

3. Comparer les résultats obtenus. Conclure !.

4.2.3 TP : Interpolation polynomiale

Durant ce TP, nous allons implémenter sous Matlab des algorithmes d’interpolation

étudiés pendant le cours de méthodes numériques : la méthode de Lagrange et la méthode

de Newton.

Pendant les travaux pratiques de mesures on a effectué la caractérisation d’une thermis-

tance, la chaine de mesure et le matériel utilisé dans cette expérimentation sont illustrés

52
sur la figure suivante :

Les résultats expérimentaux ont donnés la caractéristique reportée sur le tableau :

Température (25o C) 15 20 30 40 50 60

Résistance (Ω) 15.11 14.04 9.28 6.44 4.44 2.9


1. Tracer la courbe résistance en fonction de la température

2. Interpolation de Lagrange

a) Déterminer d’abord ce polynôme de façon analytique.

b) Écrire un algorithme sous Scilab permettant l’implémentation de la méthode de La-

grange.

c) Déterminer la valeur estimée de la résistance à la température T=37o C

3. Interpolation par le polynôme de Newton

a) Déterminer le degré du polynôme de Newton qui passe par tous ces points .

b) Donner l’expression du polynôme de Newton correspondant.

c)Réaliser un algorithme sous Scilab permettant l’implémentation de la méthode de New-

ton .

c) Quelle est la valeur estimée de la résistance à la température T=37o C ?

4.2.4 TP : Intégration numérique

Le but de ce TP est le calcul numérique d’une intégrale définie en utilisant les méthodes

du point milieu, des trapèzes et de Simpson.

53
On se propose de calculer l’intégrale définie :

Z 3
ln(2x + 1)dx
0

1. Ecrire un programme qui calcule cette intégrale en utilisant les méthodes du point

milieu, du trapèze et de Simpson avec n=10.

2. Calculer la valeur exacte de l’intégrale et comparer les résultats de chaque méthode,

conclure.

3. Refaire l’exécution avec n=150

4. Étudier l’influence du nombre de sous-intervalles (n) sur l’erreur d’intégration

5. Appliquez les mêmes étapes pour l’intégrale :

Z 2π
cos(x)dx
0

4.2.5 TP : Équation différentielle et système d’équation différentiel

Le but de ce TP est l’implémentation de la méthode d’Euler et la méthode de Range

Kutta pour la résolution d’équations différentielles.

Soit l’équation différentielle (1)


0 y
y =
1 + t2

Avec y(0) = 1, t ∈ [0, 0.4] et un pas d’intégration h=0.2.

1. Calculer la solution exacte de l’équation (1).

2. Résoudre numériquement l’équation (1), par le biais de la méthode d’Euler et de Runge-

Kutta.

3. Afficher sur la même figure, la solution exacte ainsi que les solutions estimées.

4. Comparer la solution exacte avec les approximations précédentes. Conclure !.

54
4.3 Calcul des structures (barres et poutres ) selon

la Méthode des Eléments Finis (MEF) par Scilab

4.4 Calculs symboliques

Dans cette partie, nous allons réaliser sous Scilab, des calculs symboliques ( opération

sur les polynômes, recherche des racines, dérivation, intégration, résolution d’équations

non linéaire ou un système d’équations,... ) afin d’obtenir des expressions mathématiques

comme résultat. N’ayant pas été abordée au cours théorique, la collection de fonctions

Scilab permettant la réalisation de ces types de calcul se trouve dans la boite à outil

Symbolic Math Toolbox.

PROJET

A-Instructions :

Chaque groupe choisira librement un système dans leur domaine sur lequel il doit tra-

vailler. Les groupes doivent collaborer au moment du choix du système pour éviter que 2

groupes travaillent sur un même problème.

B-Résultats attendus :

- Livrable

I Un rapport en version papier très bien présenté, à remettre à M. Baba FALL.

I La version numérique à envoyer à l’adresse e-mail : mamadou.diop@univ-thies.sn.

- Contenu du rapport :

1. Une description théorique du système choisi,

2. Le modèle mathématique complet écrit en dimension 1 d’espace,

3. L’interprétation mathématique et physique de toutes les composantes du modèle, ayant

un sens mathématique et physique,

4. Le modèle mathématique complet réécrit en dimension 2D d’espace,

55
5. La discrétisation du problème en 2D d’espace,

6. La simulation sur Matlab (ou Scilab) de la solution numérique,

7. Les programmes.

Il est fortement recommandé de structurer le rapport dans la même ordre ci-dessus.

C-Modalités d’évaluation

Critères Cote

Présentation ( forme physique du document) du rapport 2

Pertinence du problème choisi 2

Concordance système-modèle 2

Les interprétations 3

Modèle complet en 2D 2

Discrétisation du modèle 2D 3

Simulation numérique code matlab 6

Total 20

56

Vous aimerez peut-être aussi