183
MATLAB ® Matlab est un logiciel de calcul numérique. Matlab est développé et commercialisé par la société américaine The MathWorks. Voici une introduction qui vous suffira largement si vous utilisez les outils mathématiques de façon ponctuelle. N.B. Ce qui suit a été testé avec les versions 4.2. et 6.5. Site officiel de Matlab : www.mathworks.com Première partie : Eléments de base Utilisation de Matlab à la manière d’une calculatrice scientifique

Exemples Matlab Presentation

  • Upload
    fieea

  • View
    90

  • Download
    1

Embed Size (px)

Citation preview

MATLAB reg

Matlab est un logiciel de calcul numeacuterique Matlab est

deacuteveloppeacute et commercialiseacute par la socieacuteteacute ameacutericaine The

MathWorks Voici une introduction qui vous suffira

largement si vous utilisez les outils matheacutematiques de faccedilon

ponctuelle

NB Ce qui suit a eacuteteacute testeacute avec les versions 42 et 65

Site officiel de Matlab wwwmathworkscom

Premiegravere partie Eleacutements de base

Utilisation de Matlab agrave la maniegravere drsquoune calculatrice

scientifique

1-Variables et constantes speacuteciales

ans reacuteponse la plus reacutecente

pi nombre pi

inf plus linfini

-inf moins linfini

NaN (Not-a-Number)

2-Opeacuterateurs matheacutematiques

+ addition

- soustraction

multiplication

division

^ puissance

gtgt (2 + 52)10 (5^3)

ans =

05760

gtgt -252e3

ans =

-2520

gtgt 2pi

ans =

62832 format long e affiche 16 chiffres

gtgt format long e

gtgt 2pi

ans = 6283185307179586e+000

format short (format par deacutefaut) affiche 5 chiffres

gtgt format short

gtgt 2pi

ans =

62832

gtgt 1 0

Warning Divide by zero

ans =

Inf

gtgt -1 0

Warning Divide by zero

ans =

-Inf

gtgt 0 0

Warning Divide by zero

ans =

NaN

3- Fonctions matheacutematiques

sin(X) sinus

asin(X) sinus inverse

cos(X) cosinus

acos(X) cosinus inverse

tan(X) tangente

atan(X) tangente inverse

avec X argument en radians

exp(X) exponentielle

log(X) logarithme naturel (base e)

log10(X) logarithme deacutecimal (base 10)

sqrt(X) racine carreacutee

abs(X) valeur absolue

gtgt sin(2)

ans =

09093

sinus (45deg)

gtgt sin(45pi180)

ans =

07071

gtgt 1 + exp(25)

ans =

131825

4- Utilisation de variables

gtgt 53

ans =

15

gtgt ans+4

ans =

19

gtgt a= 2 + log(15)

a =

47081

gtgt b = - 45

b =

-45

gtgt a b

ans =

-2118623

gtgt c = a - sqrt(abs(b))

c =

-20002

Calcul sur les nombres complexes

Fonctions

i imaginaire pur

j imaginaire pur

conj(X) conjugueacute du nombre complexe X

real(X) partie reacuteelle

imag(X) partie imaginaire

abs(X) module

angle(X) argument (en radians)

Exemples

gtgt (4 - 25i)(-2 + i)(1 + i)

ans =

17500 + 72500i

gtgt a = 1 + i

a =

10000 + 10000i

gtgt b = -2 + 35j

b =

-20000 + 35000i

gtgt a + b

ans =

-10000 + 45000i

gtgt a b

ans =

-55000 + 15000i

gtgt a b

ans =

00923 - 03385i

gtgt conj(a)

ans =

10000 - 10000i

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

1-Variables et constantes speacuteciales

ans reacuteponse la plus reacutecente

pi nombre pi

inf plus linfini

-inf moins linfini

NaN (Not-a-Number)

2-Opeacuterateurs matheacutematiques

+ addition

- soustraction

multiplication

division

^ puissance

gtgt (2 + 52)10 (5^3)

ans =

05760

gtgt -252e3

ans =

-2520

gtgt 2pi

ans =

62832 format long e affiche 16 chiffres

gtgt format long e

gtgt 2pi

ans = 6283185307179586e+000

format short (format par deacutefaut) affiche 5 chiffres

gtgt format short

gtgt 2pi

ans =

62832

gtgt 1 0

Warning Divide by zero

ans =

Inf

gtgt -1 0

Warning Divide by zero

ans =

-Inf

gtgt 0 0

Warning Divide by zero

ans =

NaN

3- Fonctions matheacutematiques

sin(X) sinus

asin(X) sinus inverse

cos(X) cosinus

acos(X) cosinus inverse

tan(X) tangente

atan(X) tangente inverse

avec X argument en radians

exp(X) exponentielle

log(X) logarithme naturel (base e)

log10(X) logarithme deacutecimal (base 10)

sqrt(X) racine carreacutee

abs(X) valeur absolue

gtgt sin(2)

ans =

09093

sinus (45deg)

gtgt sin(45pi180)

ans =

07071

gtgt 1 + exp(25)

ans =

131825

4- Utilisation de variables

gtgt 53

ans =

15

gtgt ans+4

ans =

19

gtgt a= 2 + log(15)

a =

47081

gtgt b = - 45

b =

-45

gtgt a b

ans =

-2118623

gtgt c = a - sqrt(abs(b))

c =

-20002

Calcul sur les nombres complexes

Fonctions

i imaginaire pur

j imaginaire pur

conj(X) conjugueacute du nombre complexe X

real(X) partie reacuteelle

imag(X) partie imaginaire

abs(X) module

angle(X) argument (en radians)

Exemples

gtgt (4 - 25i)(-2 + i)(1 + i)

ans =

17500 + 72500i

gtgt a = 1 + i

a =

10000 + 10000i

gtgt b = -2 + 35j

b =

-20000 + 35000i

gtgt a + b

ans =

-10000 + 45000i

gtgt a b

ans =

