Vous êtes sur la page 1sur 107

Notes de cours :

Outils de programmation
Initiation à Matlab

Année universitaire 2022-2023.

2eme année licence : Algèbre et Cryptographie/Mathématiques.


Faculté de Mathématiques,
Université des Sciences et de la Technologie Houari Boumediène.

Contenu :

1
Programmation informatique

• Que signifie le mot programmation ?

• C’est quoi un programme ?

• C’est quoi un langage de programmation ?

2
Programmation

• La programmation 1 , appelée aussi codage, est l’ensemble des


activités qui permettent l’écriture des programmes (informatique).

• Un programme est un ensemble d’opérations destinées à être


exécutées par un ordinateur.

• Pour écrire un programme, on utilise un langage de programmation.

• Un langage de programmation est un ensemble de notations


conventionnelles destinées à formuler des algorithmes en un langage
inéligible pour la machine en question (produire des programmes
informatiques qui les appliquent).
• Exemple : Pascal, C, C++, Java, Python, Fortran, Julia, Ruby, etc.
1 source : https://www.wikipedia.org
3
Prise en main
Introduction

Matlab, développé par la société MathWorks http://mathworks.com.


Actuellement, Matlab offre plusieurs domaines d’application scientifique :

• Visualisation graphique 2D et 3D,


• Résolution d’équation aux dérivées partielle (EDP),
• Optimisation (discrète, continue),
• Simulation.
• etc.

4
Introduction

Le système Matlab se divise en deux parties:

• Le noyau Matlab, qui comprend :


• L’environnement de travail offrant plusieurs facilités pour la
manipulation des données. Son interpréteur permet de tester
rapidement ses propres programmes Matlab.
• Un système graphique.
• Le langage de programmation Matlab.
• Une librairie de fonction mathématique.
• Un système d’interface facilitant l’exécution de programme C ou
Fortran sous Matlab.
• Une collection de toolbox (boı̂tes à outils) regroupant un ensemble
de fonction spécifiques.

5
Introduction

Matlab est à la fois un logiciel de calcul et un langage de


programmation haut niveau. C’est un logiciel payant, dont il existe deux
équivalents gratuits :

• Octave,
• Scilab.

Matlab est un logiciel de calcul numérique pas de calcul formel à la


différence de Maple. Il ne ”sait” résoudre que des équations numériques.

6
Matlab : Matrix Laboratory

Le nom Matlab vient de Matrix Laboratory. En Matlab les ”objets”


sont tous par défaut des matrices.

Exemple:
Une variable réelle est donc représenté par Matlab comme une
matrice 1 × 1. Le produit est donc par défaut un produit matriciel.

C’est quoi un objet en programmation?

Un objet est une représentation d’une structure matérielle ou immatérielle


à laquelle on associe des propriétés et des actions (attributs et
méthodes).

7
Interface principale

8
Command window

Matlab est un langage interprété, c’est à dire qu’il exécute directement


(sans compilation) les commandes entrées dans la fenêtre de commandes.
Pour pouvoir l’utiliser, vous devez donc lancer l’interpréteur par la
commande matlab.

L’application vous offre plusieurs fenêtres dont une fenêtre principale


contenant la fenêtre de commandes avec le prompt : ≫.

C’est dans cette fenêtre que vous entrerez toutes les commandes Matlab.
Il est a noter que toutes les commandes sont en minuscules et en anglais.
9
Current folder

PATH (chemin) c’est les dossiers dans lesquels Matlab va chercher


lorsque l’on appelle un commande. Le PATH est divisé en deux parties :

• MATLABPATH,
• USERPATH.

Code suivant permet d’afficher le MATLABPATH :

>> path

Méthodes pour modifier le USERPATH. En ligne de commande :

>> newpath = "C:\Users\Documents\Mes_fichiers_Matlab"


>> userpath(newpath)

Ou en sélectionnant File > Set Path, dans les menus déroulants.


10
Command History & Workspace

Command History : il est parfois important d’enregistrer dans un fichier


indépendant, la liste des commandes utilisées. Pour ce faire on utilise :

>> diary filename

Cette commande va créer un fichier filename qui enregistrera toutes les


commandes entrées jusqu’à ce que l’on utilise diary off.

Workspace : dans cette fenêtre on trouve des informations sur tous les
variables qui sont utilisés, pour ajouter d’autre fenêtre on choisit le menu
desktop puis la fenêtre qu’on veut ajouter.
Afin d’enregistrer le worksapce (les variable) on peut utiliser :

save(’C:\Temp\MatLab\Results\my_workspace.mat’)

11
Quelques commandes de base

les opérations élémentaires :


Les opérations élémentaires sous Matlab sont : +, -, *, /, \ et ˆ.
Exemple : dans la Command Windows taper les instructions suivants :

>> a = 2+5
>> b= 2-5
>> c = 2ˆ5
>> d = 2/5
>> e = 2\5 % Quelle est la différence entre / et \ ?

12
Quelques commandes de base

Navigation :
cd change de répertoire,
pwd indique le répertoire courant,
dir liste le contenu du répertoire.
Fonctions utiles liées à l’espace de travail (Workspace)
Clear <var> efface la variable <var> du Workspace,
Clear all efface toutes les variables du Workspace,
clc efface le contenu de la fenêtre de commandes,
who liste les variables,
whos liste les variables et affiche les détails,
load Charge les variables à partir d’un fichier,
pack Réorganise l’espace mémoire,
save Sauvegarde les variables de l’espace de travail.

13
Obtenir de l’aide sur Matlab

Le nombre de fonctions de Matlab étant énorme. Deux méthodes sont


possibles pour utilise l’aide sur Matlab, soit en mode texte, soit via
l’interface graphique.
Aide via la fenêtre de commande
doc Démarre l’aide de Matlab sous forme HTML,
help Présente les différents sujets d’aide
regroupés par catégories,
help <function> Donne de l’aide sur la fonction spécifiée,
help help Donne de l’aide sur l’utilisation de l’aide,
lookfor <keyword> Recherche le mot-clé <keyword> dans
les différents fichiers de type *.m.

14
Obtenir de l’aide sur Matlab
En mode texte, la commande help vous donne un aperçu des commandes
disponibles :

>> help
HELP topics
matlab/general - General purpose commands.
matlab/ops - Operators and special characters.
matlab/lang - Programming language constructs.
matlab/elmat - Elementary matrices and matrix manipulation.
matlab/elfun - Elementary math functions.
matlab/specfun - Specialized math functions.
matlab/matfun - Matrix functions - numerical linear algebra.
matlab/datafun - Data analysis and Fourier transforms.
matlab/polyfun - Interpolation and polynomials.
matlab/funfun - Function functions and ODE solvers.
matlab/sparfun - Sparse matrices.
matlab/scribe - Annotation and Plot Editing.
matlab/graph2d - Two dimensional graphs.
matlab/graph3d - Three dimensional graphs.
...
15
Obtenir de l’aide sur Matlab
Pour obtenir les informations concernant une section (topic) particulière,
entrez help <section>.

