Во многих случаях модель - полюсы осей важно сохранять после снижения сложности модели, например, динамику твёрдого тела объекта гибкой структуры или интеграторов контроллера. Уникальная стандартная программа, modreal
, хорошо служит цели.
modreal
помещает систему в свою модальную форму с собственными значениями, появляющимися на диагонали ее A-матрицы. Реальные собственные значения появляются в блоках 1 на 1, а сложные - в реальных блоках 2 на 2. Все блоки упорядочены в порядке возрастания, основанном на их собственных величинах, по умолчанию или порядке убывания, основанном на их вещественных частях. Поэтому указывается количество -полюса оси разделяют модель на две системы с одной, содержащей только -динамика оси, другая, содержащая оставшуюся динамику.
rng(5678,'twister'); G = rss(30,1,1); % random 30-state model [Gjw,G2] = modreal(G,1); % only one rigid body dynamics G2.D = Gjw.D; % put DC gain of G into G2 Gjw.D = 0; subplot(2,1,1) sigma(Gjw) ylabel('Rigid Body') subplot(2,1,2) sigma(G2) ylabel('Nonrigid Body')
Дальнейшее снижение сложности модели может быть сделано на G2
без каких-либо числовых трудностей. После G2
далее сокращается до Gred
, окончательное приближение модели просто Gjw+Gred
.
Этот процесс разделения -полюса оси были встроены и автоматизированы во всех стандартных программах снижения сложности модели balancmr
, schurmr
, hankelmr
, bstmr
, и hankelsv
, так что пользователям не нужно беспокоиться о разделении модели.
Исследуйте график сингулярного значения Ханкеля.
hankelsv(G)
Вычислите уменьшенную модель восьмого порядка.
[gr,info] = reduce(G,8); figure bode(G,'b-',gr,'r--') legend('Original','Reduced')
Алгоритм по умолчанию balancmr
от reduce
проделала большую работу по аппроксимации модели с 30 состояниями всего с восемью состояниями. Снова, динамика твердого тела сохранена для дальнейшего проектирования контроллера.
balancmr
| bstmr
| hankelmr
| hankelsv
| modreal
| schurmr