-55000 + 15000i

gtgt a b

ans =

00923 - 03385i

gtgt conj(a)

ans =

10000 - 10000i

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

^ puissance

gtgt (2 + 52)10 (5^3)

ans =

05760

gtgt -252e3

ans =

-2520

gtgt 2pi

ans =

62832 format long e affiche 16 chiffres

gtgt format long e

gtgt 2pi

ans = 6283185307179586e+000

format short (format par deacutefaut) affiche 5 chiffres

gtgt format short

gtgt 2pi

ans =

62832

gtgt 1 0

Warning Divide by zero

ans =

Inf

gtgt -1 0

Warning Divide by zero

ans =

-Inf

gtgt 0 0

Warning Divide by zero

ans =

NaN

3- Fonctions matheacutematiques

sin(X) sinus

asin(X) sinus inverse

cos(X) cosinus

acos(X) cosinus inverse

tan(X) tangente

atan(X) tangente inverse

avec X argument en radians

exp(X) exponentielle

log(X) logarithme naturel (base e)

log10(X) logarithme deacutecimal (base 10)

sqrt(X) racine carreacutee

abs(X) valeur absolue

gtgt sin(2)

ans =

09093

sinus (45deg)

gtgt sin(45pi180)

ans =

07071

gtgt 1 + exp(25)

ans =

131825

4- Utilisation de variables

gtgt 53

ans =

15

gtgt ans+4

ans =

19

gtgt a= 2 + log(15)

a =

47081

gtgt b = - 45

b =

-45

gtgt a b

ans =

-2118623

gtgt c = a - sqrt(abs(b))

c =

-20002

Calcul sur les nombres complexes

Fonctions

i imaginaire pur

j imaginaire pur

conj(X) conjugueacute du nombre complexe X

real(X) partie reacuteelle

imag(X) partie imaginaire

abs(X) module

angle(X) argument (en radians)

Exemples

gtgt (4 - 25i)(-2 + i)(1 + i)

ans =

17500 + 72500i

gtgt a = 1 + i

a =

10000 + 10000i

gtgt b = -2 + 35j

b =

-20000 + 35000i

gtgt a + b

ans =

-10000 + 45000i

gtgt a b

ans =

-55000 + 15000i

gtgt a b

ans =

00923 - 03385i

gtgt conj(a)

ans =

10000 - 10000i

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

62832 format long e affiche 16 chiffres

gtgt format long e

gtgt 2pi

ans = 6283185307179586e+000

format short (format par deacutefaut) affiche 5 chiffres

gtgt format short

gtgt 2pi

ans =

62832

gtgt 1 0

Warning Divide by zero

ans =

Inf

gtgt -1 0

Warning Divide by zero

ans =

-Inf

gtgt 0 0

Warning Divide by zero

ans =

NaN

3- Fonctions matheacutematiques

sin(X) sinus

asin(X) sinus inverse

cos(X) cosinus

acos(X) cosinus inverse

tan(X) tangente

atan(X) tangente inverse

avec X argument en radians

exp(X) exponentielle

log(X) logarithme naturel (base e)

log10(X) logarithme deacutecimal (base 10)

sqrt(X) racine carreacutee

abs(X) valeur absolue

gtgt sin(2)

ans =

09093

sinus (45deg)

gtgt sin(45pi180)

ans =

07071

gtgt 1 + exp(25)

ans =

131825

4- Utilisation de variables

gtgt 53

ans =

15

gtgt ans+4

ans =

19

gtgt a= 2 + log(15)

a =

47081

gtgt b = - 45

b =

-45

gtgt a b

ans =

-2118623

gtgt c = a - sqrt(abs(b))

c =

-20002

Calcul sur les nombres complexes

Fonctions

i imaginaire pur

j imaginaire pur

conj(X) conjugueacute du nombre complexe X

real(X) partie reacuteelle

imag(X) partie imaginaire

abs(X) module

angle(X) argument (en radians)

Exemples

gtgt (4 - 25i)(-2 + i)(1 + i)

ans =

17500 + 72500i

gtgt a = 1 + i

a =

10000 + 10000i

gtgt b = -2 + 35j

b =

-20000 + 35000i

gtgt a + b

ans =

-10000 + 45000i

gtgt a b

ans =

-55000 + 15000i

gtgt a b

ans =

00923 - 03385i

gtgt conj(a)

ans =

10000 - 10000i

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt 1 0

Warning Divide by zero

ans =

Inf

gtgt -1 0

Warning Divide by zero

ans =

-Inf

gtgt 0 0

Warning Divide by zero

ans =

NaN

3- Fonctions matheacutematiques

sin(X) sinus

asin(X) sinus inverse

cos(X) cosinus

acos(X) cosinus inverse

tan(X) tangente

atan(X) tangente inverse

avec X argument en radians

exp(X) exponentielle

log(X) logarithme naturel (base e)

log10(X) logarithme deacutecimal (base 10)

sqrt(X) racine carreacutee

abs(X) valeur absolue

gtgt sin(2)

ans =

09093

sinus (45deg)

gtgt sin(45pi180)

ans =

07071

gtgt 1 + exp(25)

ans =

131825

4- Utilisation de variables

gtgt 53

ans =

15

gtgt ans+4

ans =

19

gtgt a= 2 + log(15)

a =

47081

gtgt b = - 45

b =

-45

gtgt a b

ans =

-2118623

gtgt c = a - sqrt(abs(b))

c =

-20002

Calcul sur les nombres complexes

Fonctions

i imaginaire pur

j imaginaire pur

conj(X) conjugueacute du nombre complexe X

real(X) partie reacuteelle

imag(X) partie imaginaire

abs(X) module

angle(X) argument (en radians)

Exemples

gtgt (4 - 25i)(-2 + i)(1 + i)

ans =

17500 + 72500i

gtgt a = 1 + i

a =

10000 + 10000i

gtgt b = -2 + 35j

b =

-20000 + 35000i