>> help elfun


Elementary math functions.
Trigonometric.
sin - Sine.
sinh - Hyperbolic sine.
...
Exponential.
exp - Exponential.
log - Natural logarithm.
...

Pour avoir de l’aide sur une commande, entrez help <commande> :

>> help sin


sin - Sine of argument in radians
This MATLAB function returns the sine of the elements of X.
Y = sin(X) ...
16
Extensions (Types) de fichiers

En Matlab, il y a 3 types de fichiers principaux :

• *.m : fichiers de commandes de Matlab (fonction et script),


• *.mat : fichiers contenant des données (stockage des variables),
• *.fig : fichiers non-lisible contenant ce qu’il faut pour recréer une
figure lors d’une séance ultérieure.

17
Script et fonction

Un script est une suite de commande que l’on aurait tout aussi bien pu
taper dans la Command Window.
Exemple (script) :

disp ’Commandes path et userpath :’;


path
userpath

Une fonction permet d’étendre les possibilités au-delà des fonctions


préprogrammées par les développeurs de Matlab.
Exemple (fonction) :

function [ output ] = racineInv(x)


output=sqrt(1/x);
end
18
Script et fonction

Y a-t-il une différence entre ces deux codes Matlab ?

Script : bonjour

disp ’Bonjour’

Fonction : hello()

function [ ] = hello()
disp ’Bonjour’
end

Un cas d’utilisation (création) correcte d’une fonction :

Fonction : hello()

function [ ] = hello(nom)
disp ([’Bonjour’ nom])
% équivalant à printf("Bonjour %s", nom); (en langage C).
end 19
Partie I. Calcul numérique

20
Manipulation de variables

Matlab gère les nombres entiers, réels, complexes, les chaı̂nes de


caractères ainsi que les tableaux d’objets.
Il est inutile de déclarer préalablement le type de la variable que l’on
manipule, il suffit simplement d’assigner une valeur au nom de la variable
avec l’opérateur d’affectation ’=’ :

>> a = 208
a =
208

La réponse à une commande de ce type est le nom de la variable ainsi que


la valeur contenue dans cette variable. Toutes les variables utilisées restent
présentes en mémoire et peuvent être rappelées.

21
Manipulation de variables

La plupart des commandes que nous utilisons en Matlab affectent des


valeurs à des variables. Lorsque ce n’est pas le cas, le résultat de la
commande est automatiquement affectée à la variable ans qui peut être
par la suite utilisée comme une variable normale :

>> 208+3
ans =
211
>> a = ans + 10
a =
221

Remarque : une autre commande sans affectation écrasera l’ancienne


valeur de la variable ans.

22
Manipulation de variables : variables spéciales

Il existe 7 variables (fonctions) spéciales en Matlab :

pi 3.14159265358979323846264338328 . . .

eps 2.22044604925031308084726333618 e − 16 :
c’est une distance entre deux ”réelles en informatiques”.

Inf nombre infini, ex. >> 1/0

NAN (not a numbre) n’est pas un nombre, par exemple le résultat


de l’opération 0/0, ex. >> 0/0

realmin plus petit nombre flottant, ex. >> realmax*2

Realmax plus grand nombre positif.

i,j nombre complexe.

23
Variables spéciales: Exemple 1

>> pi >> realmax


>> eps >> realmin
>> 1/0 >> i
>> 0/0 >> j

>>realmax*2
ans =
Inf

>> i=2; % affecter une valeur numérique à i.


>> i
i =
2
>> clear i % supprimer la variable i de l’espace de travail
>> i
ans =
0.0000 + 1.0000i
24
Variables spéciales : Exemple 2

La variable appPi contenant une approximation du nombre pi.


On veut mesurer l’erreur relative (Er).
|appPi − pi|
Er = ·
pi

Script : Erreur

deltaApp = abs(appPi - pi); % erreur absolue


Er = delatApp/pi; % erreur relative.

Fonction : Erreur(<appx>)

function [ Er ] = Erreur(appPi)
deltaApp = abs(appPi - pi);
Er = delatApp/pi;
end

25
Mode d’affichage numérique
Les résultats numériques sont affichés avec un format défini par défaut (short).

Formats d’affichage numérique

short, short e, short g


long, long e, long g
bank
rat
hex
...

Deux méthodes sont possible pour modifier le mode d’affichage (format):

• Sélectionnez le menu file (ou Home dans les nouvelles versions) puis choisir
Preferences > Command window > Numeric format.
• Utilisez la commande suivante :
Exemple :

>> format <Nom du format> >> a=sqrt(2)/1000


>> format long e
>> a
26
Manipulation de chaine de caractère

Une chaine de caractère est un tableau de caractères, une donnée de


type chaine de caractères (char) est représentée sous la forme d’une suite
de caractères encadre d’apostrophes simple(’), il est possible de manipuler
chaque lettre de la chaine en faisant référence à sa position dans la chaine.

>> ch1=’bon’
>> ch2=’jour’
>> ch =[ch1,ch2]
>> ch(1), ch(7), ch(1:3)
>> ch3=’soi’
>> ch=[ch(1:3),ch3,ch(7)]
>> ap=’aujourd’’hui’

27
Nombres complexes

Pour introduire un nombre complexe il suffit d’écrire :

a+bi, ou a+b*i
a+b*sqrt(-1)

On peut aussi utiliser la forme exponentielle : r*exp(m*i), avec r


représente le module et m l’argument ou l’ongle.
Fonctions élémentaires :

real(z) la partie réelle,

imag(z) la partie imaginaire,

conj(z) le conjugué,

abs(z) le module,

angle(z) l’argument, 28
Nombres complexes

Exemple

>> Z1=3+4*i
>> Z2=5+2*sqrt(-1).
>> Z=Z1+Z2
>> real(Z)
>> imag(Z)
>> conj(Z1)
>> abs(Z)
>> angle(Z)

29
Nombres complexes

Exercice 1 :

Soit Z ∈ C, on veut calculer les racines nième de Z = 5 + 2i.
n
• Il s’agit de trouver z ∈ C tel que z = Z , c’est-à-dire résoudre
l’équation complexe z n = Z d’inconnue z ∈ C.
• cette equation admet n racines distinctes. Son ensemble
solution est donné par :

