Vous êtes sur la page 1sur 4

Dpartement de Mathmatiques

Universit de Nantes, 2012-2013

Prparation lagrgation
Option calcul scientifique

TP 1 : Introduction Matlab et Scilab


Loral de Calcul Scientifique Loption Calcul Scientifique de lpreuve de modlisation se compose dun texte
choisir parmi deux, rdigs par le jury, prsenter, commenter, dvelopper et illustrer numriquement.
Une prparation de quatre heures prcde loral. Le candidat a sa disposition un PC fonctionnant sous Windows ou
Linux. Les logiciels Matlab et Scilab sont installs ; les candidats choisissent le logiciel quils dsirent.

Matlab et Scilab Les logiciels Matlab et Scilab prsentent peu de diffrences (sauf syntaxiques).
Scilab est un logiciel gratuit, dvelopp par INRIA, et disponible ladresse http://www.scilab.org.
Il peut tre install indiffremment sous Windows, Linux et Mac.
Logiciels de calcul matriciel numrique, langage de programmation pour le calcul scientifique.
Calcul matriciel rapide (prfrer les outils dalgbre matriciel que les boucles)
Fonctions de haut niveau prdfinies : rsolution de systmes linaires, mthodes numriques de rsolution
dEDO...
Librairie graphique intgre

Prise en main

Lancer le logiciel *lab en cliquant sur licne associe.


Taper les lignes de commandes suivantes (dans la fentre) et tudier le rsultat :
Scilab

Matlab

2+2,2*3
(1-%i)^2
X=2/3;
X
A=[A,1/2,1/6 ; 1/3,1/3,1/2 ; -1,1,0]
A*inv(A)
B=sin(%pi*A)
B(:,1)
clear;
B
4:10

2+2,2*3
(1-i)^2
X=2/3;
X
A=[A,1/2,1/6 ; 1/3,1/3,1/2 ; -1,1,0]
A*inv(A)
B=sin(pi*A)
B(:,1)
clear;
B
4:10