gtgt a + b

ans =

-10000 + 45000i

gtgt a b

ans =

-55000 + 15000i

gtgt a b

ans =

00923 - 03385i

gtgt conj(a)

ans =

10000 - 10000i

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Warning Divide by zero

ans =

NaN

3- Fonctions matheacutematiques

sin(X) sinus

asin(X) sinus inverse

cos(X) cosinus

acos(X) cosinus inverse

tan(X) tangente

atan(X) tangente inverse

avec X argument en radians

exp(X) exponentielle

log(X) logarithme naturel (base e)

log10(X) logarithme deacutecimal (base 10)

sqrt(X) racine carreacutee

abs(X) valeur absolue

gtgt sin(2)

ans =

09093

sinus (45deg)

gtgt sin(45pi180)

ans =

07071

gtgt 1 + exp(25)

ans =

131825

4- Utilisation de variables

gtgt 53

ans =

15

gtgt ans+4

ans =

19

gtgt a= 2 + log(15)

a =

47081

gtgt b = - 45

b =

-45

gtgt a b

ans =

-2118623

gtgt c = a - sqrt(abs(b))

c =

-20002

Calcul sur les nombres complexes

Fonctions

i imaginaire pur

j imaginaire pur

conj(X) conjugueacute du nombre complexe X

real(X) partie reacuteelle

imag(X) partie imaginaire

abs(X) module

angle(X) argument (en radians)

Exemples

gtgt (4 - 25i)(-2 + i)(1 + i)

ans =

17500 + 72500i

gtgt a = 1 + i

a =

10000 + 10000i

gtgt b = -2 + 35j

b =

-20000 + 35000i

gtgt a + b

ans =

-10000 + 45000i

gtgt a b

ans =

-55000 + 15000i

gtgt a b

ans =

00923 - 03385i

gtgt conj(a)

ans =

10000 - 10000i

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

exp(X) exponentielle

log(X) logarithme naturel (base e)

log10(X) logarithme deacutecimal (base 10)

sqrt(X) racine carreacutee

abs(X) valeur absolue

gtgt sin(2)

ans =

09093

sinus (45deg)

gtgt sin(45pi180)

ans =

07071

gtgt 1 + exp(25)

ans =

131825

4- Utilisation de variables

gtgt 53

ans =

15

gtgt ans+4

ans =

19

gtgt a= 2 + log(15)

a =

47081

gtgt b = - 45

b =

-45

gtgt a b

ans =

-2118623

gtgt c = a - sqrt(abs(b))

c =

-20002

Calcul sur les nombres complexes

Fonctions

i imaginaire pur

j imaginaire pur

conj(X) conjugueacute du nombre complexe X

real(X) partie reacuteelle

imag(X) partie imaginaire

abs(X) module

angle(X) argument (en radians)

Exemples

gtgt (4 - 25i)(-2 + i)(1 + i)

ans =

17500 + 72500i

gtgt a = 1 + i

a =

10000 + 10000i

gtgt b = -2 + 35j

b =

-20000 + 35000i

gtgt a + b

ans =

-10000 + 45000i

gtgt a b

ans =

-55000 + 15000i

gtgt a b

ans =

00923 - 03385i

gtgt conj(a)

ans =

10000 - 10000i

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt sin(45pi180)

ans =

07071

gtgt 1 + exp(25)

ans =

131825

4- Utilisation de variables

gtgt 53

ans =

15

gtgt ans+4

ans =

19

gtgt a= 2 + log(15)

a =

47081

gtgt b = - 45

b =

-45

gtgt a b

ans =

-2118623

gtgt c = a - sqrt(abs(b))

c =

-20002

Calcul sur les nombres complexes

Fonctions

i imaginaire pur

j imaginaire pur

conj(X) conjugueacute du nombre complexe X

real(X) partie reacuteelle

imag(X) partie imaginaire

abs(X) module

angle(X) argument (en radians)

Exemples

gtgt (4 - 25i)(-2 + i)(1 + i)

ans =

17500 + 72500i

gtgt a = 1 + i

a =

10000 + 10000i

gtgt b = -2 + 35j

b =

-20000 + 35000i

gtgt a + b

ans =

-10000 + 45000i

gtgt a b

ans =

-55000 + 15000i

gtgt a b

ans =

00923 - 03385i

gtgt conj(a)

ans =

10000 - 10000i

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

15

gtgt ans+4

ans =

19

gtgt a= 2 + log(15)

a =

47081

gtgt b = - 45

b =

-45

gtgt a b

ans =

-2118623

gtgt c = a - sqrt(abs(b))

c =

-20002

Calcul sur les nombres complexes

Fonctions

i imaginaire pur

j imaginaire pur

conj(X) conjugueacute du nombre complexe X

real(X) partie reacuteelle

imag(X) partie imaginaire

abs(X) module

angle(X) argument (en radians)

Exemples

gtgt (4 - 25i)(-2 + i)(1 + i)

ans =

17500 + 72500i

gtgt a = 1 + i

a =

10000 + 10000i

gtgt b = -2 + 35j

b =

-20000 + 35000i

gtgt a + b

ans =

-10000 + 45000i

gtgt a b

ans =

-55000 + 15000i

gtgt a b

ans =

00923 - 03385i

gtgt conj(a)

ans =

10000 - 10000i

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

-45

gtgt a b

ans =

-2118623

gtgt c = a - sqrt(abs(b))

c =

-20002

Calcul sur les nombres complexes

Fonctions

i imaginaire pur

j imaginaire pur

conj(X) conjugueacute du nombre complexe X

real(X) partie reacuteelle

imag(X) partie imaginaire

abs(X) module

angle(X) argument (en radians)

Exemples

gtgt (4 - 25i)(-2 + i)(1 + i)

ans =

17500 + 72500i

gtgt a = 1 + i

a =

10000 + 10000i

gtgt b = -2 + 35j

b =

-20000 + 35000i

gtgt a + b

ans =

-10000 + 45000i