1 θ+2kπ
)
n o
S = zk = R n expi( n , ∀k ∈ {0, . . . , n − 1}

30
Nombres complexes

Solution :
1
n o
S = zk = R n expi( n ) , ∀k ∈ {0, . . . , n − 1}
θ+2kπ

Fonction

function [ S ] = racine(z,n)
r = abs(z)
t = angle(z)
S = rˆ(1/n)*exp(i*(theta+2*(0:n-1)*pi/n))
end

Script

Z = 5 + sqrt(2)*i
r = abs(z)
t = angle(z)
n = 3 % pour n=3.
racines = rˆ(1/n)*exp(i*(theta+2*(0:n-1)*pi/n))
31
Vecteurs et Matrices
Vecteurs

Soit V = (v1 , v2 , . . . , vk ) ∈ R un vecteur de taille K × 1.


• On définit un vecteur ligne en donnant la liste des ses éléments
entre crochets ([ ]), les éléments sont séparer par un espace ou une
virgule.
• Pour définir un vecteur colonne il suffit de remplacer les virgules par
des points virgules.

>> V = [1, 2, 3, 5, 8] >> V = [1; 2; 3; 5; 8]

• Il est inutile de définir la taille de vecteur car elle sera établie de


manière automatique.
• Pour transformer un vecteur linge V en vecteur colonne et
réciproquement on tape V’. length: cette commande est utilisée pour
obtenir la taille de vecteur.

>> V = V’ % transposé de V, i.e., k x 1 à 1 x k.


>> taille = length(V) % ans = 5. 32
Vecteurs (exemples)

>> A1 = [1 2 3]
>> A2 = [4, 5, 6]
>> A = [A1, A2] % concaténation de A1 et A2.
>> length (A) % afficher la taille de A.
>> X1 = [1;4;5]
>> X2 = [5;9;8]
>> X =[X1;X2]
>> X(2) % affiché un élément de vecteur x
>> X2 = [X1, X2] % construire une matrice a partir de 2 vecteurs.
>> B = [0:1:100] % contient tout les entiers entre 1 et 100.
% i.e., suite arithmétique de raison 1.
>> C = [0:5:100]
% contient tout les multiples de 5, inférieur ou égale à 100.
>> C = C’
>> B2= [0:0.2:2] % construit un vect. tel que ses élément sont les
% termes successif compris entre 0 et 2 d’une suite arithmétique
% de raison 0.2.
>> V = linspace(1,10,15) % contient 15 nombres uniformément espacées
% entre 1 et 10.

33
Les matrices

La déclaration des matrices suit 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.
Un élément d’une matrice est référence par le numéro de la ligne et de la
colonne, A(i, j) présente le i eme élément de j eme colonne.
Exemples

>> A1 = [1 2 3;4 5 6] % la matrice A1 est de taille 2x3


>> A2 = [1 2; 3 4; 5 6; 8 9] % la matrice A2 est da taille 3x2
>> A1(2,3) % accéder à l’élément de la 2eme ligne et 3eme colonne
>> A2(1, 2) = 15 % modifier la valeur d’un élément de la matrice.
>> A3= [7 8 9 ; 10 11 12];
>> A = [A1, A3] % concaténation de deux matrice.
>> B = [A1; A3] % concaténation de deux matrice

34
Les matrices

Exemples
>> B = [1 2; 3 4; 5 6; 8 9]
>> B(:,2) % affiche la deuxième colonne de la matrice B
>> B(3, :) % affiche la troisième ligne de la matrice B
>> B(3, :) = [2 5 9];
>> B(3,:) = [] % supprimer la troisième ligne de B
>> B(:,3) = [] % supprimer la troisième colonne de A
>> B1 = [A1,A2 ;A2,A1] ;
>> B1 = [B1 ;B1]
>> B1(2:4,:); % sous matrice des lignes i à j
>> B1(2:4,2:5); % sous matrice des lignes i à j colonnes k à l

35
Les matrices : commandes de bases
Size(A) : donner les dimensions de la matrice A.

>> Size(B1).

ones(i,j) : crée un tableau de i lignes j colonnes contenant des 1

>> Ones(3)
>> Ones(2,4)

zeros(i,j) : crée un tableau de i lignes j colonnes contenant des 0

>> Zeros(2)
>> Zeros(3,4)

eye(i,j) : crée un tableau de i lignes j colonnes avec des 1 sur la


diagonale principale et 0 ailleurs.

>> eye(3)
>> eye(3,2)
36
Les matrices : opérations élémentaires

Les opérations matricielles sont à la base du calcul sousMatlab. Les concepts


mathématiques qui les sous tendent sont ceux de l’algèbre linéaire.

• Commençons par l’addition et la soustraction. Ces opérations sont


possibles uniquement sur des matrices de taille identique.
• Il existe deux types de multiplication : la multiplication dite matricielle et la
multiplication termes à termes. Commencons par cette dernière : la
multiplication termes à termes est l’analogue de l’addition et de la
soustraction.

>> A = [2 3 ; -3 2]; B = [4 4 ; -4 0];


M = A.*B
M =
8 12
0 0

• De même si pour obtenir le ”carré” d’une matrice on ecrit : A.ˆ2.

37
Les matrices : commandes de bases

diag(u) : crée une matrice carrée avec le vecteur u sur la diagonale et 0 ailleurs.
Si u est une matrice diag(u) extrait la diagonale de la matrice u

>> diag([7 5 4])


>> diag([7 5 4; 3 3 2; 4 4 2])

A\b : résolution du système linéaire Ax = b.

>> A = [4 5 ; 10 8]; B=[3 ; 7]


>> X = A\b
>> X = inv(A)*B

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


rank(A) : rang de la matrice A.
inv(A) : inverse de la matrice A.
trace(A) : la somme des éléments de diagonale principale de la matrice A.
eig(A) : renvoie les valeurs propres de la matrice A.

38
Vecteurs et matrices (exercice)

Exercice

Donnez le code Matlab qui permet de :


1. Créez un vecteur colonne vec de 5 éléments linéairement espacés entre 2
et 3.
2. Ajoutez deux lignes à la fin de ce vecteur avec la valeur 0.
3. Ajoutez 1 au deuxième et sixième éléments de ce vecteur.
4. Créez un second vecteur vec2 colonne de même dimension que vec
contenant les entiers pairs supérieurs ou égaux à 6.
5. Définir un vecteur sumvec comme la somme des deux vecteurs vec et
vec2.
6. Définir un vecteur prodvec comme le produit termes à termes des deux
vecteurs vec et vec2.
7. Quel est la somme des éléments de prodvec ?
8. Quel est la moyenne des éléments de sumvec ?

vec2+ vec2+1
9. Quel est le plus grand élément du vecteur v3 = vec.(vec2+1)
.

39
Vecteur et matrices (exercice)

Solution
>> vec = linspace(2,3,5)’
>> vec = [vec, 0, 0]
>> vec(2) = vec(2)+1
>> vec(6) = vec(6)+1;
>> vec2 = 6+[0:length(vec)-1]’*2
>> sumvec = vec + vec2
>> prodvec = vec .* vec2
>> somme = sum(prodvec)
>> moyenne = mean(prodvec)
>> v3 = vec2 + sqrt(vec2+1)/vec*(vec2+1)

40
Vecteurs et matrices (Exercice)

Exercice

a. Construire la matrice :
 
12 π
M=
3i + 4 1

b. Construire la matrice T tridiagonale à l’aide de la commande diag() utilisée


3 fois :
1 2 0 0
 
−1
−1 2 −1 0 0 
T = 0 −1 2 −1 0 .
 
0 0 −1 2 −1
0 0 0 −1 2
c. Extraire de T les deux premières colonnes.
d. Extraire de T les éléments des colonnes 2 et 3, et des lignes 2 à 4.
e. Créer une matrice T2 ou la ligne 1 est échangée avec la ligne 3 puis la
colonne 2 est remplacée par les valeurs de la colonne 4.

41
Vecteur et matrices (exercice)

Solution
>> M = [12, \pi ; 2*i+4, 1]
>> M0 = [1, 2, 2, 2, 2]
>> M1 = [2, -1,-1,-1]
>> M2 = [-1, 0 ,0]
>> M3 = [-1, -1,-1,-1]
>> T = diag(M0) + diag(M1,1) + diag(M2,2) + diag(M3,-1)
>> T(:,1:2)
>> T([2,4], [2,3])
>> T2 = T; T2(1,:) = T(3,:); T2(:, 2) = T(:, 4);
>> T2 = T2* (ones () )

42
Les polynômes

Déclaration :

Pour définir un polynôme P(x ) = an xn + an−1 xn−1 + . . . . . . + a1 x1 + a0


nous utilisons la commande:

>> p = [an an-1 ... a1 a0]

Exemple

P(x ) = 2x2 + 3x1 + 1

>>P = [2 3 1]

S(x ) = x 3 − x + 2

>>S = [1 0 -1 2]

43
Les opérations sur les polynômes
deconv : Cette fonction permet de faire une division polynomiale.

>> D = deconv(P1, P2)


>> [Q, R] = deconv (P1, P2)

roots(P) : Les racines d’un polynôme P.

>> racines = roots(P)

poly(R) : cette fonction permet de construire un polynôme P dont ces racines R


sont données. poly(A) donne aussi le polynôme caractéristique de la matrice A.

>> P = poly([1 0 -2])

polyval(p, x) : cette fonction permet d’évaluer le polynôme P pour un


ensemble donné de valeurs d’un vecteurx.

>> x = [1 2 3]
>> VSOL = polyval(P, x)
44
Les opérations sur les polynômes
polyder(p) : calcul la dérivée du polynôme P.

>> P= [2 -3 1]
>> derivee=polyder(P)

conv : permet de calculer le produit de deux polynômes.

>> P1 = [3 2 1]
>> P2=[1 4]
>> Conv(P1,P2)

Exemple :

>> A = [1 2 ; 7 5]
>> poly(A)
>> b = roots(poly(A))
>> eig(A)
>> b(1)*b(2)
>> det(A)
45
Inline functions
Une fonction ne comportant qu’un petit nombre d’instructions peut être
définie directement dans la fenêtre de commandes de la manière suivante :

a) Fonction à une variable

