Contenu principal

damp

Fréquence naturelle et amortissement

Description

damp(sys) affiche l’amortissement, la fréquence naturelle et la constante de temps des pôles du modèle linéaire sys. Pour un modèle en temps discret, la table inclut également l’amplitude de chaque pôle. Les pôles sont triés dans l’ordre croissant des valeurs de fréquence.

exemple

[wn,zeta] = damp(sys) renvoie les fréquences naturelles wn et les amortissements zeta des pôles de sys.

exemple

[wn,zeta,p] = damp(sys) renvoie également les pôles p de sys.

exemple

___ = damp(___,Name=Value) calcule l’amortissement et la fréquence naturelle d’un sous-ensemble de pôles du modèle parcimonieux sys sur la base d’un ou plusieurs arguments nom-valeur spécifiés. Si vous ne spécifiez aucun argument nom-valeur, la fonction calcule l’amortissement et la fréquence naturelle pour, au maximum, les 1 000 premiers pôles avec la plus petite amplitude. Elle ignore les arguments nom-valeur lorsque sys est un modèle non parcimonieux. (depuis R2025a)

exemple

Exemples

réduire tout

Pour les besoins de cet exemple, considérons la fonction de transfert en temps continu suivante :

sys(s)=2s2+5s+1s3+2s-3.

Créez la fonction de transfert en temps continu.

sys = tf([2,5,1],[1,0,2,-3]);

Affichez les fréquences naturelles, les amortissements, les constantes de temps et les pôles de sys.

damp(sys)
                                                                       
         Pole              Damping       Frequency      Time Constant  
                                       (rad/seconds)      (seconds)    
                                                                       
  1.00e+00                -1.00e+00       1.00e+00        -1.00e+00    
 -5.00e-01 + 1.66e+00i     2.89e-01       1.73e+00         2.00e+00    
 -5.00e-01 - 1.66e+00i     2.89e-01       1.73e+00         2.00e+00    

Les pôles de sys contiennent un pôle instable et une paire de conjugués complexes situés dans la moitié gauche du plan s. L’amortissement correspondant du pôle instable est égal à -1. On l’appelle force motrice et non force d’amortissement, car il augmente les oscillations du système et le rend instable.

Pour les besoins de cet exemple, considérons la fonction de transfert en temps discret suivante avec un pas d’échantillonnage de 0,01 s :

sys(z)=5z2+3z+1z3+6z2+4z+4.

Créez la fonction de transfert en temps discret.

sys = tf([5 3 1],[1 6 4 4],0.01)
sys =
 
     5 z^2 + 3 z + 1
  ---------------------
  z^3 + 6 z^2 + 4 z + 4
 
Sample time: 0.01 seconds
Discrete-time transfer function.
Model Properties

Affichez des informations sur les pôles de sys avec la commande damp.

damp(sys)
                                                                                    
         Pole             Magnitude     Damping       Frequency      Time Constant  
                                                    (rad/seconds)      (seconds)    
                                                                                    
 -3.02e-01 + 8.06e-01i     8.61e-01     7.74e-02       1.93e+02         6.68e-02    
 -3.02e-01 - 8.06e-01i     8.61e-01     7.74e-02       1.93e+02         6.68e-02    
 -5.40e+00                 5.40e+00    -4.73e-01       3.57e+02        -5.93e-03    

La colonne Magnitude affiche les amplitudes des pôles en temps discret. Les colonnes Damping, Frequency et Time Constant affichent les valeurs calculées avec les pôles en temps continu équivalents.

Pour les besoins de cet exemple, créez un modèle zéro-pôle-gain en temps discret avec deux sorties et une entrée. Utilisez un pas d’échantillonnage de 0,1 s.

sys = zpk({0;-0.5},{0.3;[0.1+1i,0.1-1i]},[1;2],0.1)
sys =
 
  From input to output...
          z
   1:  -------
       (z-0.3)
 
            2 (z+0.5)
   2:  -------------------
       (z^2 - 0.2z + 1.01)
 
Sample time: 0.1 seconds
Discrete-time zero/pole/gain model.
Model Properties

Calculez la fréquence naturelle et l’amortissement du modèle zéro-pôle-gain sys.

[wn,zeta] = damp(sys)
wn = 3×1

   12.0397
   14.7114
   14.7114

zeta = 3×1

    1.0000
   -0.0034
   -0.0034

Chaque entrée de wn et de zeta correspond au nombre combiné d’E/S de sys. Les éléments de zeta sont triés dans l’ordre croissant des valeurs de fréquence naturelle de wn.