gtgt a b

ans =

-55000 + 15000i

gtgt a b

ans =

00923 - 03385i

gtgt conj(a)

ans =

10000 - 10000i

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

i imaginaire pur

j imaginaire pur

conj(X) conjugueacute du nombre complexe X

real(X) partie reacuteelle

imag(X) partie imaginaire

abs(X) module

angle(X) argument (en radians)

Exemples

gtgt (4 - 25i)(-2 + i)(1 + i)

ans =

17500 + 72500i

gtgt a = 1 + i

a =

10000 + 10000i

gtgt b = -2 + 35j

b =

-20000 + 35000i

gtgt a + b

ans =

-10000 + 45000i

gtgt a b

ans =

-55000 + 15000i

gtgt a b

ans =

00923 - 03385i

gtgt conj(a)

ans =

10000 - 10000i

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt a = 1 + i

a =

10000 + 10000i

gtgt b = -2 + 35j

b =

-20000 + 35000i

gtgt a + b

ans =

-10000 + 45000i

gtgt a b

ans =

-55000 + 15000i

gtgt a b

ans =

00923 - 03385i

gtgt conj(a)

ans =

10000 - 10000i

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt a b

ans =

-55000 + 15000i

gtgt a b

ans =

00923 - 03385i

gtgt conj(a)

ans =

10000 - 10000i

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt a conj(a)

ans =

2

gtgt real(a)

ans =

1

gtgt imag(conj(a))

ans =

-1

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt abs(a)

ans =

14142

gtgt angle(a)

ans =

07854

sqrt fonction racine carreacutee

gtgt c = 2 - sqrt(3)i

c =

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

20000 - 17321i

gtgt abs(c)

ans =

26458

gtgt angle(c)

ans =

-07137

Argument en degreacutes

gtgt angle(c)180pi

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

ans =

-408934

Calcul sur les matrices

Fonctions

+ addition de matrices

- soustraction de matrices

produit de matrices

^ puissance

eye (n) matrice uniteacute (matrice identiteacute) de taille n x n

Inv (X) inverse de la matrice carreacutee X

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

rank (X) rang de la matrice X (nombre de colonnes ou de lignes

indeacutependantes)

det (X) deacuteterminant de la matrice carreacutee X

X transposeacutee de la matrice X

division agrave droite A B est eacutequivalent agrave A inv(B)

division agrave gauche A B est eacutequivalent agrave inv(A) B

Exemples

Saisie dune matrice carreacutee de taille 3 x 3

gtgt A = [ 2 4 5 1 5 7 -3 3 1]

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

A =

2 4 5

1 5 7

-3 3 1

gtgt A(2 3)

ans =

7

gtgt A(2 3) = 6

A =

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

2 4 5

1 5 6

-3 3 1

gtgt A

ans =

2 1 -3

4 5 3

5 6 1

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt inv(A)

ans =

10833 -09167 00833

15833 -14167 05833

-15000 15000 -05000

gtgt D = A inv(A)

D =

10000 00000 00000

00000 10000 00000

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

00000 00000 10000

gtgt rank(A)

ans =

3

gtgt det(A)

ans =

-12

gtgt eye(7)

ans =

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0 0 0 1

gtgt B = [ 1 1 0 1 0 1 0 1 1 ]

B =

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

1 1 0

1 0 1

0 1 1

gtgt A + B

ans =

3 5 5

2 5 7

-3 4 2

gtgt 2 + A

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

ans =

4 6 7

3 7 8

-1 5 3

gtgt 2 A

ans =

4 8 10

2 10 12

-6 6 2

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt A B

ans =

6 7 9

6 7 11

0 -2 4

gtgt B A

ans =

3 9 11

-1 7 6

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

-2 8 7

gtgt AAA

ans =

-88 304 262

-98 314 268

-18 18 10

gtgt A^3

ans =

-88 304 262

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

-98 314 268

-18 18 10

Saisie dune matrice agrave coefficients complexes de taille 2 x 3

gtgt C = [ 1 + i 0 0 1 - i i 2]

C =

10000 + 10000i 0 0

10000 - 10000i 0 + 10000i 20000

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt C A

ans =

20000 + 20000i 40000 + 40000i 50000 + 50000i

-40000 - 10000i 100000 + 10000i 70000 + 10000i

Reacutesolution drsquoun systegraveme drsquoeacutequations lineacuteaires

Fonction

division agrave gauche de matrices

A B est eacutequivalent agrave inv(A)B

Exemple ndeg1

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Soit agrave reacutesoudre un systegraveme de 3 eacutequations agrave 3 inconnues x1

x2 et x3

On saisit les diffeacuterents coefficients dans une matrice 3 x 3

gtgt A = [ 3 2 1 -1 5 2 4 -2 3 ]

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

A =

3 2 1

-1 5 2

4 -2 3

On complegravete avec un vecteur colonne 3 x 1

gtgt B = [ 4 -1 3 ]

B =

4

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

-1

3

La solution est donneacutee sous la forme dun vecteur colonne

gtgt A B

ans =

13279

02951

-05738

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Autre meacutethode

gtgt inv(A) B

ans =

13279

02951

-05738

gtgt format long e

gtgt A B

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

ans =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X = A B

X =

1327868852459016e+000

2950819672131148e-001

-5737704918032788e-001

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt X(1)

ans =

1327868852459016e+000

gtgt X(2)

ans =

2950819672131148e-001

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt X(3)

ans =

-5737704918032788e-001

Veacuterification

gtgt 3X(1) + 2X(2) + X(3)

ans =

4

gtgt -X(1) + 5X(2) + 2X(3)

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

ans =

-9999999999999998e-001

gtgt 4X(1) -2X(2) + 3X(3)

ans =

3000000000000000e+000

Exemple ndeg2

Soit le systegraveme deacutequations parameacutetriques

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

On cherche agrave exprimer x1 x2 et x3 en fonction de b1 b2 et b3

