Académique Documents
Professionnel Documents
Culture Documents
NIVEAU 3
SEMESTRE 5
DURÉE : 24 Heures
OBJECTIFS GÉNÉRAUX
OBJECTIFS SPÉCIFIQUES
II - LA PROGRAMMATION STRUCTURÉE
La réalisation d’un programme demande parfois beaucoup de temps et des spécialistes
qualifiés. Cependant, elle possède quelques règles simples qui permettent d’améliorer la
lisibilité des programmes par la mise en page et l’auto documentation (commentaires).
Pour cela, on décompose le programme en modules de dimensions raisonnable. Les
principales règles de la programmation structurée sont :
Le programme doit être divisé en sous-programme ou en proédure ; les programmes
traitant des problèmes compliqués peuvent être volumineux, or assez souvent, ils
Si condition
S
O N
Alors inon
ui on
Ins Instr
truction 1 uction 2
Instruction 1
Fin si Sinon
c) L’itération
Instruction 2
1ere forme I
Pas de p I
Faire < Nn
Introduction n
Instr
Fin pour uction
I
I+p
I - INTRODUCTION
MATLAB est un logiciel commercial de calcul interactif. Il permet de réaliser des
simulations numériques basées sur des algorithmes d’analyse numérique. Il peut donc être
utilisé pour la résolution approchée d’équations différentielles, d’équations aux dérivées
partielles ou de systèmes linéaires, etc... L’objectif de ces séances MATLAB est double : la
connaissance de ce logiciel est en soi indispensable parce qu’il est de plus en plus utilisé dans
l’industrie et les banques pour développer des prototypes de logiciels et tester de nouveaux
algorithmes.
Ensuite son apprentissage va passer par la mise en pratique des algorithmes d’analyse
numérique étudiés plus théoriquement dans le reste du cours. Pour cela on réalisera au cours
des séances un projet directement inspiré d’un cas concret schématisant un problème
industriel.
Signalons au passage que des logiciels en shareware/freeware émulent MATLAB de
manière de plus en plus satisfaisante. Leur utilisation permet de palier l’inconvénient principal
du coût de la licence. Vous pouvez par exemple télécharger Scilab gratuitement sur le site
Internet de l’INRIA. Vous pouvez apprendre à programmer en Scilab dont la syntaxe est
proche de celle de Matlab avec l’ouvrage récent et complet de G. Allaire et S. M. Kaber.
Ouvrez simultanément une session Matlab en tapant tout simplement Matlab dans une
fenêtre de commandes.
Vous allez voir apparaître une ou plusieurs nouvelles fenêtres sur votre écran, dont la
fenêtre de commandes représentée sur la figure 1.
III - PROGRAMMATION
Un script Matlab est composé d’une suite d’instructions, toutes séparées par une
virgule (ou de manière équivalente, un passage à la ligne) ou un point virgule. La différence
entre ces deux types de séparation est liée à l'affichage ou non du résultat à l'écran (seulement
effectué dans le premier cas). Comme tout langage. Matlab possède aussi un certain nombre
d’instructions syntaxiques (boucles simples, conditionnelles, etc...) et de commandes
élémentaires (lecture, écriture, etc...) récapitulées dans les tableaux 2-3.
Dès que le calcul à effectuer implique un enchaînement de commandes un peu
compliqué, il vaut mieux écrire ces dernières dans un fichier. Par convention un fichier
contenant des commandes Matlab porte un nom avec le suffixe :m et s'appelle pour cette
raison un M-fiie ou encore script. On utilisera TOUJOURS l'éditeur intégré au logiciel qui se
lance à partir de la fenêtre de commande en cliquant sur les icônes new M-file ou open file
dans la barre de menu. Une fois le fichier enregistré sous un nom valide, on peut exécuter les
commandes qu’il contient en tapant son nom - sans le suffixe .m - dans la fenêtre de
commande. Si vous avez ouvert l’éditeur comme indiqué, à partir de la fenêtre de commande,
les M-file seront créés dans le répertoire courant, accessible depuis cette fenêtre, et vous
n’aurez pas de problème d’accès. Si vous voulez exécuter des scripts qui se trouvent ailleurs
dans l’arborescence des fichiers, vous aurez éventuellement à modifier le Path en cliquant sur
le menu file— >SetPath ou bien en changeant de répertoire de travail (cliquer sur l’onglet
current. directory).
Exercice 1 : Un premier script
Créer dans le répertoire courant un M-file en cliquant sur l’icone New M-file et taper
les instructions suivantes :
Script 1 Premier script
a=l ;
III.1 Vecteurs
III.3 Matrices
Les matrices suivent la même syntaxe que les vecteurs. Les composantes des lignes
sont séparées par des virgules et chaque ligne est séparée de l’autre par un point virgule.
>>% une manière de définir une matrice 3 x 3:
>>A=[l,2,3;0,0,atan(l); 5,9,-1] ;
>>% une autre syntaxe pour faire la même chose
>>A=[1 2 3
>> 0 0 atan(l)
» 5 9 -1]
A=
u=
0 1 2 3 4
>>v=sin(u)
v. =
La solution des exercices ne doit pas être tapée directement dans la fenêtre de
commandes mais au contraire dans la fenêtre de l’éditeur de manière à être sauvegardée dans
un script pour pouvoir y revenir ultérieurement (cf. 1). Les mots clefs en italiques dans la
marge sont des fonctions Matlab à utiliser pour faire l’exercice. Taper par exemple
TAB. 1 - Principales opérations sur les matrices
Fonction Description
ones(ij) crée un tableau de i lignes j colonnes contenant des 1
zeros (ij) crée un tableau de i lignes j colonnes contenant des 0
cye(i,j) crée un tableau de i lignes j colonnes avec des 1 sur la diagonale principale et 0 ailleurs
toeplitz(u) crée une matrice de Toeplitz symétrique dont la première ligne est le vecteur u
diag(u) crée une matrice carrée avec le vecteur ü sur la diagonale et 0 ailleurs
diag(U) extrait la diagonale de la matrice U
triu(A) renvoie la partie supérieure de A
tril(A) renvoie la partie inférieure de A
linspace(a,b,n) crée un vecteur de n composantes uniformément réparties de a à b
A\b résolution du système linéaire Ax=b
coiîü(A) conditionnement d:une matrice (norme euclidienne)
det(A)
rank(A) déterminant d’une matrice
inv(A) rang d’une matrice
pinv(A) inverse d’une matrice
svd(A) pseudo inverse d’une matrice
norm(A) valeurs singulières d’une matrice
u: norme matricielle ou vectorielle
u*v prend le transposé de u
11-rV multiplication matricielle
u-v addition matricielle
U.* V soustraction matricielle
u./v multiplication des tableaux u et v terme à terme
find (G (A)) division du tableau u par le tableau v terme à terme
indices des composantes du tableau A vérifiant la condition C(A)
help norm!
dans la fenêtre de commandes pour connaître la syntaxe d’utilisation de la fonction norm.
Exercice 3 On note u,v et w les vecteurs suivants
u = (1, —1. 2)T, v = (10. —1,3)T w =(5,-1,4)T
1) Calculer 3u. ||u||2, 2u-+5w, ||2u-v+5w||1, ||w-4v||∞ norm
2) Déterminer l'angle formé par les vecteurs v et w. acos
C
Exercice 4 On note u et v les nombres complexes
onj
R
ANALYSE NUMERIQUE Dr Samuel EPESSE MISSE / Lucie DONKING
14
eal
i
u=ll-7i v=-1+3i.
Calculer les modules de u et de v. les produits u , vu, la partie réelle et la partie imaginaire
de u 3 + v 2 .
Exercice 5 On note A, B et C les matrices suivantes
1 3 2
A
-5 3 1 , B= , C=
=
-10 0 3
1 0 -2
Calculer les matrices AB,BA et AB T
eye
1. Calculer les matrices D = I 2 — BB T . det
2. Calculer les déterminants des matrices A. 13, C, D et E — AA T. inv
spec
3. Calculer les inverses des matrices A. B, C, D et E = A A 1 .
bdiag
4. Calculer les valeurs propres de la matrice E. Quel est le rayon spectral de E ?
5. Déterminer les vecteurs propres de la matrice A.
Exercice 6 On pose
A= , B= ,
A1= , A2= , A3 =
Exercice 8 : On pose
1) Définir dans un M-file la variable h = 0.1 et, un tableau d’abscisses x pour discrétiser
finement l’intervalle [0, ]
2) Calculer dans un tableau d la dérivée exacte de ¡a fonction sin aux points x et dans un
tableau d1 les valeurs approchées par la première formule ci-dessus. Calculer l’erreur
maximale commise en faisant cette approximation sur l’intervalle [0, ]. Diminuer h,
que remarque-t-on?
3) Mêmes questions avec la deuxième approximation. Les valeurs approchées seront
calculées dans un vecteur d2
4) Représenter sur le même graphique la dérivée et ses deux approximations
plot(x,d,x,d1,x,d2)
Que remarque-t-on, quelle est la meilleure approximation?
I - BUT
Le but de ce chapitre est d’aborder le calcul général de l’intégrale d’une
fonction f (x) sur un domaine fini délimité par des bornes finies a et b (les cas des
bornes infinies n’est donc pas couvert ici) :
II - MOTIVATIONS
Dans certains cas très limités, une telle intégrale peut être calculée
analytiquement (à la main). Cepen- dant, ce n’est que très rarement possible, et le plus
souvent un des cas suivants se présente :
- Le calcul analytique est long, compliqué et rébarbatif
- Le résultat de l’intégrale est une fonction compliquée qui fait appel à
d’autres fonctions elles-même longues à évalue
III - PRINCIPE
L’idée principale est de trouver des méthodes qui permettent de calculer
rapidement une valeur approchée de l’intégrale à calculer.
Comme toujours, un programme numérique n’invente rien, et ne fait que procéder
très rapidement à un calcul que l’on pourrait en principe faire à la main.
La méthode s'écrit
sup
x
La somme S s’exprime par
[a , b ]
S= ( f(a)+f(b)+
V - METHODE DE SIMPSON
Dans la méthode de Thomas Simpson (1710-1761), la fonction f est remplacée par un
polynôme du second degré définissant un arc de parabole passant par les points d’ordonnées
f(x i ), f(x i + 1) et f(x i+2). La méthode s'écrit
Pour déterminer les coefficients a,j, il suffit d’écrire que la relation précédente est
exacte lorsque f est un polynôme de degré inférieur ou égal à n. En prenant successivement f(x)
= xk pour k = 0,1, …. n , on obtient le système linéaire suivant :
Pour n = 3
On obtient donc :
f(x)dx= (b)
Où Wi et xe sont tabulés.
Ainsi, l’intégrale de f(x), peut être évaluée en suivant la procédure :
on choisit la valeur n qui donne le nombre de points où la fonction doit être
évaluée,
on lit dans la table donnant Wi et xe les n valeurs de xe (qui sont deux à deux
symétriques par rapport à zéro ( qui sont les racines du polynôme de Legendre
d’ordre n) qui correspondent à la valeur de n choisie,
on calcule xe par l’équation (a), ensuite on évalue l’intégrale de f(x) (expression
(b)).
I - POSITION DU PROBLEME
Deux problèmes classiques :
1) Interpolation : on considère une aile d’avion, qu’on soumet à des vents de 10, 50, 100,
200 km/h, et dont on calcule les déformations pour ces valeurs.
On veut savoir comment elle résistera à un vent de 150km/h.
2) Extrapolation : on connait la population Camerounaise de 1800 à 2015 et on veut en
déduire une estimation de la population française dans les 10 prochaines années.
Une solution est de déterminer un polynôme dont la courbe s’approche le plus possible
(ou passe par) ces points, et de prendre sa valeur aux nouveaux points. C’est le but de ce
chapitre.
Le problème de l’interpolation consiste à chercher des fonctions “simples”
(polynômes, polynômes par morceaux, polynômes trigonométriques) passant par des points
donnés (x0 ,y0), (x1 ,y1), (x2 ,y2),… (xn ,yn) c.-`a-d., on cherche p(x) avec p(xi) =yi_ �
pour i = 0,1,2,…,n . Si les valeurs de yi satisfont yi = f(xi) ou est f(xi) est une fonction
donnée, il est intéressant d’étudier l’erreur de l’approximation f(x) –p(x) = ?
Le problème mathématique est le suivant : on se donne n + 1 mesures f0, …, fn en n +
1 points distincts I0, …, In et on cherche à calculer un polynôme q de degré inférieur ou égal à
m, n, qui "approche" les mesures f0, …, fn. La première approche est quand un = n : c’est le
polynôme d’interpolation.
II - INTERPOLATION DE LAGRANGE
Théorème 1
1) Il existe un unique polynôme pn Pn (espace vectoriel des polynômes de degré inférieur
Ay = b avec
A= , y=( ), b = ( ),
A est une matrice de Vandermonde. Elle est inversible ce qui conclut la partie 1).
2) Li est un polynôme de P(x) et vérifie li(xj) = On vérifie que ce polynôme convient.
Figures
Lorsque les fi sont les valeurs d’une certaines fonction f aux points x i, on parle de pn
Figures 2
En principe il suffit de résoudre le système linéaire pour calculer les ai, puis de calculer
en chaque nouveau point x.
Pn(x) = (
Mais le système est très mal conditionné. Il vaut mieux programmer directement (6.2).
Function [yy] = lagint (x, y, xx)
% LAGINT uses the points (x..i, y..i) for the Lagrange Form of the % interpolating
polynomial and interpolates the values % yy.. I = p..n (xx..i)
n = length (x); nn = length (xx); for I = 1 : nn,
yy(i) = 0; for k = 1: n
yy(i) = yy(i) + y(k)*prod((xx(i)) – x([1: k -1, k+1: n])))… / prod((x(k) – x([1:k-1, k+1:
n]))); end;
end ;
les coefficients :
Et nous réécrivons :
Pn(x) = =
Puisque la formule est exacte pour les polynômes de degré 0, on peut écrire pour f = 1 :
1=
et donc :
pn(x) =
pn(x) =
coeffbary (x)
% COEFFBARY computes the coefficients for the barycentric % representation of the
interpolating polynomial through % the points (x., I, y., i)
n = length (x) ; x =x(:=) ; for k = 1: n, lambda (k) = 1 / prod (x(k)= - x([1: k-1, k+1: n]))
; end;
IV - FORMULE DE NEWTON
On se donne les n + 1 points x0. Pour tout k plus petit que n, on note pk le polynôme
d’interpolation de f aux poinst x0, …, xk. On a :
Pk – Pk – 1 = C(x – x0) … (x – xk – 1)
Definition 6.1
Pour K + 1 points yo, …, yk, on note f[yo, …, yk] le coefficient de degré k du
polynôme d’interpolation de f aux points yo, …, yk.
Lemme 6.1
Pk – pk-1 = f[xo, …, xk] (x – xo) … (x – xk-1)
Démonstration
Théorème 6.2 (Formule de Newton)
Pn(x) = f(x0) + (6.3)
Démonstration
Soit qk-1 Pk-1 Le polynôme d’interpolation de f aux points x1, … xk.
Posons :
Alors . En effet
Table de calcul
x0 f(x0) = f[x0]
x1 f(x1) = f[x1] f[x0, x1]
x2 f(x2) = f[x2] f[x1, x2] f[x0, x1, x2]
xn]
Figure 6.3 : Table des différences divisées
Voici l’algorithme matlab
Function [d, D] = coeffnewton (x, y)
% COEFFNEWTON computes the divided difference needed for % constructing the
interpolating polynomial through (x_i, y_i)
N = length (x) -1 ; % degree of interpolating polynomial. The interpolation Polynomial
335 % divided differences for I = 1! N + 1
D(i, 1) = y(i); for j = 1 : i-1
D(I, j+1) = (D(I, j) – D(i-1, j)) / (x(i) – x(i-j));
end
end
d= diag (D);
une fois les di calculés, pour les utiliser nous couplons avec l’algorithme de Hörner, en
réécrivant le polynôme pn sous la forme
pn(x) = d0 + (x – x0) (d1 + (x – x1) (d2 + … + (x – xn-2) (dn-1 + (x – xn-1)dn)))
function y intnewton (x, d, z)
% INTENEWTON evaluates the Newton interpolating polynomial
% at the new points z ! y P_n(z) using the Horner form % and
the diagonal d of the divided difference scheme. n
= length (x) – 1;
Y = d(n+1)
for i = n: -1 : 1
y = y. * (z-x(i))+d(i) ;
end;
En Matlab, on utilise la fonction polyfit pour l’interpolation polynomial. Cette
fonction utilise une interpolation au sens des moindres carrés discrets (voir partie 3).
6.1.3. Estimation d’erreur
Théorème 6.3
Bien que la fonction soit tout à fait régulière, on voit que l’erreur en 1 tend vers
l’infini.
6.2. Interpolation d’Hermite
f est toujours une fonction suffisamment régulière sur le segment pn Pn tel que
Théorème 6.6
Si f Cn+1 ([a, b]), appartenant au plus petit intervalle ouvert
où =
Pn(x) = (6.10)
(6.11)
Demonstration
Il suffit d’appliquer l’estimation d’erreur (6.6)
Remarque 6.2
Si f Cn+1(I), on peut faire de même une interpolation par des polynômes de degré
(6.13)
I - POSITION DU PROBLEME
L’approximation des fonctions consiste à chercher la fonction la plus proche possible,
selon certains critères d’une fonction donnée. Dans le cas de l’approximation, il n’est en
général plus imposé de passer exactement par des points donnés initialement. Ceci permet de
mieux prendre en compte le cas des erreurs de mesure, et c’est ainsi que l’exploitation de
données expérimentales pour la recherche de lois empiriques relève plus souvent de la
régression linéaire ou plus généralement de la méthode des moindres carrés.
Méthode de travail
Première étape : collecter et classer les données des deux séries statistiques.
III.1 Démarche
On cherche à calculer les valeurs d’une fonction f (x) pour toutes valeurs de x mais on
ne connait pas explicitement f. par exemple.
On remplace f par une fonction simple dont l’évaluation est aisée (ex utilisation de
polynômes, fonction rationnelles,)
De quoi dispose-t-on ?
Ensemble de données : n points (xi ; yi), i = 1,….n
Fonction modèle : f (x, avec vecteur contenant m paramètres
Objectif : ajuster les paramètre pour que f(x, ) approche au mieux les données(xi,
yi).
Trouver 0 minimisant
Trouver 0 minimisant
et on résout S’(
dans le vecteur
Recherche du minimum
Le minimum de S est atteint pour (a,b) du Système suivante
Exercice(correction)
b= -a
obtient
La méthode du pivot est plus commode pour les systèmes denses d’ordre élevé, cette
méthode basée sur le constat suivant : le système linéaire reste invariant pour les trois
opérations suivantes effectuées dans n’importe quel ordre et un nombre de lois indéterminé :
1. Permutation de lignes de la matrice A (et donc de b) ;
2. Multiplication d’une ligne par constante non nulle ;
3. Addition d'une ligne à une autre ligne.
Pour un système de 3 équations à 3 inconnues suivant :
Dans cette méthode, on choisit successivement chaque ligne comme ligne pivot, le pivot
étant le premier élément non nul de la ligne. On divise, alors la ligne N°1 du système par a11 :
Alors
Alors :
On annule ensuite le deuxième terme des lignes 1 et 3, en retranchant à la lere ligne la 2ème
ligne multipliée par a 12, à la 3ème ligne la 2cm,; ligne multipliée par a32
On obtient :
On écrit :
A= =
Ou annule ensuite le deuxième terme; des lignes 1 et 3en retranchant à la l ère ligne; la 2cmc
A= =
A= =
Comme a été fait avant on annule ensuite le troisième terme des lignes 1 et 2, en
retranchant à la 1ère ligne la 3ème ligne multipliée par à la 2ème ligne la 3ème ligne multipliée
par :
A= =
A=
II - METHODE DE GAUSS-SEIDEL
La méthode de Gauss Seidel est une méthode itérative pour le calcul de la solution
d’un système linéaire Ax = b avec A R nXn . Elle construit, une suite de vecteurs : x(k)= (x 1 (k) ,
x 2 (k , …, x n (k)) ) convergent vers le vecteur solution exacte x = (x 1 , x 2 , …, x n ) pour tout
vecteur initiale x (0) = (x 1 (0 , x 2 (0) ,…, x n (0) ) l o r s q u e k tend vers ∞.
Soit, le système de 3 équations à trois inconnues :
Itération N 2
En partant de :