Tout en travaillant sur l'exercice 6.5 de Ch06 dans la méthode D-OA du Dr Middlebrook, j'ai essayé de faire de bon augure tracé de la fonction de transfert:Bode parcelle en J (plan moitié droite zéro, second ordre)
bodeplot [s/100 + 100/s * (1 + 10/s)] (entrée WolframAlpha)
en J
d'une certaine façon le diagramme de phase de code J ne concorde pas avec le résultat de Mathematica, bien l'intrigue de magnitude correspond bien.
Quelque chose ne va pas avec mon code J?
Af =: 4 : 0"_ 0
s=.0j1*y
'w q'=.x
f=.(s%w) + (w%s)*(1+w%q*s)
20*10^. | f
)
Pf =: 4 : 0"_ 0
s=.0j1*y
'w q'=.x
f=.(s%w) + (w%s)*(1+w%q*s)
(180%o.1)* 1{ *. f
)
load 'plot'
plot (; (100 10 Af (10^]))) 0.02*i.200
plot (; (100 10 Pf (10^]))) 0.02*i.200
Pour être plus général, dire une variable complexe sur le cercle unité dans le plan complexe z = cos x + I sin x
Si nous traçons son angle de phase, sera un saut à 180 degrés (de 180 à -180)
z_unit_circle =. ((2 o. ]) + (0j1 * (1 o.]))) @ (180 %~ o.)
plot (180%o.1)*1{"1 *. z_unit_circle i.360
Je pense que c'est ce qui se passe quand l'angle de phase tourne autour de 180 ou -180 dans le tracé précédent de Jode.
Pour éviter ce saut, on peut utiliser la relation Tan (Im (z)/Re (z)) = Tan (-180 + Im (z)/Re (z)), c'est-à-dire tourner -180 avant la main.
phase_angle =. _180 + (180 % o.1) * (_3 o. %~/) @ +.
Pf =: 4 : 0"_ 0
s=.0j1*y
'w q'=.x
f=.(s%w) + (w%s)*(1+w%q*s)
phase_angle f
)
plot (; (100 10 Pf (10^]))) 0.02*i.200
Ceci est essentiellement la même que la réponse fournie par Eelvex.
Cependant, cette phase_angle [z] a plus de sauts que Arg [z]
plot phase_angle"1 z_unit_circle i.360
Alors ma question est de savoir comment faire le tracé de bon augure correct J. En d'autres termes, la connaissance de la angle de phase va du 3ème quadrant en 2ème quadrant, ainsi -180 avant la main