gtgt A = [ -1 2 1 -1 1 2 1 -2 1 ]

A =

-1 2 1

-1 1 2

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

1 -2 1

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

gtgt format rational

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt inv(A)

ans =

52 -2 32

32 -1 12

12 0 12

gtgt format short

gtgt inv(A)

ans =

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

25000 -20000 15000

15000 -10000 05000

05000 0 05000

Finalement

Creacuteation du fichier m drsquoune fonction y=f(x)

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Fonction

function

Exemple

Soit la fonction

a) Commencez pour ouvrir un eacutediteur de texte

Dans la fenecirctre de commande de Matlab

File -gt New -gt M-file

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Avec la version 42 leacutediteur de texte par deacutefaut est

lapplication Bloc-notes

Avec la version 65 leacutediteur de texte par deacutefaut est

lapplication M-File Editor

b) Donnez un nom agrave cette fonction (dans cet exemple fonc)

et saisissez son expression matheacutematique

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Attention il faut mettre un point devant les opeacuterateurs

multiplication division et puissance

^

c) Sauvegardez le fichier dans votre reacutepertoire de travail (par

exemple cUSERS)

Nom fonc

Extension m

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

d) Ajoutez le chemin du reacutepertoire ougrave se trouve votre fichier

foncm

Avec la version 42

gtgt path(pathcUSERS)

Avec la version 65

File -gt Set Path -gt Add Folder

-gt Save -gt Close

Remarque Vous pouvez utiliser nimporte quel nom pour

les variables

La fichier suivant donne le mecircme reacutesultat

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Evaluation dune fonction

Calcul de y ( x = 0 )

gtgt fonc(0)

ans =

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

2

Calcul de y ( x = 5 )

gtgt fonc(5)

ans =

102010

gtgt fonc(-1)

Warning Divide by zero

ans =

Inf

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Avec en argument un vecteur la fonction retourne un vecteur

gtgt fonc( [0 1 2 3 4 5] )

ans =

20000 38415 39099 69121 81121 102010

gtgt x = 0 5

x =

0 1 2 3 4 5

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt y = fonc(x)

y =

20000 38415 39099 69121 81121 102010

Avec en argument une matrice la fonction retourne une

matrice

gtgt fonc( [ 1 2 3 4 5 6] )

ans =

38415 39099 69121

81121 102010 112939

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Creacuteation du fichier m drsquoune fonction deacutefinie par

morceaux y=f(x)

Exemple

Soit la fonction y = f(x)

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Le fichier f5m associeacute agrave cette fonction seacutecrit

gtgt f5 (0)

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

ans =

0

gtgt f5 (1)

ans =

05000

gtgtf5 (-10)

ans =

0

gtgt f5 (3)

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

ans =

00556

gtgt fplot ( f5 [ -2 4 ] )

gtgt grid on

Graphe en 2D (2 axes)

Fonctions

plot trace point par point un graphe 2D

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

semilogx identique agrave plot mais avec eacutechelle logarithmique pour laxe

des abscisses

semilogy identique agrave plot mais avec eacutechelle logarithmique pour laxe

des ordonneacutees

loglog identique agrave plot mais avec eacutechelles logarithmiques pour les

deux axes

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

figure creacutee une nouvelle fenecirctre

Exemple 1

Temps

(heures)

0 2 4 6 8 10 12 14 16

Tempeacuterature

(degC)

20 23 30 33 32 37 34 39 36

gtgt temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

gtgt temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

temperature =

20 23 30 33 32 37 34 39 36

gtgt plot (temps temperature)

gtgt grid on

gtgt xlabel ( temps (en heures) )

gtgt ylabel ( tempeacuterature (en degC) )

gtgt title ( Suivi de tempeacuterature )

gtgt axis ( [ 0 18 10 40 ] )

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt plot ( temps temperature + )

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt plot ( temps temperature co )

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt plot ( temps temperature )

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt plot ( temps temperature -- )

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Autres options

y Jaune

m Magenta

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

c Cyan

r Rouge

g Vert

b Bleu

w Blanc

k Noir

o

x

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

+

-

-

--

Exemple 2 graphe drsquoune fonction agrave une variable

Creacuteation du vecteur t

gtgt t = 0 001 1

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

t =

Columns 1 through 7

0 00100 00200 00300 00400 00500 00600

hellip

Columns 99 through 101

09800 09900 10000

Creacuteation du vecteur y

Attention ne pas oublier le point devant les opeacuterateurs

multiplication puissance et division

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

^

gtgt y = t(1 + t^2)10

y =

Columns 1 through 7

0 00010 00020 00030 00040 00050 00060

hellip

Columns 99 through 101

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

01921 01960 02000

gtgt plot ( t y )

gtgt grid on

Remarque il est plus efficace drsquoutiliser la fonction fplot

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Exemple 3 eacutequations parameacutetriques dune ellipse

x = 4cos(t)

y = sin(t)

gtgt t = 0 pi100 2pi

gtgt x = 4cos(t)

gtgt y = sin(t)

gtgt plot ( x y )

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Graphe drsquoune fonction agrave une variable y = f (x)

Fonctions

fplot trace point par point le graphe dune fonction

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

ylabel ajoute une leacutegende pour laxe des ordonneacutees

title ajoute un titre

axis modifie les eacutechelles des axes

zoom effectue un zoom

gtext place une leacutegende avec la souris

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Premiegravere meacutethode

On veut tracer le graphe de la fonction

gtgt fplot(1+ 2x + sin(xx) [ 1 5 ])

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Remarque la variable doit neacutecessairement sappeler x

gtgt fplot(1+ 2x + sin(xx) [ 2 3 2 10 ])

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt grid on

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt grid off

gtgt xlabel(axe des abscisses)

gtgt ylabel(axe des ordonneacutees)

gtgt title(y=f(x))

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt zoom on

click droit zoom arriegravere

click gauche zoom avant

click gauche et glisseacute zoom drsquoune zone

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt zoom off

