Академический Документы
Профессиональный Документы
Культура Документы
Calculs et représentations
graphiques
2.1 Introduction
Ce chapitre continue là où la section 1.2 s’était arrêtée. Le chapitre 1 est une introduction
rapide à MATLAB dans laquelle les exemples utilisent des mathématiques simples. Le cha-
pitre 1 ne contient pas d’applications d’ingénierie, et nous supposons que le lecteur sera fami-
liarisé avec les concepts utilisés. Les chapitres 2 à 10 constituent une introduction détaillée
à MATLAB destinée à un public d’ingénieurs. Ils comportent des exemples exclusivement
empruntés à des cas réels d’ingénierie. Certaines des notions mathématiques utilisées sont
rapidement introduites dans la partie principale des chapitres ou sont résumées à la fin des
chapitres correspondants.
89
© 2004 - Pearson Education France
90 CHAPITRE 2 CALCULS ET REPRÉSENTATIONS GRAPHIQUES
Le résultat est un nombre très petit, mais n’est pas exactement zéro. Nous nous conten-
terons pour l’instant d’expliquer ce phénomène par une erreur machine due à l’utilisation
du système binaire, qui nécessite une infinité de bits pour la représentation du nombre 0.2.
Comme l’ordinateur ne peut stocker qu’un nombre limité de bits, il utilise une approximation
du nombre 0.2. Celle-ci multipliée par cinq, cette approximation n’est pas égale à 1. De telles
erreurs restent minimes, mais elles peuvent s’avérer désastreuses si elles s’accumulent dans
les calculs. Ne pas prendre en considération les propriétés des nombres dans un ordinateur
peut provoquer l’échec de très coûteux projets, en envoyant par exemple un vaisseau spatial
sur une mauvaise orbite.
format short, x
x =
124.3200
1. Dans la version française de l’ouvrage, et pour éviter tout risque d’erreurs dû aux plates-formes d’installation de
MATLAB, nous avons conservé la notation anglo-saxonne et donc utilisé des points au lieu des virgules habituelles.
format long, x
x =
1.243200000000000e+002
ou encore
format long e, x
x =
1.243200000000000e+002
Les ordinateurs utilisent la représentation à virgule flottante, et non le système décimal. Ils
utilisent pour la plupart le système binaire. D’autres, comme les calculateurs IBM, utilisent
le système hexadécimal. Le système binaire ne dispose que de deux nombres 0 et 1. Comme
dans le système décimal, la valeur de chaque chiffre dépend de sa position par rapport à
la virgule – qu’il vaudrait mieux appeler point partiel – et utilise les puissances de 2. Par
exemple, la décomposition du nombre binaire 101.101 est
La principale raison d’utiliser des nombres binaires réside dans leur correspondance directe
avec les états marche et arrêt de composants physiques, comme par exemple 1 pour désigner
un circuit fermé et 0 un circuit ouvert, ou alors 1 pour « magnétisé », 0 pour « démagnétisé ».
En résumé, les nombres sont représentés dans l’ordinateur sous la forme σmbe , où σ est
le signe, soit + ou −, m, la partie fractionnaire, ou mantisse, b, la base du système numérique
et e l’exposant. Le nombre de chiffres qui composent m et b dépend des caractéristiques de
la machine.
En 1985, l’Institut des ingénieurs en électricité et électronique – un institut américain
plus connu sous le nom d’ IEEE (Institute of Electrical and Electronics Engineers) – publia
l’IEEE Standard for Binary Floating Point Aritmetic (voir bibliographie, ANSI/IEEE Std
754-1985). Ce standard est entièrement implémenté sur la plupart des ordinateurs et partiel-
lement sur quelques autres. Par exemple, le VAX de DEC est un ordinateur qui n’utilise pas
l’arithmétique de l’IEEE. Dans le standard IEEE double précision, la mantisse est codée sur
53 bits et l’exposant sur 11.
Les deux fonctions MATLAB, realmax et realmin, nous permettent d’obtenir respecti-
vement le plus grand et le plus petit nombre pouvant être manipulé par l’ordinateur. Pour un
ordinateur qui utilise le standard IEEE, le résultat de ces fonctions est
realmax
ans =
1.7977e+308
realmin
ans =
2.2251e-308
La variable MATLAB eps fournit une indication sur la précision en virgule flottante. Par
défaut, elle correspond à la distance entre 1.0 et le plus grand nombre à virgule flottante
suivant. La commande suivante renvoie la valeur de eps
eps
eps =
2.2204e-016
Cette valeur dépend également des caractéristiques de la machine. La valeur de eps peut être
modifiée par l’utilisateur, mais perd, dans ce cas, sa signification initiale décrite précédem-
ment.
A présent, nous pouvons expliquer pourquoi l’ordinateur ne renvoie pas zéro lorsqu’il
soustrait cinq fois 0.2 à 1. La raison réside dans la traduction en binaire de la fraction 0.2 qui
est
0.00110011001100 . . . (2.1)
Cette représentation nécessite une infinité de chiffres. En conséquence, l’ordinateur fonc-
tionne avec une valeur approchée de 0.2. Soustraire cinq fois la valeur approchée de 0.2 à 1
ne peut donc donner exactement 0.
L’utilisation par l’ordinateur des nombres binaires peut mener à d’autres résultats inatten-
dus. D’autres erreurs peuvent être introduites par la conversion d’une représentation binaire
arrondie en une représentation décimale. Convertissons le nombre binaire de l’équation 2.1
en décimal pour illustrer cela
format long
a = 1/2ˆ3 + 1/2ˆ4 + 1/2ˆ7 + 1/2ˆ8 + 1/2ˆ11 + 1/2ˆ12
a =
0.19995117187500
2.4 Arrondi
Les opérations arithmétiques peuvent mener à un résultat comportant de nombreuses déci-
males. Par exemple, pour un cercle de diamètre, d = 1.2866, si l’on utilise l’approximation
π = 3.1416 on obtient un périmètre de
souvent π ≈ 3.14. Les ordinateurs peuvent prendre en compte plus de chiffres, mais toujours
en quantité finie. Par exemple, l’approximation de π donnée par MATLAB au format long est
π ≈ 3.14159265358979
Pour utiliser une approximation avec seulement quatre décimales, nous pouvons éliminer les
chiffres à droite de la quatrième décimale, et ne retenir que 3.1415. Cette technique s’appelle
chopping (coupe) . Elle génère de grosses erreurs qui, accumulées dans une longue séquence
de calcul, peuvent aboutir à des résultats catastrophiquement erronés. Pour minimiser ces
erreurs, la plupart des ordinateurs utilisent l’arrondi au lieu de la coupe, par exemple π =
3.1416 au lieu de 3.1415. Les règles d’arrondi utilisées pour les ordinateurs sont les mêmes
que pour les calculs manuels, la plus simple est la suivante :
Pour arrondir un nombre à n chiffres, ajoutez la moitié de la base, soit b/2, au chiffre
en position (n + 1) et supprimez tous les chiffres à droite de la position n.
Dans le système décimal, la règle de l’arrondi à n chiffres devient : si le chiffre (n + 1)
est strictement inférieur à 5, on conserve le nième chiffre, sinon on l’incrémente.
Voici quelques exemples avec MATLAB
E = pi - 3.1416
E =
-7.3464e-006
L’erreur est en effet plus petite que l’erreur montrée ci-dessus. On utilise ici la définition
Certains auteurs appellent cette erreur l’erreur absolue ; d’autres réservent le qualificatif
absolu à la valeur absolue de l’erreur définie ci-dessus. Il est intéressant de comparer l’erreur,
ou erreur absolue, à la valeur réelle du nombre considéré, en calculant l’erreur relative par
la formule
ou
E/pi
ans =
-2.3384e-006
100*E/pi
ans =
-2.3384e-004
Il est facile de montrer que l’erreur absolue d’une somme ou d’une différence de deux
nombres est au plus égale à la somme des erreurs respectives des deux nombres. Considérons
deux nombres arrondis à n décimales près ; l’erreur absolue de leur somme ou différence est
inférieure à
Avec le format short, les erreurs relatives respectives des deux facteurs sont
E1 = 0.5*10ˆ(-4)/3.1416
E1 =
1.5915e-005
E2 = 0.5*10ˆ(-4)/1.2866
E2 =
3.8862e-005
(E1 + E2)*circum
ans =
2.2141e-004
Il s’ensuit que seuls les trois premiers chiffres du produit sont fiables, les autres doivent
être éliminés. Une erreur particulièrement importante se produit par le mécanisme de l’annu-
lation c’est-à-dire en additionnant deux nombres quasiment égaux, mais de signes différents.
Entrez, par exemple, les nombres suivants
format long e
b = 0.543210987654321*10ˆ2
b =
5.432109876543210e+001
c = -0.543210987650001*10ˆ2
c = -5.432109876500009e+001
d = b + c
d =
4.320028779147833e-010
Le résultat vrai est 4.3199 × 10−10 . Les chiffres communs à b et à c s’annulent entre
eux. Les deux nombres b, c possèdent 16 chiffres significatifs, le résultat seulement 5. Les
chiffres commençant à la cinquième décimale de d sont donc « fabriqués » par l’ordinateur.
La simple analyse suivante montre qu’ils doivent être éliminés. L’erreur maximale attendue
pour les nombres b, c est de 0.5 × 10−15 , et donc de 10−15 pour le résultat. On en conclut
que le chiffre 5, à la cinquième place de la représentation en virgule flottante, ainsi que les
suivants ne sont pas fiables. Les erreurs relatives sont
0.5*10ˆ(-15)/b
ans =
9.2045e-018
0.5*10ˆ(-15)/c
ans =
-9.2045e-018
10ˆ(-15)/d
ans =
2.3148e-006
L’erreur relative du résultat est plus grande que celles des nombres b et c d’un ordre de
grandeur 12.
d = a + b + c
d =
1.234611090411242e-005
e = c + b + a
e =
1.234611090411242e-005
d - e
ans =
2.834290826125505e-015
d = (a + b) + c
d =
1.234611090411242e-005
e = a + (b + c)
e =
1.234611090411242e-005
d - e
ans =
2.834290826125505e-015
d = a*(b + c)
d =
5.333368815145124e-015
e = a*b + a*c
e =
5.333298906673445e-015
d - e
ans =
2.220446049250313e-016
Nous en resterons là pour les erreurs de calculs générés par l’ordinateur. Tout au long
de ce livre, nous indiquerons, si nécessaire, les sources d’erreurs potentielles. Pour appro-
fondir ce sujet, le lecteur peut se référer aux livres traitant d’analyse numérique, comme
par exemple Hartley et Wynn-Evans (1979), Hultquist (1988), Rice (1993) ou Gerald et
Wheatley (1994). Dans les sections précédentes, nous voulions alerter le lecteur sur les fai-
blesses de l’ordinateur et sur les pièges à éviter. Nous conclurons maintenant cette analyse
sur une note rassurante : une programmation prudente produit de bons résultats. Remarquons
aussi que MATLAB – combiné à l’arithmétique IEEE – s’avère beaucoup plus efficace pour
minimiser les erreurs numériques que certains logiciels plus anciens. Nous avons traité avec
MATLAB plusieurs problèmes cités dans les ouvrages d’analyse numérique comme produi-
sant des erreurs machine. MATLAB donne les résultats corrects. Précisons que les résultats
donnés précédemment ont été obtenus avec MATLAB 5.2, sur un PC équipé d’un processeur
Pentium. S’il utilise une autre configuration matérielle, le lecteur peut obtenir des résultats
légèrement différents.
2.7 Vecteurs
Nous avons déjà utilisé la notion de vecteur en tant que segment de ligne orienté. Nous allons
désormais examiner les vecteurs dans le plan. Ainsi, F dans la figure 2.1 représente une
force, un déplacement, une vitesse ou une accélération (en général, nous utiliserons F pour
des forces et d’autres lettres pour des déplacements, vitesses ou accélérations). Les tableaux
peuvent être considérés comme la plus simple représentation de vecteurs. Par exemple, on
peut scinder le vecteur F de la figure 2.1 en deux composantes orthogonales, Fx et Fy .
On peut les définir dans MATLAB sous la forme d’un tableau dont les éléments sont les deux
composantes précédentes
F = [ Fx Fy ]
Comme nous l’avons montré à la Figure 2.2, la somme de deux vecteurs, P = [Px Py ] et
Q = [Qx Qy ], est un vecteur R = [Rx Ry ] tel que
Rx = Px + Q x
Ry = Py + Q y
P = [ 6 2 ];
Q = [ 2.3 5 ] ;
R = P + Q
R =
8.3000 7.0000
Les sommes de vecteurs peuvent avoir une signification physique. Par exemple, lorsque
plusieurs forces agissent en un point d’un corps solide, on peut les remplacer par leur somme,
appelée la résultante. La vitesse réelle d’un avion en vol – c’est-à-dire la vitesse relative au
sol – correspond à la somme de sa vitesse relative à l’air et de la vitesse du vent. D’autres
exemples proviennent de l’ingénierie électrique avec l’utilisation des vecteurs pour représen-
ter les sommes de tensions et d’intensités.
Le résultat obtenu est 10.8577. Si le vecteur est une vitesse, son module a pour valeur la
vitesse. L’angle entre l’horizon et le vecteur F s’obtient par
qui donne 0.7006 radians, c’est-à-dire 40.1434 degrés. Pour retrouver la composante hori-
zontale de R, entrez
R(1)
et observez les résultats. Nous pouvons sans hésiter généraliser aux vecteurs à 3 dimensions
car nous vivons dans un monde tridimensionnel. Le terme vecteur est souvent utilisé pour
décrire des tableaux ; dans ce livre, on l’utilisera parfois de cette manière.
B = [ 7
2
4
6.9
10 ] ;
Des structures de ce type sont utilisées par exemple dans le transfert de mesures provenant
d’un système d’acquisition de données.
En algèbre linéaire, on utilise les tableaux verticaux pour la notation des systèmes
d’équations linéaires (voir chapitre 6). De plus, les tableaux « verticaux » comme B servent
également à représenter les composantes d’autres sortes de vecteurs que ceux mentionnés pré-
cédemment. Considérons tout d’abord un exemple de vecteur ligne ayant toutes ses compo-
santes de même nature. Par exemple, les composantes d’un vecteur de déplacement sont des
déplacements ; celles d’un vecteur vitesse sont des vitesses. Afin d’exploiter pleinement les
possibilités fournies par le calcul vectoriel (et également matriciel, comme nous le verrons
plus tard), il est pratique d’accepter aussi les vecteurs dont les composantes sont de natures
différentes. Ainsi, il devient naturel de considérer la vitesse et l’accélération d’un point
matériel comme les composantes d’un vecteur d’état de ce point
x
_x
où x est la vitesse.
2.9 Tableur
Supposons que nous voulions acheter un ensemble d’objets (voir tableau 2.1). Combien
devons-nous payer ? Ce calcul du prix total représente tout à fait le genre de tâches réalisées
par un tableur. MATLAB peut également le résoudre rapidement. Pour cela, nous devons tout
d’abord définir deux vecteurs
subtotals = price.*quantity
subtotals =
9.0000 3.9800 10.9900 45.7500 2.5800
total = sum(subtotals)
total =
72.3000
tot_quantity = sum(quantity)
tot_quantity =
13
A présent, nous pouvons compléter le tableau 2.1. Le résultat principal correspond au coût
total. Nous l’avons obtenu en combinant deux opérations : un produit vectoriel et la somme
des composantes (fonction sum ). Il est possible d’obtenir le même résultat en une seule étape
total = price*quantity’
total =
72.3000
Ici, nous avons multiplié le vecteur ligne price par la transposée du vecteur quantity,
c’est-à-dire, par un vecteur colonne. Cette opération se nomme un produit scalaire et cor-
respond à
total = 3.00 × 3 + 1.99 × 2 + 10.99 × 1 + 9.15 × 5 + 1.29 × 2
Le produit scalaire a une signification importante en géométrie et en mécanique. Quelques
exemples vous sont donnés dans ce qui suit.
inner_product = A*B’
inner_product = B*A’
pour ceux qui sont familiers de l’algèbre linéaire. Pour les autres, les choses s’éclairciront
après la lecture du prochain chapitre. A titre d’exemple, calculons le produit scalaire de
A = (2, 3), B = (5, 4) ; soit
A · B = 2 × 5 + 3 × 4 = 22 (2.5)
Nous obtenons ce produit en écrivant
A = [ 2 3 ];
B = [ 5 4 ];
A*B’
B*A’
theta = acos(A*B’/(sqrt(A*A’)*(sqrt(B*B’)))
C = [ 2 2 2 ];
D = [ 3 4 5 ];
theta = acos(C*D’/(sqrt(C*C’)*sqrt(D*D’)))
Le résultat est 0.2014 radians, soit 11.5370 degrés. Vérifiez que vous pouvez aussi bien écrire
D*C’ à la place de C*D’. Pouvez-vous trouver d’autres utilisations au produit scalaire ? Que
pourrait être la signification du produit scalaire de vecteurs qui ont plus de trois composantes ?
ex + x = 0
ln x + x = 0
sin x + cos x = 0
Les problèmes d’ingénierie mènent souvent à des équations transcendantales qui échappent
aux solutions analytiques. Parfois, il est même impossible de formuler l’équation, et tout ce
qui peut être fait se limite soit à calculer les points d’une courbe pour faire l’approximation
de son point de passage à la valeur zéro, soit à calculer les points de deux courbes et à
rechercher leur intersection. Les outils MATLAB présentés jusqu’à présent nous permettent
de trouver facilement les solutions graphiques d’équations transcendantales ou de problèmes
qui ne pouvent être définis que numériquement.
Prenons l’exemple d’un problème qui mène à une équation transcendantale, soit le seg-
ment de cercle de la figure 2.4. Etant donné le rayon du cercle, r = OA = OB, et l’angle au
nous calculons l’aire du segment fermé par l’arc ACB et la corde AB par
centre, Φ = AOB,
r2
A= (φ − sin φ) (2.8)
2
Etant donné une aire A et un rayon r, supposons que l’on cherche une méthode générale
pour trouver l’angle φ. Une bonne façon de faire consiste à diviser les deux membres de
l’équation 2.8 par r 2 : les deux côtés n’ont alors plus de dimension.
A φ − sin φ
= (2.9)
r2 2
Pour obtenir graphiquement toutes les solutions de l’équation 2.9, entrez la séquence de
commandes suivante
Ci-dessus, \phi est une commande LATEX qui affiche la lettre grecque φ.
La figure 2.5 nous montre le graphique obtenu. Remarquez que, bien que l’aire des
segments soit une fonction de deux variables, l’utilisation de paramètres non dimension-
nels nous permet de représenter la relation entre A, r et φ par une simple courbe. Si nous
y1 = (Φ − sin Φ)/2
y2 = A/r 2
r = 2 ; A = 0.0472 ;
phi = 0 : pi/360 : pi/4 ;
x = 180*phi/pi ;
y1 = (phi - sin(phi))/2 ;
y2 = A/rˆ2*ones(size(y1)) ;
plot(x, y1, x, y2), grid
xlabel(’Angle at centre, \phi, degrees’)
gtext(’(\phi - sin(\phi))/2’)
Avec la souris (ou les touches de déplacement), déplacez la flèche jusqu’à l’endroit désiré
pour placer l’étiquette et appuyez sur Entrée. Procédez de même pour l’autre courbe avec
gtext(’A/rˆ2’)
[phi0 y0 ] = ginput(1)
phi0 =
29.8669
y0 =
0.0119
Le résultat peut être légèrement différent, il dépend de votre appréciation propre du point
d’intersection. La fonction ginput retourne deux valeurs [ phi0 y0 ]. Vérifiez la solution
par
A0 = y0*rˆ2
A0 =
0.0477
Avec ces valeurs, l’erreur en pourcentage par rapport à la valeur juste, est
2.12 Résumé
Nous pouvons utiliser l’ordinateur comme un calculateur avec les opérateurs listés dans le
tableau 2.2.
Nous allons décrire comment modifier les commandes et les rappeler. Sous UNIX, cer-
taines commandes peuvent être différentes, l’utilisateur devra donc consulter le manuel
approprié. La touche Effacement permet de corriger immédiatement les erreurs lors de la
saisie d’une expression.
Les expressions entrées précédemment peuvent être rappelées par les touches de dépla-
cement Flèche haute ↑ et Flèche basse ↓. Les touches Flèche droite → et Flèche gauche ←
permettent de déplacer le curseur sur la ligne courante. L’éditeur est normalement en mode
insertion, ce qui signifie que le caractère entré s’insère à l’endroit où est positionné le curseur.
Sur les PC, on utilise la touche Insert pour passer du mode insertion au mode écrasement.
Enfin la touche Suppr. efface le caractère à l’endroit où est positionné le curseur.
Il est préférable de donner un nom aux valeurs d’utilisation fréquente. Ce nom devra
commencer par une lettre et pourra comporter autant de chiffres et de lettres que vous le
souhaitez. Seuls les 19 premiers caractères sont significatifs. Si aucun nom n’est attribué à
une expression, son résultat est stocké dans la variable ans, qui peut ainsi être employé pour
le calcul suivant. Le contenu de ans change à chaque nouvelle exécution de commande.
On peut définir un vecteur ligne de dimension n en entrant
vector_name = [ a1 a2 ... an ]
vector_name = [ a1
a2
..
.
an ]
ou par
La transposition est une opération qui transforme un vecteur ligne en un vecteur colonne
et vice versa. Pour calculer la transposée d’un vecteur dans MATLAB, on utilise l’opérateur
apostrophe (’)
[ a1 a2 ... an ]’ = a1
a2
..
.
an
Reportez-vous au chapitre 4 pour la transposition de vecteurs de nombres complexes.
Deux vecteurs, A et B, de mêmes dimensions, peuvent être additionnés (ou soustraits)
en écrivant A+B (ou A-B), et un vecteur A peut être multiplié par un scalaire lambda en
entrant lambda*A. Un vecteur ligne A peut être multiplié par un vecteur colonne B de même
taille : A*B. Le résultat est leur produit scalaire. Le produit élément par élément, A.*B, de
deux vecteurs de même longueur n, est un vecteur de longueur n dont les composantes sont
les produits ai bi des composantes de A et B. Le tableau 2.4 décrit les opérateurs vectoriels
utilisés dans MATLAB.
plot(x, y)
Nous pouvons ajouter une grille, un titre et étiqueter les axes du graphe par les commandes
grid, title(’t’), xlabel(’xl’) et ylabel(’yl’), où t, xl et yl sont des variables
de type chaîne de caractères de votre choix. Les variables de type chaîne de caractères
doivent être placées entre quotes.
2.13 Exemples
Un vecteur peut définir un point, dans le sens où chaque composante représente une coordon-
née de ce point. Ainsi, pour la figure 2.7, nous pouvons écrire
A = [ 2 3 ];
B = [ 4.1 4.5 ] ;
Ce résultat, de valeur numérique 34.6410, est identique à celui de l’équation 2.4. L’angle
entre les deux vecteurs est de 45◦ − 15◦ = 30◦ . Avec MATLAB, nous obtenons ce résultat en
tapant
(180/pi)*acos(A*B’/(sqrt(A*A’)*sqrt(B*B’)))
e1 = [ 1 0 0 ] ;
e2 = [ 0 1 0 ] ;
e3 = [ 0 0 1 ] ;
et
On dit que les trois vecteurs e1, e2, e3 forment une base orthonormale ou orthonormée
d’un espace à trois dimensions. La figure 2.8 donne une interprétation géométrique d’une
telle base.
N’importe quel vecteur A de l’espace à trois dimensions peut être représenté de manière
unique comme la combinaison linéaire des vecteurs de base e1, e2, e3 où le signe ‘+’ signifie
l’addition de vecteurs.
A = a 1 e1 + a 2 e2 + a 3 e3
Le produit scalaire du vecteur A par un vecteur de base ei donne la projection de A selon
la direction de ei . Par exemple, en utilisant la base définie ci-dessus.
A = [ 2 3 4 ];
A*e1’, A*e2’, A*e3’
ans =
2
ans =
3
ans =
4
La généralisation de ces notions à un espace à n dimensions est simple. Cet exemple peut
aider à comprendre la signification des projections géométriques et celle de la transformée
discrète de Fourier.
12
E(X) = Xi p(Xi ) . (2.11)
i=1
X = 2 : 12 ;
p = [ 1 2 3 4 5 6 5 4 3 2 1 ]/36 ;
X*p’
ans =
7
Nous savons que nous devons obtenir un des résultats du vecteur X. Ainsi, la somme
de toutes les probabilités est 1, la probabilité est alors certaine. Essayez sum(p). Il serait
intéressant de tracer la distribution de X. La fonction plot renvoie un graphe continu bien
que X ait une distribution discrète. La fonction bar crée un histogramme dont la hauteur des
t = -2 : 0.05 : 2 ;
omega = 2*pi ;
x1 = cos(omega*t) ;
x2 = -cos(3*omega*t)/3 ;
x3 = cos(5*omega*t)/5 ;
x = 4*(x1 + x2 + x3)/pi ;
plot(t, x), grid
title(’Three-term approximation of the square wave’)
xlabel(’t’)
Après avoir écrit l’expression pour x1, vous pouvez obtenir facilement les deux termes
suivants en utilisant la touche direction (flèche haute) ↑ pour récupérer l’expression précé-
dente et l’éditer. Lancez les commandes et observez la forme, l’amplitude et la période de
l’onde résultante. La figure 2.9 montre le graphe obtenu. Vous pouvez améliorer l’approxi-
mation en ajoutant plus de termes mais à ce stade, cette opération est fastidieuse. Avec
quelques notions de programmation, vous pourrez facilement réaliser ces calculs, en écri-
vant par exemple une boucle FOR, pour utiliser autant de termes que vous le désirez, mais
toujours en nombre fini.
Un autre élément remarquable concerne le graphe qui semble « cassé », car il est constitué
de segments de droites connectant les points calculés. On peut améliorer la résolution en
prenant plus de points, par exemple en utilisant
t = - 2 : 0.01 : 2 ;
Essayez d’autres formes d’onde en utilisant les séries décrites dans divers ouvrages,
comme par exemple Ramirez (1985) ou Spiegel (1968). Pour plus de détails, voir égale-
ment Churchill et Brown (1990). Nous avons traité ici la synthèse d’une fonction périodique ;
le problème inverse, la décomposition d’une fonction périodique en termes trigonométriques
simples, peut également s’étudier avec MATLAB.
D = 139.7 ;
t = 6.3 ;
d = D - 2*t
d =
127.1000
Si nous utilisons le tube comme tuyau, pour déterminer le débit correspondant, nous cal-
culons l’aire de la section interne, en mm2 , par
A = pi*dˆ2/4
A =
1.2688e+04
Si nous nous intéressons au transfert de chaleur à travers la paroi du tuyau, nous avons
besoin de la surface externe, que nous obtenons, en mm2 , en calculant la circonférence exté-
rieure
p = pi*D
p =
438.8805
et en la multipliant par la longueur du tuyau. Si nous utilisons le tuyau comme élément d’une
structure, chargé en tension ou en compression, nous nous intéressons à la surface de section
de la paroi, que nous obtenons, en mm2 , par l’opération suivante
a = pi*(Dˆ2 - dˆ2)/4
a =
2.6403e+03
Pour vérifier les paramètres de sécurité relatifs à la déformation, nous calculons le moment
d’inertie, en mm4 , par
I = pi*(Dˆ4 - dˆ4)/64
I =
5.8862e+06
Z = 2*I/D
Z =
8.4269e+04
m = (a/1000)*7.85
m =
20.7260
mass = [ 35 65 45 75 ] ;
distance = [ 400 580 800 1000 ] ;
Le produit du tableau ci-dessous donne le vecteur de moments par rapport aux axes de
référence de la figure
moments = mass.*distance
avec les éléments 14 000 ; 37 700 ; 36 000 ; 75 000. Le produit scalaire permet d’obtenir le
moment total
t_moment = mass*distance’
de résultat 162 700 kg mm. La masse totale s’obtient à l’aide de la fonction sum
M = sum(mass)
soit 220 kg. Le centre de gravité du système de la figure 2.11 correspond, par définition, au
point de concentration de la masse totale M, de moment égal à la somme des moments des
masses données, soit
cg = t_moment/M
ce qui donne 739.5455 mm. Nous aurions obtenu le même résultat directement avec
cg = mass*distance’/sum(mass)
ou
cg = distance*mass’/sum(mass)
pV χ = cad
Figure 2.12 – Une porte fermée par un cylindre pneumatique. (a) Porte fermée ; (b) porte ouverte.
Si nous appliquons ces notions à notre exemple, nous pouvons établir la relation suivante
entre le nouveau volume V et la pression p, et les valeurs initiales, V0 et p0
pV χ = p0 V0χ
et
χ
l0
p = p0
l0 − c
Le moment « d’ouverture » correspond à
MO = Fa cos α
et le moment « redresseur » à
MR = Apb
Au point d’équilibre statique, les moments d’ouverture et redresseur sont égaux. Ce phéno-
mène se produit quand l’équation suivante est satisfaite
χ
l0
Fa cos α = bAp0 (2.13)
l0 − b tan α
Cette équation en α peut paraître plutôt décourageante. Cependant, elle peut être résolue
assez facilement. Pour le démontrer, prenons les valeurs suivantes
Nous traçons à présent séparément les courbes des moments d’ouverture et redresseur
Ci-dessus, nous avons utilisé deux commandes MATLAB introduites dans la version 5.2.
Nous avons assigné à la variable h le handle de l’objet graphique produit par la commande
plot. Nous utilisons ce handle comme premier argument de la commande legend. Les autres
arguments représentent des chaînes de caractères identifiants des diverses courbes du tracé.
Passées en arguments, elles apparaissent dans le même ordre de courbes que dans la com-
mande plot.
La figure 2.13 montre les deux courbes produites par les commandes ci-dessus.
L’angle d’équilibre se trouve à l’intersection des deux courbes. Nous pouvons le lire soit
directement sur le graphe, soit en utilisant la fonction ginput (voir section 2.11). Nous de-
vons également vérifier la pression à l’équilibre, en réalisant un deuxième tracé
La figure 2.14 montre la coupe transversale d’un bateau. Afin d’orienter le dessin, sup-
posons que nous regardions de la poupe vers la proue. W0 L0 représente la ligne de flottaison
en condition verticale. La projection du centre de gravité sur le plan transversal donné est G,
et celle du centre du volume de coque submergée est B. La résultante des pressions hydro-
statiques passe par B ; ce point est appelé centre de carène. K est un point de référence au
milieu de la quille.
Supposons maintenant que le bateau gîte à tribord d’un angle φ. Pour éviter de redessi-
ner le bateau incliné d’un angle φ, on considère le bateau comme fixe, et la nouvelle ligne
de flottaison Wφ Lφ est dessinée avec un angle d’inclinaison de φ à bâbord. Le poids du
navire, W , agit en G verticalement, soit perpendiculairement à la ligne de flottaison Wφ Lφ .
Puisque le poids du bateau est invariant, une partie du volume submergé émerge à bâbord –
c’est-à-dire à gauche – tandis que le même volume submerge à tribord – c’est-à-dire à droite.
Il en découle un déplacement du centre de carène vers la droite en un nouveau point Bφ .
La poussée ∆, traverse verticalement Bφ et coupe perpendiculairement la ligne de flottai-
son Wφ Lφ . D’après le principe d’Archimède
W =∆ (2.14)
on utilise le mot déplacement pour désigner leur valeur commune. Les deux forces W et ∆
forment un couple dont le bras de levier est GZ, la longueur de la perpendiculaire extraite
de G sur la ligne d’action ∆. Le moment ∆ · GZ est le couple de stabilité. Si le navire est
stable, le moment redressant renvoie le vaisseau à son état initial, c’est-à-dire en condition
verticale. GZ s’appelle le bras de levier du couple de redressement.
La distance de K à la ligne d’action de la poussée se mesure par w, une fonction du
déplacement ∆ et de l’angle de gîte φ. Le bras de redressement est calculé par
GZ = w − KG · sin φ (2.15)
MH = FW (2.17)
La position d’équilibre statique sous le vent est celle pour laquelle le couple de redressement
égale le couple d’inclinement, soit
MH = ∆ · GZ (2.18)
En divisant les deux parties de l’équation 2.18 par ∆, on en déduit qu’il faut comparer
le bras de redressement GZ avec le bras du couple inclinant MH /∆. Si l’on combine ce
résultat avec les équations 2.16 et 2.17, on peut calculer le bras de gîte kw , par
Supposons maintenant que nous voulions tracer la courbe de stabilité statique, pour
inclure la courbe du vent gîtant extrait d’un vent de 70 noeuds, et trouver l’angle d’équilibre
statique dans ces conditions. On commence en saisissant les caractéristiques définies
heel = pi*phi/180 ;
GZ = w - KG*sin(heel) ;
Le schéma 2.15 nous montre le résultat. L’angle d’équilibre statique est approximative-
ment de 12,2 degrés.
Essayez l’affichage. Remarquez que l’on note souvent la résistivité en Ωm. Dans cette
unité, la limite haute de la résistivité du cuivre est
2
Ωmm2 m
0.0178 × 10−3 = 1.78 × 10−8 Ωm
m mm
diary resist.dia
V = 12 ; % V
RL = 25 ; % ohm
l = 2*100 ; % m
rho = 0.0178 ; % ohm.mmˆ2/m
d = 1; % mm
A = pi*dˆ2/4 % mmˆ2
A =
0.7854
et la résistance
R = rho*l/A % ohm
R =
4.5327
RT = RL + R % ohm
RT =
29.5327
et l’intensité
I = V/RT % A
I =
0.4063
Vc = R*I % V
Vc =
1.8418
i = I0 (e40v − 1) (2.22)
où I0 est une constante nommée courant inverse de saturation, pour de faibles valeurs
négatives de v, i ≈ −I0 . L’équation 2.22 est non linéaire ; elle est valable pour des valeurs de
tensions supérieures à une valeur négative connue sous le nom de claquage sous polarisation
inverse ou claquage inverse (voir par exemple, Carlson et Gisser 1990). Etant donnée la
valeur de I0 , nous pouvons utiliser MATLAB pour visualiser la courbe i − v de la diode.
En supposant I0 = 10−6 mA, valeur donnée par les auteurs précédemment mentionnés. Nous
entrons
I0 = 1.0E-6 ;
v = -0.05 : 0.005 : 0.05 ;
i = I0*(exp(40*v) - 1) ;
plot(v, i), grid
title(’Characteristic of semiconductor diode’)
xlabel(’Voltage v, V’), ylabel(’Current i, mA’)
La figure 2.18 nous montre le résultat. Nous obtenons ainsi la courbe caractéristique de
la diode à semi-conducteur dans un étroit domaine de tension et nous pouvons voir que pour
toute tension négative, une intensité négative très faible circulera, alors que pour des tensions
positives, l’intensité sera positive et augmentera rapidement avec v. L’image change si nous
traçons la courbe dans un plus large domaine de tension, par exemple, pour
et également pour
Renouvelez les tracés avec les vecteurs v ci-dessus et vous verrez que la diode est pra-
tiquement en arrêt (off ) pour des valeurs de tension négatives, et en marche (on) pour des
valeurs positives. La diode agit comme un redresseur.
Afin de calculer les valeurs actuelles de tension et d’intensité du circuit, c’est-à-dire le
point de fonctionnement, nous devons considérer la résistance du circuit, en écrivant une
seconde équation basée sur la loi de Kirchhoff
Ri = Vs − v (2.23)
Nous disposons à présent de deux équations à deux inconnues, i et v, et nous devons trou-
ver un couple de valeurs i, v qui les satisfont toutes les deux. Il y a quelques années, de
tels calculs n’étaient pas considérés comme une tâche aisée. Dans un ouvrage récent paru en
1981, nous pouvons lire que, « analyser ne serait-ce qu’un simple circuit avec une vraie diode
(ou un autre élément non linéaire), est un problème complexe ». Les auteurs recommandent
d’approcher la diode réelle par une diode idéale. Cette méthode produit effectivement des
résultats moins précis, mais nettement plus rapides. Aujourd’hui, avec des logiciels comme
MATLAB, trouver la solution exacte devient plus simple que d’utiliser des modèles appro-
chés. Ainsi, pour une solution exacte, nous pouvons combiner les équations 2.22 et 2.23 afin
d’obtenir une équation non linéaire simple que des techniques numériques permettent de ré-
soudre. Pour l’instant, nous allons décrire une solution graphique légèrement moins précise,
mais plus facile à comprendre. Nous allons tracer les lignes définies par les équations 2.22
et 2.23, et chercher leur intersection qui correspondra au point de fonctionnement. Les valeurs
de i et v lues sur la courbe satisfont les deux équations. Pour notre exemple, nous utilisons
les valeurs que donnent Carlson et Gisser (1990)
Vs = 10 ; R = 2000 ;
Ensuite, grâce aux commandes suivantes, nous obtenons le graphe de la figure 2.19
Dans la partie droite de l’expression de vr, les deux tensions Vs et vr sont exprimées
en V , et la résistance R en Ω. Ainsi
(Vs - vr)/R
retourne une valeur d’intensité en A. Nous convertissons ce résultat en mA, unité utilisée dans
l’expression de l’intensité i, en le multipliant par 1000.
[ v i ] = ginput(1)
Une flèche ou une croix apparaîtra à l’écran, vous pourrez la déplacer soit avec les touches
de direction, soit à l’aide de la souris. Placez la flèche aussi précisément que possible sur
l’intersection et cliquez sur la souris, ou appuyez sur Entrée. Les valeurs cherchées s’affi-
cheront alors à l’écran.
Pour une bonne résolution graphique, le graphe doit couvrir un intervalle aussi petit que
possible, mais doit inclure le point de fonctionnement. Cela requiert une connaissance a priori
de l’intervalle qui contient la solution. Une personne débutante pourra trouver le bon inter-
valle à force d’essais et d’erreurs, alors que l’estimation de l’utilisateur expérimenté se basera
essentiellement sur son expérience pratique.
Si on remplace la source continue par une source alternative, il devient possible de dé-
montrer la fonction de redressement de la diode. Par exemple,
un tel graphique s’avèrerait fastidieux ; il nous faut donc écrire un programme pour le réa-
liser. Cependant, pour avoir une idée de ce qui se passe, nous pouvons négliger l’effet de la
résistance R et tracer l’intensité redressée par
t = 0 : 0.0001 : 0.05 ;
v = 0.4*sin(2*pi*50*t) ;
i = I0*(exp(40*v) - 1) ;
plot(t, i), grid
title(’The diode as a half-wave rectifier’)
xlabel(’Time, s’), ylabel(’Current, mA’)
MATLAB 7 offre une autre manière de lire les données sur le graphique. Cliquez sur
la dixième icône en partant de la gauche de la barre d’outils dont le ballon d’aide indique
Data cursor. Puis cliquez sur le point du graphique qui vous intéresse. Un petit cadre qui
contient les coordonnées en x-y du point apparaît alors (voir figure 2.21). Cependant, alors
que la fonction ginput permet d’importer les coordonnées dans l’espace de travail, ce n’est
pas possible avec Data cursor.
Figure 2.21 – Utilisation de Data cursor pour récupérer les valeurs des coordonnées.
2.14 Exercices
Les solutions des exercices 2.3, 2.4, 2.6, 2.9 et 2.11 se trouvent à la fin de l’ouvrage.
x = A cos t (2.25)
y = B sin t (2.26)
où 0 ≤ t ≤ 2π.
Tracez une ellipse, par exemple avec A = 2, B = 1, et essayez de comprendre le sens de A
et B. Essayez avec d’autres courbes, par exemple avec celles de Spiegel (1968).
x1 = A sin ω1 t
x2 = A sin ω2 t
En additionnant ces deux ondes et en utilisant une formule trigonométrique qui transforme
une somme de deux sinus en un produit (voir Spiegel 1968), on peut écrire
(ω1 − ω2 )t (ω1 + ω2 )t
x = A sin ω1 t + A sin ω2 t = 2A cos sin (2.28)
2 2
Le résultat représente une onde de fréquence angulaire (ω1 + ω2 )/2 et d’amplitude variant
avec une fréquence angulaire (ω1 −ω2 )/2 (voir De Facia 1992). Générez les deux ondes suivantes
à titre d’exercice
x1 = sin 2πt
x2 = sin 2.2πt
et simulez leur superposition. Identifiez les deux fréquences prédites par l’équation 2.28 ainsi
que l’amplitude maximale. Choisissez le vecteur t de manière à pouvoir visualiser au moins
deux périodes de l’enveloppe.
Instrument Echelle
◦
Thermomètre 0–1000 C
Baromètre 0–1000 mm Hg
Ampèremètre 0–1000 mA
Voltmètre 0–1000 V
Si l’instrument appartient avec certitude à la classe 3%, l’erreur maximale envisageable est
±3% pour la gamme de mesure, c’est-à-dire dans notre cas ±30. Ainsi, une valeur indiquée
de 1000 correspond en fait à une valeur comprise entre 970 et 1030. Si l’instrument de mesure
indique 500, la valeur réelle peut se trouver n’importe où entre 470 et 530. L’erreur relative cor-
respondante est égale à 30 × 100/500 = 6. Ce calcul simple montre que la gamme de mesure de
l’instrument ne devrait pas être beaucoup plus étendue que celles des valeurs à mesurer. D’après
l’une des méthodes empiriques les plus utilisées pour éviter d’importantes erreurs relatives et
celles dues à la surcharge, la valeur à mesurer doit se situer dans un intervalle compris entre 1/2
et 2/3 de la gamme de mesure totale.
Afin d’illustrer ces considérations, continuez l’exemple de l’instrument à 3% ayant une
gamme de mesure égale à 1000 et effectuez les opérations suivantes :
1. Calculez et affichez le pourcentage d’erreur pour des valeurs mesurées de 100, 200, . . ., 1000.
2. Tracez le pourcentage d’erreur, en fonction des valeurs mesurées, dans l’intervalle 0-1000.
Pour le tracé, utilisez des intervalles plus faibles qu’en (1), par exemple 10.
Lues Standard
0.500 0
0.633 1
0.767 2
1.167 5
1.833 10
2.500 15
Construisez une courbe de calibration en tracant les valeurs lues en fonction des valeurs
standard (c’est-à-dire les valeurs réelles). Utilisez alors ce diagramme pour déterminer la valeur
réelle correspondant à une lecture de 1.5.
(b) Comme indiqué à la figure 2.23(b), en navigation, il est naturel d’exprimer les directions sous
la forme d’angles en degrés par rapport au méridien, mesurés dans le sens des aiguilles d’une
montre. Calculez la trajectoire réelle du vol de l’avion en tenant compte de cette convention.
(c) Comment l’avion devrait-il modifier sa trajectoire afin de continuer son vol vers l’est ? Nom-
mez Tc le vecteur vitesse corrigée et exprimez la direction en fonction de la convention de la
figure 2.23(b).
(d) Calculez le vecteur Tc et vérifiez vos résultats en additionnant les vecteurs Tc et A.
A titre d’exemple, considérez, à la figure 2.26, une force F de composante horizontale 2N, et
de composante verticale 3N. Cette force agit selon des chemins directs du point A, de coordon-
nées (1.5, 1) m, en passant par les points B, de coordonnées (3.5, 1.5) m et C, de coordonnées
(6.5, 3.5) m jusqu’au point D de coordonnées (11.5, 3.5) m. Pour calculer le travail avec MAT-
LAB, nous commençons par définir la force et les coordonnées des quatre points
F = [ 2, 3 ] ;
A = [ 1.5 1 ] ; B = [ 3.5 1.5 ] ;
C = [ 6.5 3.5 ] ; D = [ 11.5 3.5 ] ;
soit, 27.5 Nm. Le même travail est produit si la force F agit selon le chemin reliant directement
AàD
P = D - A ; W = F*P’
W =
27.5000
On considère à présent une force également inclinée selon les trois plans de coordonnées xOy,
yOz et zOx, définie par F = (2, 2, 2) en newtons. Supposons que cette force déplace un corps de
l’origine O(0, 0, 0) au point P(2, 3, 5), de coordonnées exprimées en mètres – voir figure 2.27(a)
– et suive l’un de ces trois chemins :
1. directement à partir de l’origine O jusqu’au point P, soit selon le chemin représenté par le
vecteur (2, 3, 5) (figure 2.27(b)) ;
2. le long de l’axe Ox, soit le chemin (2, 0, 0), puis parallèle à l’axe Oy, soit parallèle au vecteur
(0, 3, 0), et enfin parallèle à l’axe Oz, soit parallèle au vecteur (0, 0, 5) (figure 2.27(c)) ;
3. de l’origine au point P1 (4, 6, 6) et jusqu’au point P (figure 2.27(d)).
Calculez avec MATLAB le travail produit dans chacun des trois cas et montrez que le résultat
est identique.
t = 0 : 0.01 : 1 ;
x = sin(2*pi*t + pi/2) ; y = sin(2*pi*t) ;
plot(x, y), axis(’square’)
y = A sin ωA t
alimente les plaques de déviation verticale d’un oscilloscope. Supposons également que l’utili-
sateur essaie plusieurs signaux connus sur les plaques de déviation horizontale jusqu’à s’arrêter
sur le signal
x = A sin 2ωA t
Remarquez que, durant un cycle de y, x exécute deux cycles. Cela signifie que, lorsque y
atteint une fois les déviations verticales maximale et minimale, x atteint les déviations horizon-
tales maximale et minimale deux fois. La figure 2.32 représente le résultat de l’affichage de
l’oscilloscope.
Au lieu d’un oscilloscope, on peut utiliser MATLAB pour analyser un signal obtenu par un
système d’acquisition de données.
Pour ce faire :
1. Convertissez le signal échantillonné en un vecteur nommé, par exemple y. Ce travail peut
s’effectuer en éditant le fichier des valeurs mesurées.
2. Générez un vecteur des valeurs d’un signal sinusoïdal et nommez-le, par exemple x.
3. Tracez y en fonction de x.
4. Si le schéma tracé ne mène pas à l’information désirée, répétez les étapes 2 et 3 avec un autre
multiple de ωA .
La règle permettant de comparer les fréquences de deux signaux de même phase est la sui-
vante :
Soit ωx et ωy les fréquences angulaires du signal alimentant respectivement les plaques de
déviation horizontale et verticale. Soit nh le nombre de minima horizontaux – c’est-à-dire
le nombre de fois où la figure est tangentielle sur la gauche de la droite verticale – et nv le
nombre de maxima verticaux – c’est-à-dire, le nombre de fois où la figure est tangentielle au
dessus de la ligne horizontale. Alors, le rapport des fréquences est égal à
Si la figure de Lissajous est ouverte à une extrémité, comme dans la figure 2.33, ajoutez
seulement 0.5 à nh ou à nv .
Par exemple, à la figure 2.33, la figure de Lissajous est 0.5 fois tangentielle au-dessus de la
droite horizontale, et 3.5 fois tangentielle à gauche de la droite verticale. Cela mène au rapport
de fréquence 0.5 :3.5, ou 1 :7.
yM = A (2.34)
yI = A sin(φy − φx ) (2.35)
yI A sin(φy − φx )
= (2.36)
yM A
D’après l’équation 2.36, on peut en conclure que la différence de phase est
yI
φy − φx = arcsin (2.37)
yM
Bien sûr, si yI correspond à la distance entre deux jonctions de l’axe y, et yM à la distance
entre les valeurs minimale et maximale de y (soit ymax − ymin ), le résultat obtenu restera le même.
x = sin ωt
y = sin(ωt + φ)
où φ = π/4.
I1 I2
sin φ =
V1 V2
qui donne φ ≈ π/4. La valeur exacte est π/4.
Construisez les graphes à partir des différences de phase de 0◦ , 45◦ , 90◦ et 135◦ , et vérifiez
que l’équation 2.37 reste valable dans tous les cas. Vérifiez également que l’équation donne le
même résultat pour 180◦ et pour 0◦ , pour 225◦ et 45◦ , pour 270◦ et 90◦ , pour 315◦ et 135◦ .
Il existe des méthodes pour résoudre cette ambiguïté qui ne seront pas abordées dans cet
ouvrage.
1
∞
nt nt
f (t) = a0 + an cos 2π + bn sin 2π (2.39)
2 n=1
T T