Pour les besoins de cet exemple, calculez les fréquences naturelles, l’amortissement et les pôles du modèle de représentation d’état suivant :

A=[-2-11-2],B=[112-1],C=[10],D=[01].

Créez le modèle de représentation d’état au moyen des matrices de représentation d’état.

A = [-2 -1;1 -2];
B = [1 1;2 -1];
C = [1 0];
D = [0 1];
sys = ss(A,B,C,D);

Utilisez damp pour calculer les fréquences naturelles, l’amortissement et les pôles de sys.

[wn,zeta,p] = damp(sys)
wn = 2×1

    2.2361
    2.2361

zeta = 2×1

    0.8944
    0.8944

p = 2×1 complex

  -2.0000 + 1.0000i
  -2.0000 - 1.0000i

Les pôles de sys sont des conjugués complexes situés dans la moitié gauche du plan s. L’amortissement correspondant est inférieur à 1. Par conséquent, sys est un système sous-amorti.

Depuis R2025a

Pour les besoins de cet exemple, calculez les fréquences naturelles, l’amortissement et les pôles du modèle de représentation d’état parcimonieux d’un filtre optique. Pour les modèles de représentation d’état parcimonieux, il est possible de déterminer l’amortissement d’un sous-ensemble de pôles calculés dans une plage de fréquences d’intérêt.

Chargez le modèle.

load sparseFilter.mat
size(sys)
Sparse state-space model with 5 outputs, 1 inputs, and 1668 states.

Les modèles parcimonieux sont souvent à grande échelle, si bien que le calcul de tous les pôles peut être impossible ou coûteux. Par défaut, la fonction damp calcule jusqu’aux 1 000 premiers pôles avec la plus petite amplitude.

[wn,zeta,p] = damp(sys);
size(p)
ans = 1×2

        1000           1

Pour éviter le calcul d’un grand nombre de pôles, vous pouvez spécifier des options supplémentaires telles qu’une plage de fréquences d’intérêt. En général, vous spécifiez une bande basse fréquence et la fonction ne calcule que les pôles à fréquence naturelle dans cette plage.

damp(sys,Focus=[10 1000]);
                                                           
   Pole        Damping       Frequency      Time Constant  
                           (rad/seconds)      (seconds)    
                                                           
 -3.76e+01     1.00e+00       3.76e+01         2.66e-02    
 -7.78e+02     1.00e+00       7.78e+02         1.29e-03    
 -7.92e+02     1.00e+00       7.92e+02         1.26e-03    

Arguments d'entrée

réduire tout

Système dynamique linéaire, spécifié en tant que modèle de système dynamique SISO ou MIMO. Parmi les systèmes dynamiques que vous pouvez utiliser, citons :

  • Modèles LTI numériques en temps continu ou discret, tels que les modèles tf, zpk ou ss.

  • Modèles LTI généralisés ou incertains tels que les modèles genss ou uss (Robust Control Toolbox). (Pour pouvoir utiliser les modèles incertains, la Robust Control Toolbox™ est nécessaire.)

    damp suppose

    • les valeurs actuelles des composants réglables pour les blocs de design de systèmes de contrôle réglables.

    • les valeurs de modèle nominales pour les blocs de design de systèmes de contrôle incertains.

Si sys est un modèle de représentation d’état parcimonieux (sparss ou mechss), le logiciel calcule l’amortissement et la fréquence naturelle d’un sous-ensemble de pôles dans une bande de fréquence de focus spécifié. Pour les modèles parcimonieux, utilisez les arguments nom-valeur pour spécifier les options de calcul. Si vous ne spécifiez aucune option, le logiciel calcule jusqu’aux 1 000 premiers pôles avec la plus petite amplitude. Pour les modèles mechss avec un amortissement de Rayleigh, le logiciel calcule les pôles à partir des valeurs propres de (K,M). Autrement, il les calcule à partir du modèle sparss équivalent. (depuis R2025a)

Arguments nom-valeur

réduire tout

Spécifiez des paires d’arguments optionnelles sous la forme Name1=Value1,...,NameN=ValueN, où Name est le nom de l’argument et Value est la valeur correspondante. Les arguments nom-valeur doivent apparaître après les autres arguments, mais l’ordre des paires n’a pas d’importance.

Exemple : [wn,zeta] = damp(sparseSys,Focus=[0 10],Display="off")

Depuis R2025a

Plage de fréquences d’intérêt, spécifiée en tant que vecteur de forme [fmin,fmax]. Lorsque vous spécifiez une plage de fréquences de focus, l’algorithme ne calcule que les pôles à fréquence naturelle dans cette plage. Pour les modèles en temps discret, le logiciel estime la fréquence naturelle équivalente via la transformation de Tustin.

