Во многих случаях, модель - полюса оси важны, чтобы сохранить после снижения сложности модели, например, динамика твердого тела гибкого объекта структуры или интеграторы контроллера. Уникальная стандартная программа, 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