2012-12-19 2 views
3

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

results from wolframalpha

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 

enter image description here

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 

unit circle phase angle

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 

third quadrant

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

Répondre

1
Don't use Arg (*.), use -180 + arctan(Im(T)/Re(T)) 

plot 180-~(180%o.1) * _3 o. %~/"1 +. T 0j1 * (10^3-~0.1*i.80) 

enter image description here

(où T est votre fonction de transfert: T =: 3 : '(y%100) + (100*(1+10%y))%y')

Questions connexes