Syntaxe: <nom f> = inline(’<expr. de la fonction>’)

F (x ) = 2x 2 + sin(x )

>> F=inline(’2 xˆ2+sin(x)’)


>> argnames(F)
>> formula(f)

b) Fonction à plusieurs variables

Syntaxe: Nom f = inline(’expr. de f’, ’var 1’, ..., ’var n’)

G(x , y ) = 2xy + x 2 + y 2

>> G=inline (’2 x y+xˆ2+yˆ2’, ’x’, ’y’)


>> G(6,1)
46
Inline functions

Exemple 1

>> angle=inline(’180*atan(y/x)/pi’)
angle =
Inline function:
angle(x,y) = atan(y/x)
>> angle(5,4)
ans =
0.6747

Exemple 2

>> f = inline(’sin(alpha*(x+y))’,’x’,’y’,’alpha’)
f =
Inline function:
f(x,y,alpha) = sin(alpha*(x+y))
>> f(0.2,0.3,pi)
ans =
1

47
Inline functions

Exercice :

1. Écrire un M-file (script) pour la fonction

x5 − 3
f (x ) = √ .
x2 + 1
2. Calculer les évaluation suivantes : f (0), f (1).
3. Créer un tableau x d’abscisse −5 à 5 par pas de 0.1.
4. Représenter la fonction f aux points x(i), avec la commande :
plot(x,f(x)).

48
Inline functions

Solution :

>> f = inline(’(xˆ5-3)/(sqrt(xˆ2+1))’);
>> a = f(0); b = f(1);
>> x = [-5:0.1:5]
>> plot(x,f(x)) % Erreur : Inputs must be a scalar ...
>> f = inline(’(x.ˆ5-3)./(sqrt(x.ˆ2+1))’);
>> plot(x,f(x))

49
Inline functions

la fonction fzero permet de trouver une racine ( zéros, ou point


d’annulation) d’une fonction d’une variable.

Syntaxe d’appel

>> x = fzero(fun,x0)
>> x = fzero(fun,x0,options)
>> x = fzero(fun,x0,options,P1,P2,...)
>> [x,fval] = fzero(...)
>> [x,fval,exitflag] = fzero(...)
>> [x,fval,exitflag,output] = fzero(...)

• fun est une fonction inline.


• x = fzero(fun,x0) trouve un zéro près de x0.

50
Inline functions

Exemple 1 :

Trouver un zéro du polynôme suivant : P(x ) = x 2 − x − 2.

>> P = inline(’xˆ2-x-2’)
>> x=fzero(P,-2.3)
>> x=fzero(P,2.5)

51
Inline functions

Exemple 2 :

Trouver un zéro d’une fonction paramétrée : P(x ) = x 2 − ax − 2

>> p=inline(’xˆ2-a*x-2’,’x’,’a’)
>> a=1 % définition du paramètre
>> y=fzero(p,3,optimset(’disp’,’off’),a)
>> p(2,a)

Pour a ∈ {0, . . . , 2}, on a :

52
Fonctions anonymes
Ce mode de définition de fonctions utilise comme pour les fonctions Inline
l’espace de travail courant. La syntaxe minimale est peu explicite, mais les
fonctions ainsi définies seraient plus efficaces que fonctions Inline.
Syntaxe :

<nom_f> = @(<var1>, <var2>, ...) <expression de f>

g(x , y ) = x 2 + xy .

>> g = @(x, y) x.ˆ2 + x.*y