Pour les modèles parcimonieux semi-définis symétriques, vous pouvez spécifier n’importe quelle plage de fréquences telle que 0 ≤ fmin < fmax ≤ . Pour les modèles sparss non symétriques, vous devez spécifier la plage de fréquences [0,fmax] ou [fmin,inf].

Puisque le logiciel calcule tous les pôles dans la plage de fréquences spécifiée, vous indiquez généralement une plage basse fréquence pour éviter de calculer un grand nombre de pôles. Par défaut, le focus est non spécifié ([0 Inf]) et l’algorithme calcule jusqu’à MaxNumber pôles.

Depuis R2025a

Nombre maximal de pôles et de zéros à calculer, spécifié en tant qu’entier positif. Cette valeur limite le nombre de pôles calculés par l’algorithme.

Depuis R2025a

Décalage spectral, spécifié en tant que scalaire fini.

Le logiciel calcule les pôles avec la fréquence naturelle dans la plage spécifiée [0,fmax] au moyen d’itérations de puissance inverse pour A-sigma*E, ce qui permet d’obtenir les valeurs propres les plus proches du décalage sigma. Quand A est singulier et sigma est zéro, l’algorithme échoue car aucune inverse n’existe. Par conséquent, pour les modèles parcimonieux avec action intégrale (s = 0 ou à z = 1 pour les modèles en temps discret), vous pouvez utiliser cette option pour décaler implicitement des pôles ou des zéros à la valeur la plus proche de cette valeur de décalage. Spécifiez une valeur de décalage qui n’est pas égale à une valeur de pôle existante du modèle original.

Depuis R2025a

Tolérance pour la précision des pôles calculés, spécifiée en tant que scalaire fini positif. Cette valeur contrôle la convergence des valeurs propres calculées dans les itérations de puissance inverse.

Depuis R2025a

Afficher ou masquer un rapport d’avancement, spécifié en tant que "off" ou "on".

Arguments en sortie

réduire tout

Fréquence naturelle de chaque pôle de sys, renvoyée en tant que vecteur trié dans l’ordre croissant des valeurs de fréquence. Les fréquences sont exprimées dans l’unité réciproque de la propriété TimeUnit de sys.

Si sys est un modèle en temps discret avec un pas d’échantillonnage spécifié, wn contient les fréquences naturelles des pôles en temps continu équivalents. Si le pas d’échantillonnage n’est pas spécifié, damp suppose qu’il est égal à 1 et calcule wn en conséquence. Pour plus d’informations, consultez Algorithmes.

Amortissement de chaque pôle, renvoyé en tant que vecteur trié dans le même ordre que wn.

Si sys est un modèle en temps discret avec un pas d’échantillonnage spécifié, zeta contient les amortissements des pôles en temps continu équivalents. Si le pas d’échantillonnage n’est pas spécifié, damp suppose qu’il est égal à 1 et calcule zeta en conséquence. Pour plus d’informations, consultez Algorithmes.

Pôles du modèle de système dynamique, renvoyés en tant que vecteur trié dans le même ordre que wn. p est identique à la sortie de pole(sys), sauf en ce qui concerne l’ordre. Pour plus d’informations sur les pôles, consultez pole.

Algorithmes

damp calcule la fréquence naturelle, la constante de temps et l’amortissement des pôles du système tels que définis dans le tableau suivant :

 Temps continuTemps discret avec pas d’échantillonnage Ts
Emplacement du pôle

s

z

Pôle en temps continu équivalent

Not applicable

s=ln(z)Ts

Fréquence naturelle

ωn=|s|

ωn=|s|=|ln(z)Ts|

Amortissement

ζ=cos(s)

ζ=cos(s)=cos(ln(z))

Constante de temps

τ=1ωnζ

τ=1ωnζ

Si le pas d’échantillonnage n’est pas spécifié, damp suppose qu’il est égal à 1 et calcule zeta en conséquence.

Pour les modèles de représentation d’état parcimonieux, le logiciel utilise l’algorithme de Krylov-Schur [1] pour les itérations de puissance inverse, afin de calculer les pôles dans la bande de fréquence spécifiée. (depuis R2025a)

Références

[1] Stewart, G. W. “A Krylov--Schur Algorithm for Large Eigenproblems.” SIAM Journal on Matrix Analysis and Applications 23, no. 3 (January 2002): 601–14. https://doi.org/10.1137/S0895479800371529.

Historique des versions

Introduit avant R2006a

développer tout

Voir aussi

| | | | |