Remarques :
Le ; permet de ne pas afficher le rsultat.
*lab value les fractions (il ne sagit pas de calcul formel).
On peut composer les fonctions propres *lab.
Exemple : sin(inv(sqrt(A)).
1

La commande clear efface la mmoire.


ans est une variable protge qui contient le dernier rsultat.
La commande a:b (ou [a:b]), avec a, b entiers, cre un vecteur ligne contenant les entiers de a b.
La commande a:p:b (ou [a:p:b]), avec a, b et p rels renvoie la discrtisation de lintervalle [a, b] de pas p sous
forme dun vecteur ligne.
Pour les dtails des fonctions utilises, la commande help (disponible galement dans le menu) permet de rechercher
un mot dans lensemble du manuel daide *lab.
Exercice 1 :
Trouver la commande permettant de calculer les valeurs propres (eigenvalue en anglais) dune matrice.

Fonctions

Le logiciel se prsente sous la forme dune fentre de commande o peuvent tre excute toute instruction.
Afin de raliser des programmes plus labors, il est prfrable de les dcomposer en fonctions, que lon appelle par la
suite dans la fentre de commande ou lintrieur dautres fonctions.
Scilab

Matlab

function [p,q]=toto(n)
// commentaire en Scilab
// Entre : n entier
// Sorties : p entier,
//
q chaine de caracteres

function [p,q]=toto(n)
% commentaire en Matlab
% Entre : n entier
% Sorties : p entier,
%
q chaine de caracteres

Syntaxe

p=prod(1:n);
q=tralala;

p=prod(1:n);
q=tralala;

endfunction

end

Sauvegarde

Dans un fichier monfichier.sce

Excution

Taper exec(monfichier.sce) dans la fentre


de commande ou utiliser la commande Charger
dans Scilab du menu Excuter. Puis taper toto(4)
dans la fentre de command.

Dans un fichier toto.m


BLe nom du fichier doit tre imprativement celui
de la fonction.
BOn ne peut coder quune fonction par fichier.
Taper directement toto(4) dans la fentre de
commande.

Lavantage de Scilab est que lon peut directement taper des scripts (fichier dextension .sci) que lon excute dans
la fentre de commande avec exec(monscript.sci) ou en utilisant la commande Excuter dans Scilab du menu
Excuter. Ces scripts peuvent contenir des fonctions et des instructions.
Exercice 2 :
Crer une fonction fact2 qui calcule la factorielle de n laide dune boucle for ou while en suivant les syntaxes
suivantes.

Scilab

Matlab

a=1;
if a>0
disp(positif,a)
else
disp(positif ou nul,a)
end

a=1;
if a>0
fprintf(%d positif \n,a)
else
fprintf(%d positif ou nul \n,a)
end

Instruction if-(else)-end

Boucle for-end
for i=0:5
disp(i)
end
Boucle while-end
i=0;
while (i<=5)
disp(i)
i=i+1;
end
Oprateurs
relationnels
Oprateurs logiques

galit : ==, diffrence : ~= (ou <> en Scilab), infrieur strict : <, suprieur strict : >,
infrieur ou gal : <=, suprieur ou gal : >=.
Conjonction et : &, disjonction ou : |, ngation non : ~.

Construction de vecteurs et de matrices

La syntaxe est la mme en Scilab et Matlab.


Dfinition dune matrice
Dfinition dun vecteur ligne (resp. colonne)
Vecteur ligne dont les valeurs sont quirparties
Dcoupe dun intervalle en un nombre donn de points
Matrice identit de taille n
Matrice de taille n m dont tous les lments sont gaux 1
Matrice de taille n m dont tous les lments sont gaux 0
Construction dune matrice par blocs (en combinants les fonctions prcdentes)
Extraction dun bloc dune matrice
Extraction dun lment
Extraction du vecteur diagonal de A
Matrice diagonale de composantes x(i)
Taille de A
Nombre de lignes
Nombre de colonnes
Matrice transpose

A=[1,2 ; 1, 3; 1,4]
X=[1, 2, 3] (resp. X=[1;2;3])
X=[0:0.55:1]
X=linspace(0., 1., 10) (vecteur ligne)
eye(n,n)
ones(n,m)
zeros(n,m)
C=[ones(2,3), zeros(2,1) ; rand(3,4)]
D=C(2:4, 1:2:4)
D(4,1)
x=diag(A)
D=diag(x)
size(A)
size(A,1)
size(A,2)
A

Exercice 3 :
Appliquer les instructions prcdentes pour construire deux matrices A et B de taille 3 3 dont les lments sont des
entiers quelconques. Tester les instructions suivantes :

3*A, A.*B, A./B, A.^2, A^2, A.^B, cos(A), exp(B), C=[A,B], D=[A B], E=[A;B]
Exercice 4 :
crire une fonction qui renvoie une matrice contenant le triangle de Pascal.

Graphiques

Syntaxe Scilab

Syntaxe Matlab

clf; // Pour nettoyer la fenetre graphique


x=[-%pi : 0.1 : %pi];
y=sin(x);
z=cos(x);
plot2d(x,y,x,z)
legend (sin(x),cos(x))
xtitle (Graphes trigonomtriques,x,y)

x=[-pi : 0.1 : pi];


y=sin(x);
z=cos(x);
plot(x,y,x,z)
legend (sin(x),cos(x))
title (Graphes trigonomtriques)
xlabel(x)
ylabel(y)

Algbre linaire
Norme p de la matrice A ou du vecteur x avec
p N ou p=inf,fro
Dterminant, rang et trace de la matrice A
Inverse de A
Renvoie les valeurs propres de A (et les vecteurs
propres selon lutilisation)

norm(A,p), norm(x,p)
det(A), rank(A), trace(A)
inv(A)
Scilab : spec(A), Matlab : eig(A)

Vous aimerez peut-être aussi