Pour tracer plusieurs graphes dans la mecircme fenecirctre

gtgt fplot([1+ 2x + sin(xx) 1+ 2x - sin(xx) ] [ -2 25 ])

gtgt gtext(fonction 1)

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt gtext(fonction 2)

Deuxiegraveme meacutethode

Nous allons creacuteer le fichier m de la fonction

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt fplot(f2 [ 0 10])

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt hold on

gtgt fplot(sin(x) [ 0 10 ] b)

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt hold off

gtgt [X Y] = fplot ( sin(x) [ 0 10 ] )

X =

0

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

00200

00600

98700

99350

100000

Y =

0

00200

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

00600

-04307

-04884

-05440

gtgt fplot ( sin(x) [ 0 10 ] )

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Autres options

y Jaune

m Magenta o

c Cyan x

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

r Rouge +

g Vert -

b Bleu

w Blanc

k Noir -

--

Graphe en 3D (3 axes)

Fonctions

plot3 trace point par point un graphe 3D

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

view ajuste langle de vue

Exemple 1

gtgt x = [ 1 2 3 4 ]

x =

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

1 2 3 4

gtgt y = [ 2 4 6 7]

y =

2 4 6 7

gtgt z = [ 3 8 5 6 ]

z =

3 8 5 6

gtgt plot3 (x y z r)

gtgt grid on

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt xlabel(axe des x)

gtgt ylabel(axe des y)

gtgt zlabel(axe des z)

gtgt title(plot3)

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Exemple 2 eacutequations parameacutetriques

x = cos (t)

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

y = sin (t)

z = t

gtgt t = 0 pi100 5pi

gtgt plot3 (cos(t) sin(t) t)

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Graphe drsquoune fonction agrave deux variables z = f (x y)

Fonctions

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

meshgrid (voir lexemple)

mesh (voir lexemple)

meshc (voir lexemple)

meshz (voir lexemple)

contour (voir lexemple)

view ajuste langle de vue

grid ajoute une grille

xlabel ajoute une leacutegende pour laxe des abscisses

ylabel ajoute une leacutegende pour laxe des ordonneacutees

zlabel ajoute une leacutegende pour laxe des z

title ajoute un titre

hold ajoute un graphe dans la fenecirctre courante

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

figure creacutee une nouvelle fenecirctre

Exemple 1

gtgt x = -2 2

x =

-2 -1 0 1 2

gtgt y = -3 3

y =

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

-3 -2 -1 0 1 2 3

gtgt [X Y] = meshgrid(x y)

X =

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

-2 -1 0 1 2

Y =

-3 -3 -3 -3 -3

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt Z = sqrt (X^2 + 2Y^2)

Z =

46904 43589 42426 43589 46904

34641 30000 28284 30000 34641

24495 17321 14142 17321 24495

20000 10000 0 10000 20000

24495 17321 14142 17321 24495

34641 30000 28284 30000 34641

46904 43589 42426 43589 46904

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt mesh (X Y Z)

gtgt grid on

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Pour une meilleure reacutesolution

gtgt x = -2 01 2

gtgt y = -3 01 3

gtgt [X Y] = meshgrid(x y)

