Используя правильное представление модели

Этот пример показывает некоторые лучшые практики для работы с моделями LTI.

Какое Представление Подходит лучше всего для Вычислений?

Используя программное обеспечение Control System Toolbox™, можно представлять системы LTI четырьмя различными способами:

  • Передаточная функция (TF)

  • Нули и полюса (ZPK)

  • Пространство состояний (SS)

  • Данные о частотной характеристике (FRD)

В то время как TF и представления ZPK компактны и удобны в целях отображения, они не идеальны для манипуляции с системами и анализа по нескольким причинам:

  • Работа с моделями TF и ZPK часто приводит к старшим полиномам, оценка которых может быть заполонена погрешностями.

  • TF и представления ZPK неэффективны для управления системами MIMO и имеют тенденцию раздувать порядок модели.

Некоторые из этих ограничений проиллюстрированы ниже. Из-за этих ограничений необходимо использовать SS или представления FRD для большинства вычислений, включающих модели LTI.

Ловушки старших передаточных функций

Вычисления включающие старшие передаточные функции могут пострадать от серьезной потери точности и даже переполниться. Даже простой продукт двух передаточных функций может дать неожиданные результаты, как показано ниже.

Загрузите и постройте две передаточных функции дискретного времени Pd и Cd порядка 9 и 2, соответственно:

% Load Pd,Cd models
load numdemo Pd Cd 

% Plot their frequency response
bode(Pd,'b',Cd,'r'), grid
legend('Pd','Cd')

Затем, вычислите передаточную функцию разомкнутого цикла L = Pd*Cd с помощью TF, ZPK, SS и представлений FRD:

Ltf = Pd * Cd;                    % TF
Lzp = zpk(Pd) * Cd;               % ZPK
Lss = ss(Pd) * Cd;                % SS
w = logspace(-1,3,100);
Lfrd = frd(Pd,w) * Cd;            % FRD

Наконец, сравните значение частотной характеристики для получившихся четырех моделей:

sigma(Ltf,'b--',Lzp,'g',Lss,'r:',Lfrd,'m--',{1e-1,1e3});
legend('TF','ZPK','SS','FRD')

Ответы от ZPK, SS и представлений FRD тесно соответствуют, но ответ от представления TF изменчив и ошибочен ниже 100 радов/секунда. Чтобы понять потерю точности с формой передаточной функции, сравните карты полюса/нуля Фунта и CD рядом z=1:

pzplot(Pd,'b',Cd,'r');
title('Pole/zero maps of Pd (blue) and Cd (red)');
axis([0.4 1.05 -1 1])

Обратите внимание на то, что существует несколько корней рядом z=1. Поскольку относительная точность полиномиальных отбрасываний значений около корней, относительная погрешность на значении передаточной функции рядом z=1 превышает 100%. Частоты ниже карты на 100 рад/с к |z-1 | <1e-3, который объясняет ошибочные результаты ниже 100 рад/с.

Ловушки назад и вперед преобразований между представлениями

Можно легко преобразовать любую модель LTI в передаточную функцию, нули и полюса или форму пространства состояний с помощью команд tf, zpk и ss, соответственно. Например, учитывая 2D вход, 2D вывод случайная модель в пространстве состояний HSS1 создал использование

HSS1 = rss(3,2,2);

можно получить его использование передаточной функции

HTF = tf(HSS1);

и преобразуйте его назад в использование пространства состояний

HSS2 = ss(HTF);

Однако остерегайтесь этого такой назад и вперед, преобразования являются дорогими, могут подвергнуться некоторой потере точности, и искусственно раздуть порядок модели для систем MIMO. Например, порядок HSS2 удваивает порядок HSS1, потому что 6 типичный порядок 2x2 матрица передачи со знаменателями степени 3:

order(HSS1)
ans = 3
order(HSS2)
ans = 6

Чтобы понять различие в порядке модели, сравните карты полюса/нуля этих двух моделей:

subplot(211)
pzmap(HSS1,'b')
title('Poles and zeros of HSS1');
subplot(212)
pzmap(HSS2,'r')
title('Poles and zeros of HSS2');

Заметьте пары полюса/нуля отмены в HSS2, изображенном x's в o's в карте полюса/нуля. Можно использовать команду minreal, чтобы устранить пары полюса/нуля отмены и восстановить 3-й порядок, минимальную модель в пространстве состояний от HSS2:

HSS2_min = minreal(HSS2);
3 states removed.
order(HSS2_min)
ans = 3

Проверяйте, что HSS1 и HSS2_min совпадают путем графического вывода относительного разрыва между этими двумя моделями:

clf
Gap = HSS1-HSS2_min;
sigma(HSS1,Gap), grid
Warning: The frequency response has poor relative accuracy. This may be because the response is nearly zero or infinite at all frequencies, or because the state-space realization is ill conditioned. Use the "prescale" command to investigate further.
legend('HSS1','Gap HSS1 vs. minimal HSS2','Location','Best')

Разрыв (зеленая кривая) является очень маленьким на всех частотах. Обратите внимание на то, что sigma предупреждает, что график Gap является "шумным", потому что различие является столь небольшим, что это по существу состоит из погрешностей округления.

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