g =
@(x, y) x.ˆ2 + x.*y
>> g(1, 2)

Il est préférable que les fonctions soient ”vectorisées” comme le sont les
fonctions prédéfinies. Il faut alors n’utiliser que des opérateurs pointés
dans l’expression définissant la fonction.

>> g([1 0], [2 1])

53
Boucles et instructions
conditionnées
Opérateurs logiques

L’utilisation des boucles et des branchement conditionnels nécessite


l’utilisation des assertions logiques (afin de définir des conditions d’arrêt
pour les boucles).
Les opérateurs de comparaison et opérateurs logiques :
Les opérateurs de comparaison (relationnels) sont :
==, <, >, >=, <=, et ˜=.
Les opérateurs logiques sont :

• Et (x & y), ou (x | y), non (∼x ou not(x)),


• xor(x, y): ou exclusif, (x ⊕ y = (x ∧ ¬y ) ∨ (¬x ∧ y )).
W 
• any(x) : retourne 1 si un élément de x est non nul, i≤n x i .
V 
• All(x) : retourne 1 si les éléments de x sont non nul, i≤n xi .

54
Opérateurs logiques

Exemples :

>> a = [1 2 3 0 4 0 4 5]
>> b = [0 2 5 0 4 5 8 9]
>> a == b
>> a < b
>> a > b
>> a >= b, a <= b
>> a ˜= b
>> a | b
>> a & b
>> xor(a,b)
>> not (a)
>> all(a)
>> any(a)
>> r = ˜((1 > 2) | (0 ˜= 0))
55
Contrôle de flux
L’instruction if (”si” en français), utilisée avec un opérateur logique de
comparaison, permet de tester si une condition est vérifiée.

Syntaxe (if) :

if (Condition)
// Suite d’instructions.
end

L’instruction if/else (si/sinon en français), permet de grouper plusieurs tests


ensemble. De plus, else peut contenir un autre test if, et donc des tests
multiples, mutuellement exclusifs peuvent être réalisés en même temps.

Syntaxe (if/else) : Syntaxe (if/elseif) :

if (Condition) if (Condition)
% Suite d’instructions. % Suite d’instructions.
else elseif
% Suite d’instructions. % Suite d’instructions.
end end
56
Contrôle de flux

L’instruction switch/case permet de construire une liste de ”cas” (ou


possibilités). Le programme teste chaque cas avec une variable de test, et
exécute le code si une correspondance (un test vrai) est trouvé.

Syntaxe (switch/case) :

switch var
case cst_1,
Suite d’instructions 1
case cst_2,
Suite d’instruction 2
.
.
.
case cst_N ,
Suite d’instructions N
otherwise
Suite d’instruction par défaut
end

57
Contrôle de flux : exemples

n = input(’Tapez un chiffre parmi -1,0 ou 1:’);


switch n
case -1
disp(’c’’est moins un’);
case 0
disp(’c’’est la valeur zéro !’);
case 1
disp(’c’’est plus un’);
otherwise
disp(’Une autre valeur’);
end

n = input(’Tapez un nombre : ’);


parite = rem(n ,2) % reste de la div. de n par 2, parite = n(mod 2).
switch parite
case 0
disp(’Pair !’);
case 1
disp(’impair !’);
end
58
Les boucles

Il y a deux types de boucles en Matlab : les boucles while et les


boucles for.
La boucle for (en Matlab) parcourt un vecteur d’indices et effectue à
chaque pas toutes les instructions délimitées par l’instruction end.
Syntaxe (for) :

For indice = borne_inf : borne_sup


Séquence d’instructions
end

Exemple :

x=1;
for i=1:10
x = x + 2*i + xˆ2;
end

59
Les boucles

La deuxième façon pour exécute une séquence d’instruction est d’utiliser la


boucle while, la syntaxe et:
Syntaxe (while) :

While (instruction logique)


Séquence d’instructions
End

Exemple :

x=2;
y=1;
while (y<100)
y=y+2*xˆ2;
end
y

60
Les boucles

Exercice :

1. (Examen, janvier 2018) La suite de Fibonacci est définie de la


