pole

Полюса динамической системы

Описание

пример

P = pole(sys) возвращает полюса модели динамической системы SISO или MIMO sys. Выход выражается как взаимность временных модулей, заданных в sys.TimeUnit. Полюса динамической системы определяют стабильность и отклик системы.

Разомкнутый контур линейная инвариантная по времени система стабилен, если:

  • В непрерывном времени все полюсы передаточной функции имеют отрицательные действительные части. Когда полюсы визуализируются на комплексной s-плоскости, они все должны лежать в левой-половинной плоскости (LHP), чтобы гарантировать стабильность.

  • В дискретном времени все полюсы должны иметь величину, строго меньшую единицы, то есть все они должны лежать внутри модуля круга.

пример

P = pole(sys,J1,...,JN) возвращает полюса P записей в массиве моделей sys с нижними индексами (J1,...,JN).

Примеры

свернуть все

Вычислите полюса следующей передаточной функции в дискретном времени:

sys(z)=0.0478z-0.0464z2-1.81z+0.9048

sys = tf([0.04798 0.0464],[1 -1.81 0.9048],0.1);
P = pole(sys)
P = 2×1 complex

   0.9050 + 0.2929i
   0.9050 - 0.2929i

Для стабильных дискретных систем все их полюсы должны иметь величину, строго меньшую, чем одна, то есть все они должны лежать внутри модуля круга. Полюса в этом примере являются парой сложных сопряженных, и лежат внутри модуля круга. Следовательно, система sys является стабильным.

Вычислите полюса следующей передаточной функции:

sys(s)=4.2s2+0.25s-0.004s2+9.6s+17

sys = tf([4.2,0.25,-0.004],[1,9.6,17]);
P = pole(sys)
P = 2×1

   -7.2576
   -2.3424

Для стабильных непрерывных систем все их полюса должны иметь отрицательные действительные части. sys устойчива, так как полюса отрицательны, то есть лежат в левой половине комплексной плоскости.

В данном примере загрузите invertedPendulumArray.mat, который содержит массив 3х3 инвертированных моделей маятника. Масса маятника изменяется при перемещении от модели к модели вдоль одного столбца sys, и длина маятника изменяется, когда вы перемещаетесь вдоль одна строка. Используемые значения массы составляют 100g, 200g и 300g, а используемые длины маятника составляют 3m, 2m и 1m соответственно.

Column1Column2Column3Row1100g,3m100g,2m100g,1mRow2200g,3m200g,2m200g,1mRow3300g,3m300g,2m300g,1m

load('invertedPendulumArray.mat','sys');
size(sys)
3x3 array of transfer functions.
Each model has 1 outputs and 1 inputs.

Найдите полюса массива моделей.

P = pole(sys);
P(:,:,2,1)
ans = 3×1

    2.1071
   -2.1642
   -0.1426

P(:,:,2,1) соответствует полюсам модели с весом маятника 200 г и длиной 3м.

Входные параметры

свернуть все

Динамическая система, заданная как модель динамической системы SISO или MIMO, или массив моделей динамической системы SISO или MIMO. Динамические системы, которые вы можете использовать, включают в себя числовые модели LTI в непрерывном времени или дискретном времени, такие как tf (Control System Toolbox), zpk (Control System Toolbox), или ss (Control System Toolbox) модели.

Если sys является обобщенной моделью пространства состояний genss или модель неопределенного пространства состояний uss, pole возвращает полюса текущего или номинального значения sys. Если sys - массив моделей, pole возвращает полюса модели, соответствующие ее нижнему индексу J1,...,JN в sys. Для получения дополнительной информации об массивах моделей см. Раздел «Массивы моделей» (Control System Toolbox).

Индексы моделей в массиве, полюсы которых вы хотите извлечь, заданные как положительное целое число. Вы можете предоставить столько индексов, сколько измерения массива в sys. Для примера, если sys является массивом динамических системных моделей 4 на 5, следующая команда извлекает полюса для входа (2,3) в массив.

P = pole(sys,2,3);

Выходные аргументы

свернуть все

Полюса динамической системы, возвращенные в виде скаляра или массива. Если sys является:

  • Одна модель, затем P - вектор-столбец полюсов модели динамической системы sys

  • Массив моделей, затем P является массивом полюсов каждой модели в sys

P выражается как взаимность модулей, заданных в sys.TimeUnit. Для примера шест выражается в 1/минуту, если sys.TimeUnit = 'minutes'.

В зависимости от типа системной модели, полюса вычисляются следующим образом:

  • Для моделей пространства состояний полюса являются собственными значениями матрицы A или обобщёнными собственными значениями A - λE в случае дескриптора.

  • Для передаточных функций SISO или моделей с нулями , полюса и усиления полюсы являются корнями знаменателя. Для получения дополнительной информации см. roots.

  • Для передаточных функций MIMO (или моделей с нулями , полюса и усиления), полюса возвращаются как объединение полюсов для каждой записи SISO. Если некоторые пары ввода-вывода имеют общий знаменатель, корни такого знаменателя пар ввода-вывода подсчитываются только один раз.

Ограничения

  • Несколько полюсов численно чувствительны и не могут быть вычислены с высокой точностью. λ полюса с кратностью m обычно приводит к кластеру вычисленных полюсов, распределенных по окружности с центральными λ и радиусом порядка

    ρε1/m,

    где и - относительная точность машины (eps).

    Для получения дополнительной информации о нескольких полюсах см. «Чувствительность нескольких корней» (Control System Toolbox).

  • Если sys имеет внутренние задержки, полюсы получаются путем первой установки всех внутренних задержек на нуль так, чтобы система имела конечное число полюсов, тем самым создавая приближение Паде нулевого порядка. Для некоторых систем установка задержек на нуль создает сингулярные алгебраические циклы, которые приводят к неправильным или плохо определенным приближениям с нулевой задержкой. Для этих систем pole возвращает ошибку.

    Чтобы оценить стабильность моделей с внутренними задержками, используйте step или impulse.

Введенный в R2012a