Séance 1-Calcul Scientifique
Séance 1-Calcul Scientifique
Séance 1-Calcul Scientifique
Calcul scientifique
ENERGIES RENOUVELABLES
Option: Technologies solaires et éoliennes
2018/2019
Ce cours constitue une introduction au Calcul
Scientifique. Son objectif est de présenter des
méthodes numériques permettant de résoudre
avec un ordinateur des problèmes mathématiques qui
ne peuvent pas être traités simplement avec une
feuille et un stylo
2018/2019
Déroulement du cours
Cours magistral
TP ( Matlab)
TD
2018/2019
Plan du cours
Initiation à Matlab.
2018/2019
Initiation à Matlab
2018/2019
Sommaire
Présentation de Matlab
Vecteurs et Matrices
La Programmation Matlab
Les Scripts
Les Graphiques
2018/2019
Introduction
2018/2019
Présentation de Matlab
2018/2019
Présentation de Matlab
>> x=4
x=
4
>> y=2
y=
2
>> x+y
ans =
6
>> x*y
ans =
8
>> 2018/2019
Présentation de Matlab
2018/2019
Présentation de Matlab
2018/2019
Présentation de Matlab
>> b=x*y
b=
8
>> whos
Name Size Bytes Class
a 1x1 8 double array
b 1x1 8 double array
x 1x1 8 double array
y 1x1 8 double array
Grand total is 4 elements using 32 bytes
>>
2018/2019
Présentation de Matlab
2018/2019
Présentation de Matlab
2018/2019
Présentation de Matlab
2018/2019
Présentation de Matlab
2018/2019
Présentation de Matlab
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
Vecteurs:
Les vecteurs ligne se déclarent de la manière suivante :
>> V_ligne = [0 1 2]
V_ligne =
012
Pour les vecteurs colonne, on sépare les éléments par des
points-virgules :
>> V_colonne = [0; 1; 2]
V_colonne =
0
1
2
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
Il est possible de transposer un vecteur à l’aide de la fonction
transpose ou avec le point apostrophe (.’).Ainsi,
>> V_colonne=transpose(V_ligne)
V_colonne =
0
1
2
>> V_colonne=V_ligne.’
V_colonne =
0
1
2
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
Par défaut, l’incrément est de 1. Ainsi, pour créer un vecteur
ligne des valeurs de 0 à 5 par incrément de 1, il suffit
d’utiliser :
>> V=[0:5]
V=
012345
On peut accéder à un élément d’un vecteur et même
modifier celui-ci directement il n’y a pas d’indice 0 dans
les vecteurs et matrices en Matlab) :
>> a=V(2);
>> V(3)=3*a
V=
016345
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
>> V3=[1 2 3]
V3 =
123
>> V=V1.*V3
??? Error using ==> .* Matrix dimensions must agree.
La multiplication de deux vecteurs est donnée par (*). Ici,
l’ordre a de l’importance :
>> V1=[1 2]; % vecteur 1x2
>> V2=V1.’; % vecteur 2x1
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
>> V=V1*V2
V=
5
>> V=V2*V1
V=
12
24
Il est aussi possible de concaténer des vecteurs. Par exemple :
>> V1=[1 2];
>> V2=[3 4];
>> V=[V1 V2]
V=
1234
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
De même, pour les vecteurs colonnes :
>> V1=[1;2];
>> V2=[3;4];
>> V=[V1;V2]
V=
1
2
3
4
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
Matrices
On peut aussi créer des matrices à partir de vecteurs, par
exemple,
>> V1=[1 2];
>> V2=[3 4];
>> V=[V1;V2]
V=
12
34
qui n’est pas équivalent à :
>> V1=[1; 2];
>> V2=[3; 4];
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
>> V=[V1 V2]
V=
13
24
Il faut donc être très prudent dans la manipulation des
vecteurs. Par exemple, une mauvaise concaténation :
>> V1=[1 2];
>> V2=[3; 4];
>> V=[V1;V2]
??? Error using ==> vertcat All rows in the bracketed
expression must have the same number of columns.
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
les valeurs des éléments ai,j sont données par leur rang
affecté par Matlab. Le 4e élément est 2 :
>> a4=A(4)
a4 =
2
Il est aussi possible de stocker dans un vecteur une ou
plusieurs lignes (ou colonnes).Ainsi, si l’on veut stocker la
deuxième colonne de la matrice A :
>> V=A(:,2) % ici, (:) signifie toutes les lignes
V=
2
5
8
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
De la même manière, si l’on veut stocker les lignes 2 et 3
>> M2=A(2:3,:) % (2:3) signifie ligne 2 à 3
% et (:) signifie toutes les colonnes
M2 =
856
789
Il est possible d’inverser inv(), de transposer transpose() ou
avec l’apostrophe (.’) les matrices :
>> invM=inv(M)
invM =
-2.0000 1.0000
1.5000 -0.5000
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
>> transpM=M.’
transpM =
13
24
Un des intérêts de Matlab est la possibilité d’utiliser
directement les opérations mathématiques prédéfinies pour les
matrices. L’addition et la soustraction sont directes
(attention aux dimensions) ainsi que la multiplication par un
scalaire :
>> A=[1 2; 3 4];
>> B=[4 3; 2 1];
>> C=A+B % addition
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
C=
5 5
5 5
>> D=A-B % soustraction
D=
-3 -1
1 3
>> C=3*A % multiplication par un scalaire
C=
3 6
9 12
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
>> D=A/B % division de matrices
D=
1.5000 -2.5000
2.5000 -3.5000
Afin de réaliser la multiplication et la division élément par
élément, on précède les opérateurs par un point (.* et ./) :
>> C=A.*B % multiplication élément par élément
C=
4 6
6 4
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
>> D=A./B % division élément par élément
D=
0.2500 0.6667
1.5000 4.0000
D’autres opérations sur les matrices seront présentées
dans les sections subséquentes.
Il faut noter certaines matrices spéciales qui peuvent être
utilisées, par exemple la matrice identité :
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
>> I=eye(3) % matrice identité
I=
1 0 0
0 1 0
0 0 1
On peut aussi déclarer des vecteurs (et des matrices) ne
contenant que des zéros ou des 1.
rand(p) % crée une matrice p × p dont les éléments sont
aléatoires, distribués selon une loi de probabilité uniforme dans
l’intervalle [0, 1[.
>> rand(2)
ans =
0.8147 0.1270
0.9058 0.9134 2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
>> V_nul=zeros(1,2) % un vecteur de 1 ligne, 2 colonnes de 0
V_nul=
00
>> V_un=ones(1,2) % un vecteur de 1 ligne, 2 colonnes de 1
V_un=
11
>> M_un=ones(2,2) % une matrice 2x2 de 1
M_un=
1 1
1 1
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
>> M=[1 2 3; 4 5 6]; % utilisation de size - matrice 2x3
>> [n,m]=size(M)
n=
2
m=
3
>> dim=length(M) % utilisation de length sur une matrice
dim=
3
Dans ce cas length donne la plus grande dimension, ici le
nombre de colonnes.
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
A=[1 2 3 ; 2 4 5 ; 6 7 8 ];
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
Racines d'un polynôme
Exemple1 :
3x² - 5x + 2 = 0
On commence par définir un " vecteur " qui contient les
coefficients du polynôme :
p = [ 3 -5 2 ]
p=
3 -5 2
roots(p) :trouve les racines d'un polynôme
ans =
1.0000
0.6667
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
Détermination des coefficients d’un polynôme à partir ses
racines
exemple2 :
a=[2 1]
a=
2 1
>> poly(a): trouve le polynôme à partir des ses racines
ans =
1 -3 2
(c’est-à-dire : x² -3x +2)
2018/2019
Opérations mathématiques de base avec Matlab:
scalaires, vecteurs et matrices
Exemple 3
>> p = [ 3 -5 2 ]
p=
3 -5 2
Calcul de f( x = 1) :
ans =
0
2018/2019
Fichiers script et function
2018/2019
Fichiers script et function
Fichiers script
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...). Ces instructions syntaxiques seront vues dans la
deuxième partie du cours. 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.
2018/2019
Fichiers script et function
2018/2019
Fichiers script et function
Supposons qu’il contient les instructions suivantes :
clear all
x=4;
y=2;
a=x +y
b=x*y
Ecrivons dans la fenêtre de commandes le nom du fichier
>> test
a=
6
b=
8
2018/2019
Fichiers script et function
2018/2019
Fichiers script et function
2018/2019
Fichiers script et function
2018/2019
Fichiers script et function
Par exemple, la fonction suivante admet une seule sortie a
qui constitue le résultat de l’addition des deux arguments
d’entrée x et y:
function a = ma_function(x,y)
a=x+y;
Lorsqu’on tape dans la fenêtre de commandes:
>> a = ma_function(4,2)
on obtient
a=6
Ensuite, on vérifie que
>> whos
Name Size Bytes Class
a 1x1 8 double array
Grand total is 1 element using 8 bytes
2018/2019
Fichiers script et function
2018/2019
Fichiers script et function
>> whos
Name Size Bytes Class
a 1x1 8 double array
b 1x1 8 double array
Grand total is 2 elements using 16 bytes.
On peut éviter l’affichage des sorties en utilisant le point-
virgule :
>> [a,b]=ma_function2(4,2);
2018/2019
Fichiers script et function
2018/2019
Fichiers script et function
2018/2019
Fonctions et représentation graphique sous Matlab
Graphiques simples
2018/2019
Fonctions et représentation graphique sous Matlab
Par exemple,
2018/2019
Fonctions et représentation graphique sous Matlab
2018/2019
Fonctions et représentation graphique sous Matlab
2018/2019
Fonctions et représentation graphique sous Matlab
% graphique.m
clear all
close all % ferme les anciennes figures
x=[0:0.01:2*pi]; y1=cos(x); y2=sin(x);
figure(1)
plot(x,y1,’.’,x,y2,’+’) % cos(x) en points, sin(x) en
+
title(’sinus et cosinus’)
xlabel(’x’)
ylabel(’f(x)’)
legend(’cos(x)’,’sin(x)’,0) % le 0 place la légende
à côté des courbes
2018/2019
Fonctions et représentation graphique sous Matlab
2018/2019
Fonctions et représentation graphique sous Matlab
Fonctions mathématiques simples
Les opérateurs algébriques (+, -, *, /, .*,./) ont été
définis précédemment pour les scalaires, vecteurs et
matrices.
On montrera ici (sans être exhaustif), les principales
fonctions mathématiques fournies dans Matlab et leur
utilisation. Pour les fonctions non présentées, l’utilisateur
peut toujours utiliser l’aide des fonctions avec la
fonction help qui prend pour argument le nom de la
fonction. Par exemple, la fonction cosinus :
>> help cos
COS Cosine of argument in radians.
COS(X) is the cosine of the elements of X.
2018/2019
Fonctions et représentation graphique sous Matlab
2018/2019
Fonctions et représentation graphique sous Matlab
2018/2019
Fonctions et représentation graphique sous Matlab
Fonctions matricielles
2018/2019
Fonctions et représentation graphique sous Matlab
Fonctions avancées
Ce sont des fonctions qui interviennent en
analyse numérique telles que: lu, chol, qr, cond,
eig,fzero,…
2018/2019
Exemple de représentation graphique
2018/2019
Fonctions et représentation graphique sous Matlab
2018/2019
Fonctions et représentation graphique sous Matlab
2018/2019
Fonctions et représentation graphique sous Matlab
clear all
close all
x=linspace(0,pi,30);
y1=cos(x);
plot(x,y1,'o-r')
y2=sin(x);
hold on
plot(x,y2,'x-b')
y3=exp(-x);
hold on
plot(x,y3,'*-g')
2018/2019
Fin de séance
2018/2019