manière suivante :
(
Fn+2 = Fn + Fn+1 ,
F1 = 1, F2 = 1.

a. A l’aide d’une boucle for, calculez le vecteur vec de


dimension 1x50 tel que vec(n)=Fn .
b. Que vaut F50 ?
2. A l’aide d’une boucle while, calculez n!, pour un n ∈ N donné.
Rappelons que factoriel d’un entier n est défini par n! = 1×2×· · ·×n.

61
Les boucles

Script (suite de Fibonacci) :

F = [1, 1];
n = input(’Tapez un nombre > 2 : ’);
for i = 3:n
F = [F, F(i-1)+F(i-2)];
end

Fonction (suite de Fibonacci) :

function [res] = Fibo(n)


F = [1, 1];
for i = 3:n
F = [F, F(i-1)+F(i-2)];
end
res = F(n);
end

62
Les boucles

>> Fibo(50)
ans =
12586269025.0

Fonction (calcul du factoriel) :

function [res] = factoriel( n )


res = n;
while(n>1)
n = n-1;
res = res * (n);
end
end

>> factoriel(10)
ans =
3628800

63
Les boucles

Exercice (interrogation 2017) :


′ ′
Soit A ∈ Rn×m et B ∈ Rn ×m . Le produit de Kronecker A ⊗ B
est définie par :
 
a11 B a12 B ... a1m B
 a21 B a22 B ... a1m B
 
 ∈ Rnn′ ×mm′

A⊗B =  .. .. .. ..
 . . . .


an1 B an2 B ... anm B

1. Écrire la fonction matAleatoire(a,b,n,m) qui renvoie une


matrice d’entiers aléatoires A de taille n × m, avec : a ≤ aij ≤ b.
2. Écrire la fonction Kronecker(A,B) qui calcule le produit de
Kronecker A ⊗ B.

64
Les boucles

function [R]= matAleatoire(a,b,n,m)


R=zeros(n,m);
for i=1:n
for j=1:m
R(i,j) = round(a + ((b-a) * rand(1,1)));
end
end
end

function [C]=kronecker(A,B)
n=length(A(:,1)); m=length(A(1,:));
n1=length(B(:,1)); m1=length(B(1,:));
C= zeros(n*n1,m*m1);
for i=1:n
for j=1:m
for k=1:n1
for l=1:m1
C((i-1)*n1+k,(j-1)*m1+l)=A(i,j)*B(k,l);
end
end
end
end
end
65
Représentation graphique
en 2D et 3D
Graphique d’une fonction à une seule variable

Pour dessiner un graphe en 2D, Matlab nous propose plusieurs fonctions


possibles parmi lesquelles on a:
fplot : cette commande permet de tracer la courbe d’une fonction f
définir sur un intervalle.
Syntaxe (fplot) :

fplot(’<expr. de la fonction>’,[<xmin> , <xmax> ])

On peut aussi tracer plusieurs fonctions au même temps. la syntaxe est:

fplot(’[f1,f2,f3]’,[xmin1,xmax1,xmin2,,xmax2;xmin3;xmax3])

Exemple :

>> fplot(’sin’,[0,10])
>> fplot(’x*sin(x)’,[-2*pi,2*pi])

66
Graphique d’une fonction à une seule variable

Exemple :

>> fplot(’[xˆ2*sin(x),sin(x+pi)/cos(x),25*cos(x)ˆ2]’
,[-2*pi,2*pi,-2*pi,2*pi,pi,3*pi])

67
Graphique d’une fonction à une seule variable
plot : cette commande permet de dessiner une courbe a partir des donner qui sont
regrouper dans deux vecteur X et Y.

Syntaxe (plot) :

>> plot(<X>,<Y>,<c>)

Où <c> représente la couleur et le style de la courbe.


La courbe passe par les point (X(i), Y(i)), ainsi, les vecteurs X et Y doivent
être de même taille.

Les différente styles et couleurs possible sont regrouper dans le tableau suivant :
Couleur Style
Y Jeune - Trait continu
M Magenta : Ponctuation
C Cyan -. Trait point
R Rouge -- Tirets
G Vert + Plus
B Bleu O Cercle
W Blanc * Etoile
K Noir X Croix
68
Graphique d’une fonction à une seule variable

Exemple :

>> X=-2*pi:k:2*pi; % les valeurs de k : 1, 0.5, 0.2, 0.01.


>> y=sin(x);
>> plot (x, y, ’r-+’);

69
Graphique d’une fonction à une seule variable
Pour dessiner plusieurs fonction sur la même figure on utilise la commande
hold on avant la deuxième commande plot.
Exemple :

>> X= [-2*pi:0.01:2*pi];
>> Y1=sin(X);
>> Y2=cos(X);
>> plot(X, Y1,’b-’);
>> hold on
>> plot(X,Y2,’r-’)

70
Options supplémentaires

• Pour dessiner plusieurs graphe sur la même figure on peut aussi utilise
la syntaxe suivant: plot(x1,y1,’r’,x2,y2,’b’).
• Les commandes ’xlabel’, ’ylabel’ et ’title’ sont utilisées
pour afficher une chaı̂ne de caractères respectivement pour la légende
de l’axe des abscisses, celle de l’axe des ordonnées, et le titre de la
figure.

Exemple :

>> xlabel(’x’); ylabel(’f(x)’);


>> title(’f= cosinus’);

• Pour ajouter un texte sur le graphe on utilise l’une des commandes


suivantes:
• text(x,y,’texte’) : texte à la position x y dans la fenêtre.
• gtext (’texte’) : texte à la position définie avec la souris.

71
Options supplémentaires

• Une figure peut être subdivisée en plusieurs tracés (sous forme d’une grille), en
utilisant la commande : subplot(n,p,q): subdivision en n × q dessin et
sélectionne à qème cellule.
Exemple :

x=-2*pi:0.01:2*pi; y1=sin(x);y2=cos(x);y3=x.*sin(x);y4=cos(x)./x;
subplot(2,2,1); plot(x,y1)
subplot(2,2,2); plot(x,y2)
subplot(2,2,3); plot(x,y3)
subplot(2,2,4); plot(x,y4)

72
Options supplémentaires

On peut utiliser certaine fonction pour modifier la position ou le type des


axes:

• loglog(x, y) : tracé avec échelle logarithmique sur les deux axes.


• semilogx(x, y) : tracé avec échelle logarithmique sur l’axe des
abscisses.
• semilogy(x, y) : tracé avec échelle logarithmique sur l’axe des
ordonnées.
• plotyy(x, y, x, z) : courbe (x, y) avec l’axe 0Y à gauche, et
courbe (x, z) avec l’axe 0Z à droite.
• polar : graphique en coordonnées polaires.

Reprendre l’exemple précédent et modifier le type et la position des axes.

73
Options supplémentaires

Exemple :

t = 0:.01:2*pi;
polar(t, sin(2*t).*cos(2*t),’--r’)
hold on
polar(t,sin(2*t+2).*cos(2*t+2),’--r’)

74
Graphique d’une fonction à deux variables
plot3 : est une fonction permet de dessiner un graphe en 3D, la syntaxe de commande
est plot3(x, y, z) où x, y et z sont des vecteurs de même dimension contenant les
trois coordonnées.

z = 0:0.1:6*pi;
x = exp(0.05*z).*cos(z);
y = exp(0.05*z).*sin(z);
plot3(x, y, z)

Mesh, surf : permettent de tracer des surfaces pour des fonctions à deux variables.
Avant de tracer les lignes de niveaux on doit commencer par la création d’un maillage
sur le domaine [amin, amax]*[bmin*bmax] à l’aide de la commande meshgrid.

[x,y]=meshgrid(-2:.2:2,-2:.2:2);
z=x.*exp(-x.ˆ2-y.ˆ2);
surf(x,y,z)

• Tester les commandes mesh, meshc, meshz,


comet3, sphere . 75
Exercices

Soit f : R2 7→ R, définit comme suit :


π π π π
f (x , y ) = cos2 (x − ) − sin2 (x − ) − cos2 (y − ) + sin2 (y − )
4 4 4 4

• Tracer la surface z = f (x , y ).

76
Exercices d’analyse numérique
Approximation du π par un DL

Les développements limités offrent une méthode itérative pour calculer les
décimales de π. Par exemple:
x3 x5 (−1)k x 2n+1
arctan(x ) = x − + + ··· + + o(x 2n+1 ).
3 5 2n + 1

1. Écrire une fonction qui calcule le polynôme Pn (x ), avec :


n
X (−1)k x 2k+1
Pn (x ) = ,
2k + 1
k=0
pour un entier n donné.
2. Écrire un programme qui calcule les approximations en1 et en2 de π,
sachant que arctan(1) = π4 et arctan( √1 ) = π6 .
3

3. Tracer un graphique qui illustre comment les approximations en1 et en2


tendent vers π.
4. Tracer sur un repère semi logarithmique l’évolution de l’erreur
d’approximation |eni − π|, i ∈ {1, 2}. Commenter.

77
Approximation du π par un DL

• L’évolution d’une approximation en par rapport à n, et l’évolution de


l’erreur absolue |en − π| en fonction de n, pour n ≤ 80.

3.6 100
en |en-π |
3.4
π

3.2
10-1
3

2.8

2.6 10-2
0 20 40 60 80 0 20 40 60 80

78
Méthode de dichotomie

Rappel : La méthode de dichotomie (du grec ”couper en deux”) permet de


trouver une valeur approchée de x telle que f (x ) = 0.
Soit f une fonction telle que :
• f (a) et f (b) sont de signes opposés (i.e., f (a)f (b) < 0),
• f est continue et monotone sur l’intervalle [a, b].

Méthode de dichotomie

a+b
1. à partir des borne de l’intervalle [a, b], évaluer la fonction f en 2
,
2. si a+b
2
a le même signe que f (a), remplacer a par a+b
2
, sinon
remplacer b par a+b
2
,
3. aller à 1 avec le nouveau couple de valeurs [a, b] jusqu’à ce que la
différence entre a et b soit inférieure à la précision voulue.

• Appliquer la méthode de dichotomie à un polynôme aléatoire de degré 2.

79
fonction ’dichotomie’

function[s]=dichotomie(p,x1,x2,e)
% polynôme p, intervalle [x1, x2], erreur e.
if polyval(p,x1)*polyval(p,x2)<=0
if polyval(p,x1)==0
s=x1;
elseif polyval(p,x2)==0
s=x2;
else
while(abs(x1-x2)>e)
y=(x1+x2)/2;
if polyval(p,y)==0
s=x1;
x2=x1;
elseif polyval(p,y)*polyval(p,x2)<0
x1=y;
else
x2=y;
end
end
s=y;
end
else
disp(’pas de solution’);
end
end
80
Méthode de Newton-Raphson

En analyse numérique, la méthode de Newton-Raphson, est un algorithme


efficace pour approcher un zéro d’une fonction. De manière informelle, le
nombre de décimales correctes double à chaque étape. Partant d’une valeur
approximative raisonnable d’un zéro x0 d’une fonction f , on approche la fonction
par sa tangente au point (x0 , f (x0 )). Cette tangente est une fonction affine dont
on sait trouver l’unique zéro (que l’on appellera x1 ).

Par récurrence, on définit la suite xn par :


f (xn )
xn+1 = xn − ·
f ′ (xn )

Exercice :

Écrire la fonction NewtonRaphson(), qui calcule un zéro par la méthode de


newton suivant ces deux cas :
1. La dérivé de la fonction f est connu, NewtRaph(f,f1,xn,e),
2. La dérivé de la fonction f est inconnu, NewtRaph(f,xn,e).

81
function[s,n]=NewtRaph(f,f1,xn,e)
xn1=xn-(f(xn)/f1(xn));
delta=abs(xn-xn1);
n=1;
while(delta>e)
xn1=xn-f(xn)/f1(xn);
delta=abs(xn-xn1);
xn=xn1;
n=n+1;
end
s=xn
end

function[s]=NewtRaph(f,xn,e)
f1=(f(xn+10ˆ-10)-f(xn))/(10ˆ-10); % approximer f’ au point xn
xn1=xn-(f(xn)/f1);
delta=abs(xn-xn1);
while (delta>e)
f1=(f(xn+10ˆ-10)-f(xn))/(10ˆ-10)
xn1=xn-f(xn)/f1;
delta=abs(xn-xn1);
xn=xn1;
end
s=xn
end
82
Méthode de point fixe

Le principe de cette méthode consiste à transformer l’équation f (x ) = 0 en une


équation équivalente g(x ) = x où g est une fonction auxiliaire ’bien’ choisie. Le
point α est alors un point fixe de g.
Approcher les zéros de f revient à approcher les points fixes de la fonction g, ce
qui revient à vérifier que |g ′ (x )| < 1 sur un voisinage I de α. Dans ce cas, on
construit une suite (xn )n∈N définie par :


x0 dans un voisinage I de α,
∀n ≥ 0, xn+1 = g(xn ).

Exercice :

1. Programmer ce processus de point fixe avec g est une fonction continue


donnée par l’utilisateur.
2. Écrire une fonction qui permet de trouver g à partir de f , où f est un
polynôme.
3. Programmer le processus de point fixe adapté au polynômes.

83
function[p1,k]=PFPoly(p)
function[s,n]=pointF(g,xn,e)
n=length(p)-1
xn1=g(xn);
for i=1:n
n=1;
if f(n-i)˜=0
while abs(xn1-xn)>e
k=n-i;
xn=xn1;
break
xn1=g(xn);
end
n=n+1;
end
end
p1=p/(-p(k));
s=xn1;
p1(k)=0;
end
end

function[s]=pointFixePoly(p,xn,e)
[p1,k]=phi(p);
xn1=(polyval(p,xn))ˆ(1/k);
n=1;
while abs(xn1-xn)>e
xn=xn1;
xn1=(polyval(p,xn))ˆ(1/k);
n=n+1;
end
s=xn1 ;
end

84
Partie II. Calcul symbolique

85
Symbolic Math Toolbox : Introduction

• En générale, Matlab est utilisé comme un logiciel de calcul


numérique, néanmoins, on peut aussi l’utiliser pour effectuer des
calculs formels.
• Ainsi, la boı̂te à outils Symbolic Math Toolbox incorpore le
calcul symbolique dans l’environnement numérique de Matlab.
• Cette boı̂te à outils contient plus de 100 fonctions qui donnent accès
au noyau Maple en utilisant une syntaxe et un style qui sont des
extensions naturelles du langage Matlab.

86
Symbolic Math Toolbox : Introduction

• La boı̂te à outils de calcul symbolique définit un nouveau type de


variable MATLAB appelé objet symbolique.
• Un objet symbolique est une structure de données qui enregistre une
représentation du symbole sous la forme d’une chaı̂ne.
• La boı̂te à outils utilise des objets symboliques pour représenter :
• des variables symboliques,
• des expressions symboliques.
• Les calculs symboliques sont effectués par Maple.
• L’exemple suivant permet de distinguer deux types d’objets sur
Matlab.
Exemple :

>> a = sqrt(2)
a =
1.4142
>> a = sqrt(sym(2))
a =
2ˆ(1/2)
87
Symbolic Math Toolbox : Introduction

On remarque que matlab ne fait pas les calculs de la même manière sur
les variables de type double et les objets symboliques.
Exemple :

Variables double :

>> sin(pi) % en format rat


ans =
1/8165619676597685

Objets symboliques :

>> sin(sym(pi))
ans =
0

88
Symbolic Math Toolbox : Introduction

Remarque :

On peut obtenir la valeur numérique d’un objet à l’aide de la commande double,

>> a = sqrt(sym(2))
a =
2ˆ(1/2)
>> double(a)
ans =
1.4142

Création des variables symboliques :


Syntaxe :

>> x = sym(‘x’)

Ou même :

>> syms x

89
Symbolic Math Toolbox : Introduction

Création des expressions symboliques :


Exemple 1 :

>> syms a x
>> f = sin(a*x)

Exemple 2 :

1+ 5
L’objet symbolique correspondant à ρ = 2
est crée par la commande :

>> rho = sym(’(1 + sqrt(5))/2’)

Ainsi, On peut faire des opérations mathématiques telles que :

>> f = rhoˆ2 - rho - 1


f =
(5ˆ(1/2)/2 + 1/2)ˆ2 - 5ˆ(1/2)/2 - 3/2

90
Quelques commandes utiles
syms : permet de définir des variables avant d’introduire l’expression mathématique.

>> syms x y
>> a = (x+y)*(x+y)ˆ2
>> b =(x+y)*(x-y)

expand : permet de simplifier une expression mathématique.

>> expand(a)
>> expand(b)

factor : permet de factoriser une expression mathématique.

>> c = xˆ2+5*x+6
>> factor(c)

simplify : simplification des expressions.

>> simplify((xˆ3 - yˆ3)/(x - y))


91
Opération d’affectation

Pour affecter une valeur à une variable dans une expression symbolique on
utilise la fonction subs.

Syntaxe d’appel

subs(<expression>, <variable>, <valeur>)

Exemple

>> Syms x y
>> A = xˆ2+3x*y+y
>> Subs(A,x,1)

92
Calcul de dérivée
Pour obtenir la dérivée d’une fonction on utilise la commande diff.

Exemple

>> Syms x
>> f = sin(5*x)
>> fiff(f)
>> g = exp(x)*cos(x)
>> diff(g)
>> simplify(ans)

Pour obtenir la deuxième dérivée d’une fonction on peut écrire :

>> diff(diff(f))
>> diff(f,2)

De manière générale, pour obtenir la nième dérivé d’une fonction on tape diff(f, n).

>> syms t
>> diff(tˆ6,6)
93
Calcul de dérivée : remarques
Pour calculer la dérive d’une constante on doit le définir comme un symbole.

>> diff(sym(5))

Si g est une fonction à plusieurs variables, alors on doit préciser la variable par rapport à
la quelle on dérive la fonction g.

>> syms x y; g= x*yˆ2+x


>> diff(g,x)

De manière générale, pour obtenir la nième dérivé d’une fonction on tape diff(f, n).

>> syms t
>> diff(tˆ6,6)

Les dérivées partielles /mixtes peuvent être calculées de manière similaire, ex., ∂f
∂y ∂x
.

>> diff(diff(f,y),x)

94
Calcul de limites
La commande limit permet de calculer la limite d’une fonction à un point donné.

Exemple

limit(<fonction>, <variable>, <valeur>)

>> syms h n x
>> limit((cos(x+h) - cos(x))/h, h,0)
>> limit((1 + x/n)ˆn, n, inf)

La commande limit permet aussi de calculer la limite à gauche ou à droite d’un point
donnée.

% la limite quand x tend vers 0-


>> limit(x/abs(x),x, 0, ’left’)
% la limite quand x tend vers 0+
>> limit(x/abs(x), x, 0, ’right’)
% On peut vérifier que la limite au point zéro n’existe pas.
>> limit(x/abs(x), x ,0)

95
Calcul d’intégrale
Pour calculer l’intégrale (ou fonction primitive) d’une fonction donnée on utilise la
commande int.

Exemple

int(<fonction>)
int(<fonction>, <variable>)
int(<fonction>, <variable>, <B_inf>, <B_sup>)

>> syms x
>> int(xˆn)
ans =
piecewise([n == -1, log(x)], [n ˜= -1, xˆ(n + 1)/(n + 1)])

>> syms x
>> int(sin(2*x), 0, pi/2)
ans =
1

96
Séries de Taylor

Soit f une fonction d’une variable réel ou complexe, dérivable à un point a.


La série de Taylor de f en ce point est la série de fonction suivante :

X f (n) (a)(x − a)n
n=0
n!

En Matlab, la commande taylor renvoie la série de Taylor associée à


une fonction f donnée.

>> syms x
>> f = taylor(cos(x),x) % Séries de Maclaurain.
>> f = taylor(cos(x),x, 3)
>> f = taylor(cos(x),x,’order’, 10) % Séries de Maclaurain.
>> f = taylor(cos(x),x, 3, ’order’, 10)
>> pretty(f)

97
Somme d’une série

On peut obtenir la somme d’une série (si cette valeur existe) en utilisant la
commande symsum.

• Pour calculer la somme de la série numérique :



X 1
·
i2
i=1

>> syms i
>> symsum(1/iˆ2 ,1 ,inf)

• Pour calculer la somme de la série géométrique :



X
xi·
i=1

>> syms i x
>> symsum (xˆi ,i,0,inf)

98
Résolution d’équations

On peut utiliser la commande fzero ou bien la fonction solve.

Syntaxe

>> Solve(<expression>, <var>)

Par exemple pour résoudre l’équation x 2 − 4 = 0 il suffit de taper :

>> Solve(’xˆ2-4’)

>> solve(’2*x-log(y)=1’,’y’)
>> solve(’2*x-log(y)=1’,’x’)

On peut aussi utiliser la fonction solve pour résoudre un système


d’équations.

>> [x, y] = solve(’xˆ2-y=2’,’y-2*x=5’).


99
Résolution d’équations

1. On résout le système :

(
2e x − e y = 15
e x + 2e y = 40

>> [X,Y] = solve(’2*exp(x)-exp(y)=15’,’exp(x)+2*exp(y)=40’)

Soit f (x , y ) = cos2 (x − π4 ) − sin2 (x − π4 ) − cos2 (y − π4 ) + sin2 (y − π4 ).

2. Vérifier l’égalité suivante :

f (x , y ) = sin(2x ) − sin(2y ).

Il suffit de simplifier le rapport (ou la différence) entre les deux expressions


en utilisant la commande simplify.

100
Résolution d’équations

On se donne la fonction suivante :


f (x , y ) = 2x 3 + 2y 3 − 9x 2 + 3y 2 − 12y
Pour trouver les points extrêmes de f , on utilise les variables symboliques
syms qui permettent de trouver facilement les dérivées partielles :

>> syms x y
>> f = 2*xˆ3+2*yˆ3-9*xˆ2+3*yˆ2-12*y;
>> fx = diff(f,x)
>> fy = diff(f,y)

On utilise la commande solve pour trouver les points d’annulation des


dérives partielles.

>> S = solve(fx,fy)
>> [S.x, S.y]

101
Remarque :
La plupart des résultats d’exécution ne sont pas inclus dans ce docu-
ment. Ainsi, afin d’assurer une bonne exploitation de ce document,
! vous devez ré-exécuter toutes les commandes utilisées dans les exem-
ples et les exercices.

102

Vous aimerez peut-être aussi