Diagramme de Black-Nichols
Automatique des systèmes continus

Logo JDoTec

  TD Informatique - Réf:85019 - MàJ:11-03-2010

Éléments de corrigé

Initialisation

Chargement des bibliothèques utiles

restart:
with(plots):

Valeur des constantes

deg:=Pi/180;

[Maple Math]

Le nombre complexe u en coordonnées polaires

u:=evalc(polar(r,theta));

[Maple Math]

Le nombre complexe [Maple Math]

h:=u/(1+u);

[Maple Math]

Les deux listes de valeurs souhaitées pour les isogains, en décibel :

vg1:=[ 0.25, 0.5, 1, 2, 2.3, 3, 4, 5, 6, 8, 10, 12];
vg2:=[-0.25,-0.5,-1,-2,-3,-4,-5,-6,-8,-10,-12,-16,-20,-25,-30];

[Maple Math]

[Maple Math]

Recherche des isogains

Expression du module du nombre complexe h en fonction de r et de θ

G:=simplify(evalc(abs(h)));

[Maple Math]

Le plan de Black comporte la phase en abscisse et le gain en ordonnée. Il s'agit de trouver une fonction θ=f(r) pour une valeur de G donnée

sol:=solve(G=m,r);

[Maple Math]

A la vue du dénominateur, la solution pour m=1 mérite une attention particulière

solm1:=solve(G=1,r);

[Maple Math]

On trace dans un premier temps les expressions trouvées pour des valeurs particulières du module sans se préoccuper de la conversion des ordonnées, et ce pour chacun des trois cas à envisager

Cas où m = 1

Le tracé ne pose aucun souci particulier

plot(
 solm1
,theta=-2*Pi..0
,y=-5..5
,thickness=2
,color=aquamarine
);

[Maple Plot]

On convertit les abscisses en degré et les ordonnées en décibel : toutes les valeurs négatives sont automatiquement éliminées

plot(
 20*log10(subs(theta=theta*deg,solm1))
,theta=-360..0
,y=-10..10
,thickness=2
,color=aquamarine
);

[Maple Plot]

On mémorise cette courbe dans une variable

c1:=plot(
 20*log10(subs(theta=theta*deg,solm1))
,theta=-360..0
#,y=-10..10
,thickness=1
,color=aquamarine
):;

 

Cas où m < 1

On commence par une valeur particulière, par exemple m =.5

plot(
 subs(m=.5,[sol[1],sol[2]])
,theta = -2*Pi..0
,color = [blue,aquamarine]
,thickness = 2
);

[Maple Plot]

On constate que seule l'expression sol[2] admet des valeurs positives et est à conserver, et on trace l'ensemble des courbes en trois étapes :

Tout d'abord, on substitue à [Maple Math] l'expression [Maple Math] pour exprimer les abscisses en degré

s2:=subs(theta=theta*deg,sol[2]);

[Maple Math]

Ensuite, on convertit en module les valeurs de la liste souhaitée pour les isogains

vm2:=[evalf(seq(10^(x/20),x=vg2))];

[Maple Math]
[Maple Math]

Enfin, on trace l'ensemble des courbes demandées en convertissant les ordonnées en décibel

plot(
 [seq(20*log10(s2),m=vm2)]
,theta = -360..0
,color = [aquamarine]
,thickness = 2
);

[Maple Plot]

Ce jeu de courbes peut être affecté à une variable

c2:=plot(
 [seq(20*log10(s2),m=vm2)]
,theta = -360..0
,color = [aquamarine]
,thickness = 1
):

Cas où m > 1

On recommence avec par exemple m=2

plot(
 subs(m=2,[sol[1],sol[2],1])
,theta = -2*Pi..0
,color = [blue,aquamarine,gray]
,thickness = 2
);

[Maple Plot]

On constate que les deux expressions admettent des valeurs positives et sont à conserver, et qu'il va falloir définir les abscisses des points de raccordement des deux morceaux à tracer autour du point critique

alpha:=solve(sol[1]=sol[2],theta);

[Maple Math]

La première valeur α[1] permet de construire l'intervale autour de -π

plot(
 subs(m=2,[sol[1],sol[2],1])
,subs(m=2,theta = -Pi-alpha[1]..-Pi+alpha[1])
,y = 0..2
,color = [blue,aquamarine,gray]
,thickness = 2
);

[Maple Plot]

On mémorise l'expression α[1] que l'on convertit en degré

ad:=alpha[1]/deg;

[Maple Math]

On substitue également pour sol[1] l'expression [Maple Math] à [Maple Math] pour exprimer les abscisses en degré

s1:=subs(theta=theta*deg,sol[1]);

[Maple Math]

On convertit en module les valeurs de la liste souhaitée pour les isogains

vm1:=[evalf(seq(10^(x/20),x=vg1))];

[Maple Math]
[Maple Math]

Enfin, on construit en séquence le jeu de courbes que l'on affecte à une variable

c3:=seq(
plot(
 [20*log10(s1),20*log10(s2)]
,theta = -180-ad..-180+ad
,color = [aquamarine]
,thickness = 1
)
,m=vm1):;

On met en évidence l'isomodule à 2,3dB

c23:=plot(
 subs(m=vm1[5],[20*log10(s1),20*log10(s2)])
,subs(m=vm1[5],theta = -180-ad..-180+ad)
,color = [blue]
,thickness = 2
):;

Bilan

On ajoute la verticale passant par le point critique

dv:=plot(
 [[-180,-50],[-180,+50]]
,thickness=1
,color=black
):

On affiche simultanément l'ensemble des courbes produites

display(
 [c1,c2,c23,c3,dv]
,title=`Tracé des isomodules`
,view=[-360..0,-22..32]
,TEXT([-90,-19],`http://www.jdotec.net`,ALIGNABOVE,FONT(COURIER,10))
);

[Maple Plot]

 


- 1743 -