gtgt Z = sqrt (X^2 + 2Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt meshc (X Y Z)

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt contour (x y Z)

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt meshz (X Y Z)

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt mesh (X Y Z)

gtgt grid on

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt view(-80 10)

Remarque view (-375 30) par deacutefaut

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Exemple 2

z = f (x y ) = yexp( - xsup2 - ysup2 )

gtgt x = -2 01 2

gtgt y= -2 01 2

gtgt [X Y] = meshgrid(x y)

gtgt Z = Yexp ( -X^2 - Y^2)

gtgt mesh (X Y Z)

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt meshc (X Y Z)

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt contour (x y Z)

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Calcul sur les polynocircmes o Racines dun polynocircme

o Deacutetermination des coefficients drsquoun polynocircme agrave

partir des ses racines

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

o Produit de polynocircmes

o Fractions rationnelles Deacutecomposition en eacuteleacutements

simples

o Repreacutesentation graphique

Recherche du minimun drsquoune fonction f(x)

Recherche de racines Equation non lineacuteaire agrave une

inconnue f(x)=0

Deacuteriveacutee dune fonction f (x)

Calcul drsquointeacutegrale

Equation diffeacuterentielle

Diagramme de Bode

Fonctions

Log10 logarithme deacutecimal

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Semilogx identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses

Loglog identique agrave la fonction plot mais avec une

eacutechelle logarithmique pour lrsquoaxe des abscisses et des

ordonneacutees

Premier exemple

Consideacuterons un filtre passe-bas du 2egraveme ordre de fonction de

transfert

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

avec K = 10 f1 = 1 kHz et f2 = 10 kHz

Il faut commencer par creacuteer le fichier t4m de la fonction de

transfert

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Valeur de la fonction de transfert pour f = 0 Hz (reacutegime

continu)

gtgt t4(0)

ans =

10

Valeur de la fonction de transfert pour f = 100 Hz

gtgt t4(100)

ans =

98901 - 10890i

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Le module donne lamplification

gtgt abs(t4(100))

ans =

99499

Largument donne le deacutephasage (en radians)

gtgt angle(t4(100))

ans =

-01097

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Etudions la fonction de transfert sur la gamme de freacutequence

100 Hz agrave 100 kHz

gtgt log10(100)

ans =

2

gtgt log10(100000)

ans =

5

Nous allons creacuteer un vecteur logf

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt logf = 2 001 5

gtgt f = 10^logf

f est un vecteur qui nous donne 300 points uniformeacutement

reacutepartis de 100 Hz agrave 100 kHz (compte tenu de lrsquoeacutechelle

logarithmique)

G est un vecteur qui nous retourne le gain (en dB) pour les

freacutequences preacuteceacutedentes

gtgt G = 20log10 (abs (t4(f)) )

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt semilogx ( f G )

gtgt ylabel ( gain (dB) )

gtgt xlabel ( freacutequence (Hz) )

gtgt title ( diagramme de Bode du gain )

gtgt grid on

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Deacutephasage en degreacutes

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt dephasage = angle(t4(f))180pi

gtgt semilogx ( f dephasage )

gtgt grid on

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Deuxiegraveme exemple systegraveme du deuxiegraveme ordre

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Fichier de deacutefinition de la fonction t2

gtgt logpulsation = 3 001 6

gtgt pulsation = 10^logpulsation

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt G = 20log10(abs(t2(pulsation)))

gtgt semilogx ( pulsation G )

gtgt grid on

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt dephasage = angle(t2(pulsation))180pi

gtgt semilogx ( pulsation dephasage )

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt grid on

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt amplification = abs(t2(pulsation))

gtgt loglog ( pulsation amplification)

gtgt grid on

gtgt xlabel ( pulsation(rads) )

gtgt ylabel ( amplification )

gtgt title ( Diagramme de Bode )

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Scalaires vecteurs matrices et tableaux

Calcul numeacuterique calcul litteacuteral et calcul formel

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

- Premier script Graphe dune fonction agrave une variable

Au lieu de taper la seacuterie de commandes qui permet de tracer

le graphe de la fonction y(x) =100x((50+x)2)

gtgt fplot(100x((50+x)^2)[0 200])

gtgt grid on

gtgt xlabel(R (en ohms))

gtgt ylabel(P (en watts))

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt title(Courbe P(R))

vous pouvez une fois pour toute eacutecrire un script Pour cela

il vous faut un eacutediteur de texte (le bloc-notes par exemple)

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Le signe signifie que le reste de la ligne est un

commentaire

Pour exeacutecuter le script il suffit de taper son nom dans la

fenecirctre de commande

gtgt script1

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

La commande ECHO ON permet dafficher agrave leacutecran les

commandes exeacutecuteacutees par le script

gtgt echo on

gtgt script1

script1m

fplot(100x((50+x)^2)[0 200])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

title(Courbe P(R))

gtgt echo off

2- Affichage agrave leacutecran fonction DISP

Cette fonction permet dafficher proprement des valeurs

numeacuteriques ou bien du texte (chaicircne de caractegraveres) agrave leacutecran

Affichage de nombres

gtgt a=15

gtgt disp(a)

15

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt b=[1 8 9]

gtgt disp(b)

1 8 9

gtgt disp([17 -2536 sqrt(6)])

170000 -253600 24495

gtgt disp([17 -2536 sqrt(6)])

170000

-253600

24495

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt a=12

gtgt disp([17 a sqrt(a+13)])

17 12 5

Affichage de textes

gtgt c=Bonjour

gtgt disp(c)

Bonjour

gtgt disp(Bonjour)

Bonjour

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt disp([Mohammed Ali Fatima])

MohammedAliFatima

La commande BLANKS(n) affiche n espaces

gtgt disp([ Mohammed blanks(1) Ali blanks(1)

Fatima ])

Mohammed Ali Fatima

Affichage combineacute de textes et de nombres

La fonction NUM2STR convertit un nombre en une chaicircne

de caractegraveres

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt disp([Il est num2str(12) heures])

Il est 12 heures

gtgt a=18

gtgt disp([Il est num2str(a) heures num2str(58)])

Il est 18 heures 58

3- Saisie au clavier fonction INPUT

Cette fonction effectue la saisie de valeurs numeacuteriques ou

bien de textes

Saisie de nombres

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

script2m

disp(Bonjour)

x0=input(Taper la valeur de R min )

x1=input(Taper la valeur de R max )

disp([R min = num2str(x0)])

disp([R max = num2str(x1)])

fplot(100x((50+x)^2)[x0 x1])

grid on

xlabel(R (en ohms))

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

ylabel(P (en watt))

title(Courbe P(R))

disp(Au revoir)

gtgt script2

Bonjour

Taper la valeur de R min 20

Taper la valeur de R max 100

R min =20

R max =100

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Au revoir

Saisie de textes

scrip2_1m

nom=input(Taper votre nom s)

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

prenom=input(Taper votre preacutenom s)

age=input(Taper votre acircge )

disp([nom blanks(1) prenom])

disp([Age num2str(age)])

gtgt scrip2_1

Taper votre nom Abounaouass

Taper votre preacutenom Mohammed

Taper votre acircge 21

Abounaouass Mohammed

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Age 21

4- Boucle FOR

Cette instruction permet de reacutepeacuteter un bloc dinstructions un

nombre deacutetermineacute de fois

Synthaxe

for expression

bloc dinstructions

end

Exemples

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

script3m

for i=15

disp([i ii])

end

gtgt script3

1 1

2 4

3 9

4 16

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

5 25

scrip3_1m

n=input(Nombre de boucles = )

for i=1n

disp(i)

end

gtgt scrip3_1

Nombre de boucles = 4

1

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

2

3

4

script4m

for i=1210

disp(i)

end

gtgt script4

1

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

3

5

7

9

script5m

for i=13

for j=16

a(ij)=i+10j

end

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

end

disp(a)

gtgt script5

11 21 31 41 51 61

12 22 32 42 52 62

13 23 33 43 53 63

5- Boucle WHILE

Synthaxe

while condition

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

bloc dinstructions

end

Le programme teste la condition

Si la condition est fausse le programme saute agrave linstruction

qui suit END

Si la condition est vraie le bloc dinstructions est exeacutecuteacute

puis le programme teste agrave nouveau la condition

Attention aux bugs de programmation

si la condition est toujours vraie la boucle sexeacutecute

indeacutefiniment le programme est planteacute

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Opeacuterateurs de comparaison

== eacutegal

gt supeacuterieur

lt infeacuterieur

gt= supeacuterieur ou eacutegal

lt= infeacuterieur ou eacutegal

~= diffeacuterent

Exemples

script6m

n=0

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

while (nlt10)

n=n+1

disp(n)

end

La boucle est exeacutecuteacutee tant que n est infeacuterieur agrave 10

gtgt script6

1

2

3

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

4

5

6

7

8

9

10

Opeacuterateurs logiques

amp ET logique (AND)

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

| OU logique (OR)

~ NON logique

script7m

note=-1

while ((notelt0) | (notegt20))

note=input(taper la note (0 agrave 20) )

end

disp([note = num2str(note)])

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

La boucle est exeacutecuteacutee tant que la note est infeacuterieure agrave 0 ou

bien supeacuterieure agrave 20

Cela permet de saisir une note forceacutement comprise entre 0 et

20

gtgt script7

taper la note (0 agrave 20) 30

taper la note (0 agrave 20) 17

note =17

6- Instructions IF ELSE ELSEIF

Synthaxe

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

IF

if condition

bloc dinstructions

end

Le bloc dinstructions est exeacutecuteacute si la condition est vraie

Autrement il est ignoreacute

IF ELSE

if condition

bloc dinstructions 1

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

else

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition est vraie

Sinon cest le bloc dinstructions 2 qui est exeacutecuteacute

IF ELSE IF

if condition1

bloc dinstructions 1

else if condition2

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

bloc dinstructions 2

end

Le bloc dinstructions 1 est exeacutecuteacute si la condition 1 est

vraie

Sinon si la condition2 est vraie le bloc dinstructions 2 est

exeacutecuteacute

script8m

note=-1

while ((notelt0) | (notegt20))

note=input(Taper la note (0 agrave 20) )

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

if (notelt0)

disp (Valeur invalide (note lt 0))

end

if (notegt20)

disp (Valeur invalide (note gt 20))

end

end

disp(note = )

disp(note)

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt script8

Taper la note (0 agrave 20) -5

Valeur invalide (note lt 0)

Taper la note (0 agrave 20) 25

Valeur invalide (note gt 20)

Taper la note (0 agrave 20) 12

note =

12

7- Instruction BREAK

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Linstruction BREAK permet de sortir dune boucle FOR ou

dune boucle WHILE

script11m

for i=110

if i==5

break

end

disp(i)

end

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt script11

1

2

3

4

script12m

i=0

while 1

i=i+1

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

if igt5

break

end

disp(i)

end

La condition while 1 est toujours vraie

Le seul moyen de sortir de la boucle est dutiliser linstruction

BREAK

gtgt script12

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

1

2

3

4

5

8- Exemples de scripts

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R)

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C)

