Invite,fichiers*.m,rpertoire,aide
>>
Fentredecommande:
invitationentrerdes:
commandes,cad desinstructions
nomsdefonctionsavecleursargumentsdentreetdesortie
d f
i
l
d
d
i
nomsdeprogrammes
LLesfonctions(y=f(x))etlesprogrammes(suitedecommandes)sontdesfichiersavec
f ti
( f( )) t l
( it d
d )
t d fi hi
uneextension***.m.Nepasutiliserdescaractresexotiques:accents,tirets,chiffres
enpremireposition,...
Crerouditerunfichier =>cliquerFile/New/Mfile ouFile/Open danslecoin
suprieurgauchedumenuprincipal,trouver/selectionner/chargerlefichieren
doublecliquant
double
cliquantsursonnomet/oucommencerl
sur son nom et/ou commencer lditer
diterdanslafentreEditor.
dans la fentre Editor
Silechemindufichierexecuter nestpasdansleCurrent Directory nilistdansle
MATLAB search path,lefichierneserapasreconnuparMatlab.Danscecaschanger
MATLABsearch
path, le fichier ne sera pas reconnu par Matlab. Dans ce cas changer
derpertoirecourantencliquantsurlapetiteicne:
ProgrammationsousMatlab
Espacedetravail,crationdematrices, ;
Matlabmmorisetouteslesvariablesutiliseslorsdunesessionmoinsquela
commandeclear aittutilise.
Matlabmanipuleentreautresvariablesdesmatrices.Parexemplepourentrer:
Taperlescommandessuivantesetentrer:
%lespointvirgules
%
les pointvirgules entrelescrochetsmettentencolonne
entre les crochets mettent en colonne
%lepointvirguleenfindecommande,annulelaffichage
ProgrammationsousMatlab
Input,formatdaffichage
Lacommandeinput
p p
permetdentrerdesdonnesvialeclavier.
exemple:
Laffichageneprsentepaslavaleur stockeenmmoire.Utiliserlacommandeformat
pouraugmenterlenombrededcimalesaffichesouchangerlanaturedela
reprsentation:
%dcimalavec14digits
%notationscientifiquelong
%codagehexadcimal
%retourauformatcourt(formatpardfaut)
Lacommandefprintf permetdesaffichagespluscontrols...
3
ProgrammationsousMatlab
Plot,dcorations
>>temp=[25,12;20,9;22,10;16,9;14,5];
>>
temp=[25 12; 20 9; 22 10; 16 9; 14 5];
>>plot(temp)
>>title('thehighest/lowesttemperatureofthesedays')
>> ylabel('degrees[C]')
>>ylabel(
degrees[ C] ),xlabel(
xlabel('day')
day )
>>days=[11,12,14,16,17];
y [ , , , , ];
>>plot(days,temp)
>>plot(days,temp(:,1),'b*',days,temp(:,2),'ro')
%dcorations,...
ProgrammationsousMatlab
fonctionR R:
functiony=f1(x)
y=1./(1+8*x.^2);
end
Fonctions1entreet1sortie
>>f1(1)%valeurrenvoyepourx=1
f ( )
l
ans=0.1111
>>f1([0,1])%valeurrenvoyepourle
%vecteur[0,1]
[ ]
ans=10.1111
Fichierscriredans
lditeuretsauver
fonctionR2 R2 :
functiony=f49(x)
y
( )
y(1)=x(1)*x(1)+4*x(2)*x(2) 5;
y(2)=2*x(1)*x(1) 2*x(1) 3*x(2) 2.5;
y=y(:);
end
>>f49([2;3])%valeurrenvoyepourx=[2;3]
ans=
35.0000
7.5000
>>f49(1)
???Attemptedtoaccessx(2);indexoutofbounds
becausenumel(x)=1.
Errorin==>f49at2
y(1)=x(1)*x(1)+4*x(2)*x(2)
( ) ( )* ( ) * ( )* ( ) 5;
5
ProgrammationsousMatlab
functiony=f49(x1,x2)
y(1)=x1*x1+4*x2*x2 5;
y(2)=2*x1*x1
( ) * *
2*x1
*
3*x2
*
2.5;
y=y(:);
end
function[y1,y2]=f49(x1,x2)
y1= x1*x1
y1=x1
x1+4
+ 4*x2*x2
x2 x2 5;
y2=2*x1*x1 2*x1 3*x2 2.5;
end
Fonctionsentresetsortiesmultiples
>>f49(2,3)%valeurrenvoyepourx1=2
%etx2=3
ans=
35.0000
7.5000
>>f49(2,3)%valeurrenvoyepourx1=2etx2=3
ans =
ans=
35.0000
>>[u,v]=f49(2,3)
u= 35
v= 7.5000
ProgrammationsousMatlab
Fonctions anonymes
fonctionR R:
>>f1=@(x)1./(1+8*x.^2); %crationdelapoignedefonctionf1(EN:handle)
>>f1(1/sqrt(8))
ans=0.5000
fonctionR2 R2 :
>>f49
f49 =@(x1,x2)[x1
@(x1, x2) [x1*x1
x1+4
4*x2*x2
x2 x2 5;2
5; 2*x1*x1
x1 x1 2
2*x1
x1 3
3*x2
x2 2.5];
>>f49(1,2)
ans=
40
12.0000
8.5000
8 5000
a x2+b x+c
30
>>a=1;b=2;c=3;%passagedeparamtres
>>parabole=@(x)a*x.^2+b*x+c;
>>ezplot(parabole,[5,5])
20
10
0
-5
5
0
x
ProgrammationsousMatlab
Polyval,indexationdesmatrices
Pourcalculerrapidementlesvaleursdunefonctionpolynomiale,onladfinit
simplementparsescoefficientsrangsparordredcroissant:
>>p=[1032];
%fonctionpolynomialep(x)=1x3 +0x2 3x+2
>> polyval (p [ 1 0 1 2 3 4 5])
>>polyval(p,[1012345])
ans=42042054112
Manipulation
Manipulationdematrices:
de matrices:
>>A=[123;456],B=[3;2;1]
>>A=[A;789]
%[..]=concatnation
A=123
456
789
>>B
B =[B,[1,0,
[B, [1, 0, 1]]
1] ] %
%leprimetranspose(ligne
le prime transpose (ligne =>colonne)
colonne)
B=31
20
>>A(2:3,1:2)
%lignes23etcolonne12
11
ans = 4 5
ans=45
78
>>A(3,3)=0
>>A(2,:)
%2ieme ligne,touteslescolonnes
A=123
ans=456
456
5 6
780
8
ProgrammationsousMatlab
Crationdevecteurs,taille
>>t=0:0.1:2
>>
t=0:01:2
t=[0.00.10.2...1.92.0]
>>t=0:2
t=012
%pardfautlepasest+1
>>t=0:1:6
t = [0 1 2 3 4 5 6]
t=[0123456]
%pasngatif
>>D=zeros(4,1);D(2)=2;D(4)=3
D=0
2
0
3
%prdfinirunvecteurverticalnul
>>D(5)
???Indexexceedsmatrixdimensions.
>>D(0)=1;
???Indexintomatrixisnegativeorzero.
>>length(D)
>>
length(D)
ans=4
>>[M,N]=size(D)
M=4
N=1
>>D(1.2)
>>
D(1 2)
???Subscriptindicesmusteitherberealpositiveintegers..
9
ProgrammationsousMatlab
Oprationsaveclesmatrices
Marices
10
ProgrammationsousMatlab
Gnrationrapide,transformations
>>Z=zeros(2,3)
Z=000
000
>>E=ones(2,2)
E=11
1 1
11
>>I=eye(2)
I=1 0
I=10
01
%retournelamatriceidentit2X2
>>B
>>
B =fliplr(A)%flipleft
fliplr(A) %flip leftright
right
B=321
254
>>C=reshape(A,3,2)
C=15
43
22
>>D=flipud(A)%flipupdown
D=452
1 2 3
123
11
ProgrammationsousMatlab
Nombresalatoires
rand(m,n)retourneunematricemXndenombresalatoiresuniformment
d(
) t
ti
X d
b
l t i
if
t distribus.
di t ib
randn(m,n)retourneunematricemXndenombresalatoiresnormalement distribus.
>>u_noise=rand(1000,1)
>>
u noise rand(1000 1)
>>subplot(221),hist(u_noise,20)
>>u_noise1=2*u_noise1
>> subplot(222) hist(u noise1 20)
>>subplot(222),hist(u_noise1,20)
>>n_noise
>>
n noise =randn(1000,1)
= randn(1000 1)
>>subplot(223),hist(n_noise,20)
>>n_noise1 =n_noise/2+1
>> subplot(224) hist(n noise1 20)
>>subplot(224),hist(n_noise1,20)
12
ProgrammationsousMatlab
%exemple1
t=input(t=')
ift>0
f
sgnt=1;
else
sgnt=1;
end
d
If,floor,switch,while,for
%exemple2
point=input('point=')%notesur100
switchfloor(point/10)
(p
)
%floor(x):arrondilentier<ou=x
case9,grade=A
case8,grade=B
case7,grade=C
g
case6,grade=D
otherwisegrade=F
end
%exemple4
point=[76,85,91,1,65,87];
forn
for
n =1:length(point)
1:length(point)
ifpoint(n)>=80,pf(n,:)='pass';
elseifpoint(n)>=0,pf(n,:)='fail';
else%point(n)<0
pf(n, :) ='????';
pf(n,:)
???? ;
display('Quelquechosenevapas...')
end
end
pf
%exemple3
%
l 3
continuer=true;
whilecontinuer
x=rand
pause(0.2)
(0 2)
ifx>0.8,continuer=false;end
end
x=0.7140
x=0.5762
x=0.8668
Quelquechosenevapas...
pf=
fail
pass
pass
????
fail
pass
p
13
ProgrammationsousMatlab
Fichiers*.matet*.dat,load,save
Matlabutilise2typesdefichiersdedonnes.
Lepremierestenformatbinaire (***.mat),peutcontenirplusieursvariables,nepeut
pastreutilispardautresprogrammes.
LesecondestenformatASCII (***.dat),nepeutcontenirquunevariablemaispeut
l
trelupardautresprogrammes.
d
Nomde
N
d
fichier
Nomdes
variables
>>savemesdataABC%sauvelesvariablesA,BetCdanslefichier
>>
save mesdata A B C % sauve les variables A B et C dans le fichier mesdata
mesdata.mat
mat
Utiliserlacommandeload mesdatapourrechargerlesvariablesA,BetC.
>>savefileB Bascii%sauvelesvaleursdeBdanslefichierfileB.dat
Nomde
Nom
de
fichier
Nomdela
variable
format
14
ProgrammationsousMatlab
Exercice:quadraturedelafonctionsinc
LLedveloppementdeTaylorau1
d l
t d T l
1ier ordresansreste,constituelalgorithmedEuler
d
t
tit l l ith
dE l
pourintgrerunefonctionconnueg(x).
Soitg(t)=sinc(t)lafonctionintgreretG(t)sonintgrale
supposeinconnue.
a)MontrerquonalapproximationG(t+h)=G(t)+h*sinc(t).
b)Donnerl
b)
Donner lexpression
expressiondeG
de Gn=G(t+n
= G(t+n*h)
h)enfonctiondeG
en fonction de Gn1 =G(t+(n1)h)sousune
= G(t+(n1)h) sous une
formesimilairecelledonneena).
c)Reprsentersinc(t)(fonctionnativedansMatlab)surledomainediscrett
) p
( )(
)
[[1,1]avec
, ]
100points(length(t)=100)etenutilisantlafonctionlinspace.
d)Ondonnelaconditioninitiale:G(t=1)=0.Dduiredea)etb),unalgorithmepour
calculerG(t)sur[1,1].Raliserlalgorithmedansunprogramme.ReprsenterG(t)surle
mmegraphequec).
Sivousavezdesdifficults,permutezleslignesdecodesuivantesdanslebonordreetajouterunebouclefor..end:
h =t(2)t(1);
G(1)=0;
plot(t,G,'r')
G(i)=G(i1)+h*sinc(t(i1));
holdon
t =linspace(1,1,N);
plot(t,sinc(t),'.')
N=100;
ProgrammationsousMatlab
Exercice:drivenumrique
Ecrireunefonctiondf=derive(f,x) quicalculeladrivenumriquedfdelafonction
fsurledomainex.Ladriveseraestimeenutilisantunediffrencefiniecentre.
LLincrment
incrmentserax
sera x =max(x)/1000.Eneffet,sixestfixunefaiblevaleurarbitraire,
max(x)/1000. En effet, si x est fix une faible valeur arbitraire,
parexemple1012 etquelesvaleursdexsontgrandes,disonsdelordrede1010,ona
f(x)=f(x+1012)carlordinateurnedistinguepas2nombresdelordredegrandeurde
xetnediffrantquedunequantitinfrieureunecertainevaleurappele
q
q
pp
epsillon .Celarendimpossiblelecalculdeladiffrencefinie.
Ladfinitionchoisiepourxdonnerait:x=107 >>epsillon.
1.5
Effectueruntestdugenre:
1
>>x=10:0.01:10;
>>f=@sinc;
>>plot(x,f(x),x,derive(f,x))
>>gridon
05
0.5
0
-0.5
-1
-1.5
-10
-8
-6
-4
-2
10
ProgrammationsousMatlab
Reprsenterlafonctionsinc
Excuterceprogramme:
x=[100:100]*pi/25;
y=sin(x)./x;
plot(x,y)
axis([15 15 0 4 1 2])
axis([15,15,0.4,1.2])
Quelle diffrence avecceluici:
x=[4*pi:0.1:+4*pi];
y=sin(x)./x;
plot(x,y)
axis([15,15,0.4,1.2])
Indice:essayer:>>sin(0)/0
Exercice:NaN,sum,prod
O i
Oprationssurlesvecteurs
l
Donnerlexpressionmathmatiquedontlecalcul
pourraittreralisaveclescommandes:
p
>>n=0:100;
>>S=sum(2.^n)
EcrirelescommandesMatlabralisantlecalcul:
Ecrireunefonctionutilisantprod() etsum()pour
calculerleproduitdessommesdechaqueligne
dunematrice3X3valeursalatoires.
17
ProgrammationsousMatlab
Exercice:Taylor
Onveutfaireuneexpriencenumriqueencomparantlafonctionsinusavecson
approximationdeTaylorlordre11.
a)) Gnrerlevecteurxdelongueur100stendantde02.
l
d l
d
d
b) GnrerlevecteurygallasriedeTaylordesin(0+x)=sin(0)++...=
y(x)jusqulordre11(onutiliseralacommandefactorial).
c)) Reprsenteryetsin(x)surlemmegraphiquequiseradcor.
R t
t i ( )
l
hi
i
d
1
0.5
-0.5
-1
-1.5
-2
-2.5
ProgrammationsousMatlab
Exercice:while,input,save,load,axis
Enutilisantl
En utilisant lditeur
diteurMatlab,crireunprogrammequipermettel
Matlab crire un programme qui permette lutilisateur
utilisateurd
dentrer
entrerdesdonnes
des donnes
parpaires hauteur/poids pourautantdepersonnesquencessairejusqucequilappuiesurla
toucheEntre.LeprogrammesauveralensembledesdonnessouslaformedunematricemX2
dansunfichier***.dat etdontlenomserasaisiparlutilisateur.Sivousnavezaucuneidepour
raliserceprogramme,vouspouvezpermuterleslignesdecodecidessousdanslebonordre.
Excuterleprogrammeetentrerlesdonnescidessous(nomdefichierutiliserhp.dat):
Hauteur: 1.85
Hauteur:
1 85
Poids:
82
Ecrireunprogrammequichargeles
donnesdufichierhp.dat etles
reprsenteaveclesymble+.Les
axescouvrirontledomaine[1.50,2.00]
et [60 85] (utiliser la commande axis)
et[60,85](utiliserlacommandeaxis).
1.78
1
78
80
1.88
1
88
78
1.68
1
68
65
1.70
1
70
64
%Entrededonnes,sauvegarde
clear
k=0;
continuer=1;
while continuer
end
k=k+1;
x(k,1)=h;
h = input('Entrer
h=input(
Entrerlahauteur
la hauteur '))
x(k,2)=input('Entrerlepoids')
ifisempty(h),continuer=0;end
filename =input(Entrerlenomdefichier(.dat):','s');
filename=[filename,'.dat'];
save(filename,'x','/ascii')
19