8-3- Calcul de la factorielle n

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

8-4- Diagrammes de Bode dun filtre analogique H(p)

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

8-1- Reacutesolution dune eacutequation du 2egraveme degreacute (dans R

espace des nombres reacuteels)

trinomem

disp(Calcul dans R des racines de axsup2+bx+c=0)

choix=Y

while (choix~=N amp choix~=n)

a=0

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

while (a==0)

a=input(a= )

if (a==0)

disp (Valeur non valide )

end

end

b=input(b= )

c=input(c= )

delta=bb-4ac

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

if (deltalt0)

disp(Pas de racine reacuteelle)

end

if (delta==0)

disp(Une racine double )

racine=-b(2a)

disp(racine)

end

if (deltagt0)

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

disp(Deux racines )

racine1=(-b+sqrt(delta))(2a)

racine2=(-b-sqrt(delta))(2a)

disp(racine1)

disp(racine2)

end

choix=input(Un autre calcul (ON) s)

end

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt trinome

Calcul dans R des racines de axsup2+bx+c=0

a= 0

Valeur non valide

a= 1

b= 236

c= -45

Deux racines

12474

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

-36074

Un autre calcul (ON) n

8-2- Reacutesolution dune eacutequation du 2egraveme degreacute (dans C

espace des nombres complexes)

trinome1m

disp(Calcul dans C des racines de axsup2+bx+c=0)

p(1)=input(a= )

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

p(2)=input(b= )

p(3)=input(c= )

disp(Racines )

disp(roots(p))

gtgt trinome1

Calcul dans C des racines de axsup2+bx+c=0

a= 2+i

b= -5

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

c= 15-5i

Racines

08329 + 06005i

-02079 - 06005i

8-3- Calcul de la factorielle n

factom

disp(Calcul de la factorielle)

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

n=input(n = )

fact=1

for i=1n

fact=facti

end

disp([num2str(n) =])

format long e

disp(fact)

(C) Fabrice Sincegravere

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt facto

Calcul de la factorielle

n = 134

134=

1992942746161518e+228

8-4- Diagrammes de Bode dun filtre analogique H(p)

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Exemple

Soit un filtre passe-bas du deuxiegraveme ordre dont voici la

fonction de transfert

gtgt bode

Ce script Matlab permet de tracer les diagrammes de

Bode

Il neacutecessite le fichier transm (fichier de deacutefinition de la

fonction de transfert)

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Gamme de freacutequences f min (en Hz)= 100

f max (en Hz)= 100000

Nombre de points = 1000

Figure 1 -gt gain en fonction de la freacutequence

Figure 2 -gt deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

Teacuteleacutecharger le script

Compleacutements

8-5- Diagrammes de Bode dun filtre numeacuterique H(z)

Exemple

Soit un filtre numeacuterique reacutecursif passe-bande dont voici la

fonction de transfert en z

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

gtgt bodenum

Ce script Matlab permet de tracer les diagrammes de

Bode dun filtre numeacuterique

Il neacutecessite le fichier transnumm (fichier de deacutefinition de

la fonction de transfert en z)

Gamme de freacutequences

Fe freacutequence deacutechantillonnage

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence

f min Fe = 0001

f max Fe = 05

Nombre de points = 1000

Figure 1 -gt Diagramme de Bode du gain

Figure 2 -gt Diagramme de Bode du deacutephasage

Figure 3 -gt Amplification en fonction de la freacutequence

Figure 4 -gt Deacutephasage en fonction de la freacutequence