MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем

Оптимальные и робастные системы управления\Mu-Analysis and Synthesis Toolbox

Веремей Е.И. Пособие "Mu-Analysis and Synthesis Toolbox"

В оглавление книги \ К следующему разделу \ К предыдущему разделу

Глава 1. Элементы теории оптимизации по нормам и

1.8. Редукция математических моделей объектов управления

При работе с LTI - системами часто возникают ситуации, в которых является желательным и возможным понижение порядка линейной математической модели объекта управления в пространстве состояний. В ППП -Tools предлагается ряд функций для использования с целью понижения порядка линейной системы.

Предположим, что математическая модель объекта управления представляет собой стандартную LTI-систему в пространстве состояний:

где - вектор состояния, - вектор управлений, - вектор измерений.

Наиболее простым способом редукции линейной системы управления в пространстве состояний является отсекание части матрицы , т.е. желаемого количества строк и столбцов, и удаление соответствующих строк и столбцов матриц , и , что обеспечивается функцией strunc. Но, редуцируя указанным способом объект управления, необходимо отслеживать, каким образом редуцируемые моды матрицы влияют на поведение LTI-объекта, и не повлечет ли их удаление качественное изменение поведения рассматриваемого объекта управления. Правильной оценке влияния тех или иных мод матрицы на поведение объекта управления может способствовать предварительное преобразование матрицы , а соответственно и матриц , и , и приведение матрицы к более простому виду. В частности, функция strans приводит матрицу к блочно - диагональной структуре, блоки которой имеют размерность и соответственно для вещественных и комплексных собственных значений матрицы и располагаются в порядке возрастания абсолютной величины. Выходными аргументами функции strans являются новая системная матрица sysout, описывающая объект управления в пространстве состояний, а также матрица преобразования v:


a=[1 -1 -1 0 1;1 1 0 7 -2;0 -1 3 0 1; 0 2 1 -1 6; 1 2 3 0 0];
b=[1 -1;0 1;-1 0;1 1;1 2];
c=[1 0 2 3 -1];
d=[1 2];
eiga=eig(a)
eiga =
  -3.1459 + 3.2948i
  -3.1459 - 3.2948i
   4.4315 + 0.8364i
   4.4315 - 0.8364i
   1.4288
sys=pck(a,b,c,d);
[sysout,v] = strans(sys);
[ac,bc,cc,dc]=unpck(sysout);
ac
ac =
    1.4288         0         0         0         0
         0    4.4315   -0.8364         0         0
         0    0.8364    4.4315         0         0
         0         0         0   -3.1459   -3.2948
         0         0         0    3.2948   -3.1459

Функция sresid также производит понижение порядка LTI - системы, но не просто отсекает удаляемую подсистему, а предварительно обеспечивает выполнение следующих действий. Разобьем систему управления на две подсистемы

здесь - сохраняемая часть вектора состояний , - часть вектора , подлежащая удалению.

Приравнивая производную нулю и подставляя полученное при разрешении уравнения относительно выражение в подсистему, соответствующую вектору , имеем в качестве редуцированного LTI - объекта систему уравнений

Однако базовой идеологией редукции математических моделей, реализованной в пакете, является минимизация некоторого специальным образом определённого "расстояния" от исходной модели до результата редукции. В качестве таких расстояний в ППП -Tools принимаются два варианта матричных норм для разности передаточных матриц исходной и редуцированной системы. В качестве первой из них используется норма , которая была введена выше, а в качестве второй - максимальное ганкелево сингулярное значение (число). Ганкелевым сингулярным значением (числом) передаточной матрицы называют корень квадратный из собственного значения произведения граммианов (управляемости) и (наблюдаемости) для минимальной реализации .

Для работы с устойчивыми системами управления в ППП -Tools предназначены функции sysbal и hankmr. Функция sysbal строит сбалансированную реализацию для заданной LTI - системы, которая связана с граммианами управляемости и наблюдаемости. Понижение порядка модели происходит, если ганкелевы сингулярные значения системы оказываются меньше заданного числа tol, набор ганкелевых сингулярных значений, не удовлетворяющих этому условию, является выходным аргументом функции sysbal. Заметим, что моды, которые удаляются функцией sysbal при достаточно малом входном значении tol, считаются неуправляемыми и/или ненаблюдаемыми. Полученные сингулярные значения могут быть использованы для проведения дальнейшей редукции модели.

Рассмотрим пример, который показывает, каким образом функция sysbal может быть использована для удаления неуправляемых и/или ненаблюдаемых мод. Для этого построим линейную систему следующего вида. Пусть имеются две системы и :

P=nd2sys(1,[1,1,1]);

C=nd2sys(1,[1,1]);

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


clpc=starp(mmult([1;1],mmult(mmult(P,C),[1,-1])),1,1,1);
minfo(clpc);
system:   3 states     1 outputs     1 inputs
rifd(spoles(clpc));
   real       imaginary     frequency 
 
  -2.2816e-001   -1.1151e+000    1.1382e+000
  -2.2816e-001    1.1151e+000    1.1382e+000
  -1.5437e+000    0.0000e+000    1.5437e+000

damping
 
2.0045e-001 
2.0045e-001 
1.0000e+000

Сформируем замкнутую систему также и другим способом:

clp=mmult(P,C,minv(madd(1,mmult(P,C))));
minfo(clp);
system:   6 states     1 outputs     1 inputs
rifd(spoles(clp));
    real       imaginary     frequency 
 
  -5.0000e-001   -8.6603e-001    1.0000e+000
  -5.0000e-001    8.6603e-001    1.0000e+000 
  -1.0000e+000    0.0000e+000    1.0000e+000
  -2.2816e-001   -1.1151e+000    1.1382e+000
  -2.2816e-001    1.1151e+000    1.1382e+000
  -1.5437e+000    0.0000e+000    1.5437e+000
damping
 
5.0000e-001 
5.0000e-001 
1.0000e+000 
2.0045e-001 
2.0045e-001 
1.0000e+000

Замкнутая система clp имеет в отличие от системы clpc 6 переменных состояния и содержит как полюса исходных систем и , так и полюса, полученные при замыкании, причем полюса, соответствующие разомкнутым системам и , в замкнутой системе являются неуправляемыми. Замкнутая система clp сформирована с совместным использованием команд madd и mmult, использование которых зачастую приводит, как оказалось и в данном случае, к получению не минимальной реализации сформированной с их помощью системы. Используем функцию sysbal для построения сбалансированной реализации системы clp и функцию strunc для понижения порядка системы.


tol=1.000e-017;
[clpb,hanksv]=sysbal(clp,tol);
minfo(clpb);
system:   5 states     1 outputs     1 inputs
rifd(spoles(clpb));
real       imaginary     frequency
 
  -3.3687e-001    0.0000e+000    3.3687e-001
  -2.2816e-001   -1.1151e+000    1.1382e+000
  -2.2816e-001    1.1151e+000    1.1382e+000
   1.3579e+000    0.0000e+000    1.3579e+000
  -1.5437e+000    0.0000e+000    1.5437e+000
damping
 
1.0000e+000 
2.0045e-001 
2.0045e-001 
-1.0000e+000 
1.0000e+000
disp(hanksv');
6.7732e-001  4.7580e-001  4.8484e-002  6.7506e-017  3.0809e-017

Заданная входная величина tol=1.000e-017 позволила понизить порядок системы с шестого до пятого, одно ганкелево сингулярное число оказалось меньше заданной величины tol, и, соответственно, выходной вектор hanksv имеет пять компонент. Компоненты вектора hanksv располагаются в порядке уменьшения значений и определяются граммианами управляемости и наблюдаемости, последние две компоненты вектора hanksv соответствуют оставшимся неуправляемым модам системы. Применив функцию strunc, можно выполнить дальнейшее понижение порядка системы и удаление неуправляемых мод.


clpbstr=strunc(clpb,3);
rifd(spoles(clpbstr));
real       imaginary     frequency
 
  -2.2816e-001   -1.1151e+000    1.1382e+000
  -2.2816e-001    1.1151e+000    1.1382e+000
  -1.5437e+000    0.0000e+000    1.5437e+000
damping
 
2.0045e-001 
2.0045e-001 
1.0000e+000

Теперь сравним исходную систему clp со сбалансированной реализацией clpb и с редуцированной моделью clpbstr, это можно сделать, в частности, путем построения и сопоставления соответствующих частотных характеристик, или же оценивая какую-либо норму разности исходной и редуцированной системы, например, с помощью ганкелевой или - нормы. Поскольку ганкелева норма определяется как максимальное ганкелево сингулярное число, то её значение может быть получено с помощью функции sysbal:


subsys=msub(clpc,clpbstr);
[subsysb,sigh]=sysbal(subsys);
disp(sigh');
1.6871e-015  1.1587e-015  1.8450e-016  1.6430e-016
%Ганкелева норма
hhank=sigh(1)
hhank =
1.6871e-015
%H-infinity норма
tolh=1.0000e-008;
hinf=hinfnorm(subsys,tolh)
hinf =

            0  1.0000e-008            0

vplot('bode',clpc_f,'k-',clpb_f,'k+',clpbstr_f,'k*');

Рис.8.1. Частотные характеристики систем clpс, clpb и clpbstr

Вычисленные значения норм достаточно малы, и, как видно из рис.8.1., частотные характеристики замкнутой системы clpс и системы clpbstr, полученной после понижения порядка системы clp, совпадают, что позволяет сделать вывод о том, что системы обладают практически идентичными динамическими свойствами.

Функция hankmr определяет систему, являющуюся оптимальным приближением ганкелевой нормы желаемого порядка для заданной линейной модели. Входными аргументами функции [sh,su,hsvu]=hankmr(sys,sig,k,opt) помимо желаемого порядка k, является сбалансированная реализация рассматриваемой системы управления sys, а также ее ганкелевы сингулярные значения sig, предварительно найденные с помощью функции sysbal. Если входной аргумент opt опускается, тогда выходная система sh устойчива и имеет порядок k, система su неустойчива, hsvu=[], и .

В том случае, если в качестве значения входного аргумента opt установлено значение 'd', выходной вектор hsvu не является пустым и содержит набор ганкелевых сингулярных значений, соответствующих системе su, при этом выполняется соотношение . Если же входной аргумент opt задан как 'a', то выходная система sh включает в себя как устойчивую, так и неустойчивую подсистемы, hsvu=[]. Приведем пример применения функции hankmr:


a=-diag([.03 .05 .1 .2 .3 .4]);
b=[.03 .05 .1 .2 .3 .4]'; c=ones(1,6); d=0.001;
sys=pck(a,b,c,d);
[sysb,hanksv]=sysbal(sys);
minfo(sysb);
system:   6 states     1 outputs     1 inputs
[sysbh,sysu,sigu]=hankmr(sysb,hanksv,3);
minfo(sysbh); disp(spoles(sysbh)');
system:   3 states     1 outputs     1 inputs     
 -3.3144e-001 -1.1221e-001 -3.5482e-00
minfo(sysu); 
system:   2 states     1 outputs     1 inputs     
disp(spoles(sysu)');
  2.7866e-001  8.5744e-002
sigu
sigu =
     []

[sysbhd,sysud,sigud]=hankmr(sysb,hanksv,3,'d');
minfo(sysbhd); disp(spoles(sysbhd)');
system:   3 states     1 outputs     1 inputs     
 -3.3144e-001 -1.1221e-001 -3.5482e-002
minfo(sysud); disp(spoles(sysud)');
system:   2 states     1 outputs     1 inputs     
  8.5744e-002  2.7866e-001
disp(sigud');
3.5662e-007  1.3893e-008
disp(hanksv')
  2.5349e+000  4.2294e-001  3.8105e-002  3.6436e-003  3.5072e-004  1.6445e-005
3.5662e-007  1.3893e-008

hinfnorm(msub(sysb,sysbhd))
norm between 0.0036439 and 0.0036476
achieved near 0
[sysbha,sysua,sigua]=hankmr(sysb,hanksv,3,'a');
minfo(sysbha); disp(spoles(sysbha)');
system:   5 states     1 outputs     1 inputs     
 -3.3144e-001 -1.1221e-001 -3.5482e-002  2.7866e-001  8.5744e-002
minfo(sysua); sigua
empty matrix
sigua = []

Рассмотрим теперь линейную систему 15 порядка и построим для нее редуцированные модели несколькими способами, используя для этого приведенные выше функции.


% Исходная система
a=-diag([.03 .05 .1 .2 .3 .4 1 3 5 10]); 
b=[.03 .05 .1 .2 .3 .4 1 3 5 10]';
c=ones(1,10); d=0.001;
sys1=pck(a,b,c,d); sys2=nd2sys([1 .1 .4],[1 .1 .1]);
sys3=nd2sys([1 -3 1000],[1 3 1000]); 
sys4=nd2sys([1 -20],[1 20]);
sys=mmult(sys1,sys2,sys3,sys4);
minfo(sys); disp(spoles(sys)')
system:   15 states     1 outputs     1 inputs     
Columns 1 through 2 

 -3.0000e-002               -5.0000e-002              

  Columns 3 through 4 

 -1.0000e-001               -2.0000e-001              

  Columns 5 through 6 

 -3.0000e-001               -4.0000e-001              

  Columns 7 through 8 

 -1.0000e+000               -3.0000e+000              

  Columns 9 through 10 

 -5.0000e+000               -1.0000e+001              

  Columns 11 through 12 

 -5.0000e-002 -3.1225e-001i -5.0000e-002 +3.1225e-001i

  Columns 13 through 14 

 -1.5000e+000 -3.1587e+001i -1.5000e+000 +3.1587e+001i

  Column 15 

 -2.0000e+001              

omega=logspace(-1,3,60);
sys_f=frsp(sys,omega);  

[sysb,sig]=sysbal(sys);
disp(sig')
Columns 1 through 4 

  3.6422e+001  2.4906e+001  6.1381e+000  2.0261e+000

  Columns 5 through 8 

  7.1689e-001  6.9421e-001  6.0281e-001  4.2291e-001

  Columns 9 through 12 

  1.1884e-001  3.4276e-002  9.0070e-003  2.4834e-003

  Columns 13 through 15 

  4.0909e-004  1.4544e-004  3.9050e-006

% Редукция модели до 7-го порядка
k=7;

% Редукция модели с использованием функции strunc
sysb7s=strunc(sysb,k);
sysb7s_f=frsp(sysb7s,omega);
hinfnorm(msub(sys,sysb7s))
norm between 0.85553 and 0.85638
achieved near 20.3237

% Редукция модели с использованием функции hankmr
sysb7h=hankmr(sysb,sig,k,'d');
sysb7h_f=frsp(sysb7h,omega);
hinfnorm(msub(sys,sysb7h))
norm between 0.42917 and 0.4296
achieved near 29.2463

% Редукция модели с использованием функции sresid
sysr=strans(sys);
sysr7sr=sresid(sysr,k);
sysr7sr_f=frsp(sysr7sr,omega);
hinfnorm(msub(sys,sysr7sr))
norm between 7.782 and 7.7898
achieved near 14.732

Следует отметить, что наименьшие по величине модуля семь собственных значений, являющиеся первыми диагональными элементами в сформированной с помощью функции strans модели sysr, оказывают наибольшее влияние на значение - нормы модели.


% Редукция модели с использованием функции strunc
sysr7str=strunc(sysr,7);
sysr7str_f=frsp(sysr7str,omega);
hinfnorm(msub(sys,sysr7str))
norm between 6.7602 and 6.7669
achieved near 0

Последние два объекта sys7sr и sys7str отличаются лишь матрицей , и это отличие заметно влияет на вид соответствующих частотных характеристик.

Построим частотные характеристики исходной модели и всех полученных редуцированных моделей.

vplot('bode',sys_f,'k-',sysb7s_f,'k*',sysb7h_f,'k>',sysr7sr_f,'k+', sysr7str_f,'k.');

vplot('bode',sys_f,'k-',sysb12s_f,'k*',sysb12h_f,'k>',sysr12sr_f,'k+', sysr12str_f,'k.');

На рис.8.2 изображены частотные характеристики исходной системы sys ("-"), редуцированных до 7-го порядка систем sysb7s ("*"), sysb7h (">"), sysr7sr ("+") и sysr7str (".").

На рис. 8.3. изображены частотные характеристики исходной системы sys ("-") и редуцированных до 12-го порядка моделей, полученных путем совершения действий, аналогичных проделанным для получения редуцированных моделей 7-го порядка, соответственно sysb12s ("*"), sysb12h (">"), sysr12sr ("+"), sysr12str (".").

Рис.8.2. Частотные характеристики систем sys, sysb7s, sysb7h, sysr7sr и sysr7str

Рис. 8.3. Частотные характеристики систем sys, sysb12s, sysb12h, sysr12sr и sysr12str

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


pulse=siggen('t<1',[0:0.1:12]);
sys_t=trsp(sys,pulse);
integration step size: 0.0031623
interpolating input vector (zero order hold)
sysb7s_t=trsp(sysb7s,pulse);
integration step size: 0.0041269
interpolating input vector (zero order hold)
sysb7h_t=trsp(sysb7h,pulse);
integration step size: 0.0035476
interpolating input vector (zero order hold)
sysr7sr_t=trsp(sysr7sr,pulse);
integration step size: 0.1
sysr7str_t=trsp(sysr7str,pulse);
integration step size: 0.1

vplot(sys_t,'k-',sysb7s_t,'k--');
xlabel('Time:seconds');
vplot(sys_t,'k-',sysb7h_t,'k--');
xlabel('Time:seconds');
vplot(sys_t,'k-',sysr7sr_t,'k--');
xlabel('Time:seconds');

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

vplot(sys_t,'k-',sysr7str_t,'k--');

xlabel('Time:seconds');

Рис.8.4. Исходная система sys и редуцированная система sysb7s

Рис.8.5. Исходная модель sys и редуцированная модель sysb7h

Рис.8.6. Исходная модель sys и редуцированная модель sysr7sr

Рис.8.7. Исходная модель sys и редуцированная модель sysr7str

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

Первый метод основан на определении системы , являющейся приближением с минимизацией взвешенной ганкелевой нормы порядка для заданной устойчивой линейной модели (этот метод рассмотрен в [10]), и, соответственно, минимизации ганкелевой нормы устойчивой части выражения (, - передаточные функции). Этот метод реализуется функциями sfrwtbal и sfrwtbld. Весовые множители и должны быть устойчивыми, минимальнофазовыми, квадратными, и их размерности должны согласовываться с размерностью передаточной матрицы .

Функция sfrwtbal строит сбалансированную реализацию устойчивой части модели и находит набор ее ганкелевых сингулярных значений. Далее для сбалансированной модели строится приближение - го порядка, то есть редуцированная модель - го порядка, что может быть осуществлено, в частности, при помощи функции hankmr. Затем функция sfrwtbld преобразовывает полученную систему - го порядка и строит аппроксимирующую модель - го порядка для исходной модели. Следует отметить, что - й элемент вектора sigfrwt ганкелевых сингулярных значений, вычисляемый функцией sfrwtbal, обеспечивает нижнюю оценку нормы : . Приведем пример использования функций sfrwtbal и sfrwtbld.


% Формирование весовых множителей  = wt1 и  = wt2
wt1=mmult(sys1,sys2);
wt2=1;
% Построение сбалансированной реализации для исходной системы sys
[sysfrwtbal,sigfrwt]=sfrwtbal(sys,wt1,wt2);
% Ганкелевы сингулярные значения системы 
disp(sigfrwt')
  Columns 1 through 6 
  1.0000e+000  1.0000e+000  1.0000e+000  9.9697e-001  9.3961e-001  9.1022e-001
  Columns 7 through 12 
  2.2177e-001  5.9077e-002  1.7448e-002  4.5526e-003  1.2419e-003  2.1046e-004
  Columns 13 through 15 
  8.1357e-005  1.2386e-005  2.9765e-007
k=7;
% Использование функции hankmr для поиска  
sysfrwt7=hankmr(sysfrwtbal,sigfrwt,k,'d');
% Использование функции strunc для поиска  
sysfrwt7str=strunc(sysfrwtbal,k);
% Построение аппроксимирующей системы для исходной модели sys
sysfrwthat=sfrwtbld(sysfrwt7,wt1,wt2);
sysfrwthat_f=frsp(sysfrwthat,omega);
sysfrwtstrhat=sfrwtbld(sysfrwt7str,wt1,wt2);
sysfrwtstrhat_f=frsp(sysfrwtstrhat,omega);
%H-infinity норма относительной погрешности

disp(hinfnorm(msub(1,vrdiv(sysfrwthat_f,sys_f))))
6.7266e-002
disp(hinfnorm(msub(1,vrdiv(sysfrwtstrhat_f,sys_f))))
8.7680e-002
% H-infinity норма  
[subfrwtbal,sig]=sfrwtbal(msub(sys,sysfrwthat),wt1, wt2);
hinfnorm(subfrwtbal)
norm between 0.060559 and 0.060619
achieved near Inf 
[substrfrwtbal,sigstr]=sfrwtbal(msub(sys, sysfrwtstrhat), wt1,wt2);
hinfnorm(substrfrwtbal)
norm between 0.16525 and 0.16541
achieved near 0
% Частотные характеристики исходной системы и редуцированных
vplot('bode',sys_f,'k-',sysfrwthat_f,'k.', sysfrwtstrhat_f,'k+');

Рис.8.8. Частотные характериститки исходной модели sys ("-") и редуцированных моделей sysfrwthat (".") и sysfrwtstrhat ("+")


% Сопоставление систем во временной области
sysfrwthat_t=trsp(sysfrwthat,pulse);
integration step size: 0.0031801
interpolating input vector (zero order hold)
sysfrwtstrhat_t=trsp(sysfrwtstrhat,pulse);
integration step size: 0.0031618
interpolating input vector (zero order hold)

vplot(sys_t,'r-',sysfrwthat_t,'g--');
xlabel('Time:seconds');
vplot(sys_t,'k-',sysfrwtstrhat_t,'k--');
xlabel('Time:seconds');

Рис.8.9. Исходная модель sys и cбалансированная реализация sysfrwthat

Рис.8.10. Исходная модель sys и сбалансированная реализация sysfrwtstrhat

Второй метод особенно хорош для построения редуцированной модели, обеспечивающей удовлетворительную относительную взвешенную ошибку редукции, и реализуется посредством функции srelbal. Функция [sysb,relsv,sysfact]=srelbal(sys,tol) формирует стохастическую сбалансированную реализацию устойчивой системы sys (этот метод описан в [11]), причем количество столбцов передаточной матрицы системы sys должно быть не меньше, чем количество строк. Выходная сбалансированная модель sysb обладает той же передаточной матрицей, что и исходная модель sys, выходная система sysfact устойчива, минимальна по фазе, и такова, что выполняется равенство . Количество ганкелевых сингулярных значений, оказавшихся больше заданного числа tol, определяет порядок результирующей сбалансированной системы sysb. Дальнейшее понижение порядка системы можно провести, используя описанные выше функции, в том числе strunc. По умолчанию tol=. При этом, если [a,b,c,d]=unpck(sysb), [af,bf,cf,df]=unpck(sysfact), то система sysbf=pck(a,bf,c,0) является устойчивой частью системы , кроме того, она сбалансирована и имеет вектор relsv в качестве набора ганкелевых сингулярных значений. По аналогии с предыдущим методом имеет место оценка , а весовые матрицы в данном случае равны соответственно , . Применим функцию srelbal к рассматриваемой системе:


[sysrelbal,relsv,sysfact]=srelbal(sys);
sysrelbal7=strunc(sysrelbal,k);
sysrelbal7_f=frsp(sysrelbal7,omega);
disp(hinfnorm(msub(1,vrdiv(sysrelbal7_f,sys_f))))
  8.9994e-002
vplot('bode',sys_f,'k-',sysrelbal7_f,'k+');

sysrelbal7_t=trsp(sysrelbal7,pulse);
integration step size: 0.0031618
interpolating input vector (zero order hold)
vplot(sys_t,'k-',sysrelbal7_t,'k--');
xlabel('Time:seconds');
  

Рис.8.11. Частотные характериститки исходной модели sys ("-") и редуцированных sysrelbal7 ("+")

Рис.8.12. Исходная система sys и редуцированная система sysrelbal7

В работе [12] предлагается комбинировать контроль за относительной и абсолютной ошибками аппроксимации системы путем редукции модели относительной ошибки для искусственно введенной расширенной системы вида . Относительная ошибка имеет место при , а абсолютная - при . Результирующая аппроксимирующая передаточная матрица удовлетворяет условию , где норма сделана малой. Такой подход может быть реализован следующим образом:


alpha=15;
[sysrel,sigrel]=srelbal(abv(sys,alpha*eye(1)));
sysrel7=sel(strunc(sysrel,k),1,1);
sysrel7_f=frsp(sysrel7,omega);
disp(hinfnorm(msub(1,vrdiv(sysrel7_f,sys_f))))
3.4239e-001
vplot('bode',sys_f,'k-',sysrel7_f,'k+');

Рис.8.13. Частотные характериститки исходной модели sys ("-") и редуцированных sysrel7 ("+")

Подчеркнём, что представленные выше функции srelbal, sfrwtbal и sfrwtbld формируют сбалансированную реализацию лишь для устойчивых систем. В отличие от них, функция sncfbal работает не только с устойчивыми системами и строит сбалансированную реализацию для левой и правой факторизации рассматриваемой системы. Для входной системы sys с передаточной функцией формируются матрицы, образующие соответственно левую и правую факторизации, и , для которых выполняются равенства , , и , причем матрицы , , , устойчивы. Выходной вектор sncf является набором ганкелевых сингулярных значений, соответствующим сбалансированным реализациям sysnlcf и sysnrcf. Количество ганкелевых сингулярных значений, оказавшихся больше заданного числа tol, определяет порядок выходных сбалансированных реализаций. По умолчанию установлено значение tol=. Для понижения порядка результирующих систем sysnlcf и sysnrcf применяются приведенные выше функции strunc и hankmr. Рассмотрим возможное применение функции sncfbal.


[sysnlcf,sncf,sysnrcf]=sncfbal(sys);
minfo(sysnlcf);
system:   15 states     1 outputs     2 inputs
minfo(sysnrcf);
system:   15 states     2 outputs     1 inputs
% Использование функции strunc для редукции
sysnlcf_f=frsp(sysnlcf,omega);
sysnlcfr=strunc(sysnlcf,k);
sysnlcfr_f=frsp(sysnlcfr,omega);
sysrr=starp(mmult([-1;1],msub(sysnlcfr,[0 -1])),1,1, 1);
sysrr_f=frsp(sysrr,omega);
vplot('bode',sys_f,'k-',sysrr_f,'k:'); % Рис. 8.14.
% Использование функции hankmr для редукции
[sysnlcfrh,sig]=hankmr(sysnlcf,sncf,k);
sysnlcfrh_f=frsp(sysnlcfrh,omega);
sysrrh=starp(mmult([-1;1],msub(sysnlcfrh,[0 -1])),1,1,1);
sysrrh_f=frsp(sysrrh,omega);
vplot('bode',sys_f,'k-',sysrrh_f,'k:'); % Рис. 8.15.

Рис.8.14. Частотные характеристики исходной системы sys
и редуцированной системы sysrr

Рис.8.15. Частотные характеристки исходной системы sys
и редуцированной системы sysrrh


pulse=siggen('t<1',[0:0.1:200]);
sys_t=trsp(sys,pulse);
integration step size: 0.0031623
interpolating input vector (zero order hold)
sysrr_t=trsp(sysrr,pulse);
integration step size: 0.0031625
interpolating input vector (zero order hold)
sysrrh_t=trsp(sysrrh,pulse);
integration step size: 0.0031664
interpolating input vector (zero order hold)
disp(hinfnorm(msub(1,vrdiv(sysrr_f,sys_f))))
1.3174e+000
disp(hinfnorm(msub(1,vrdiv(sysrrh_f,sys_f))))
  3.2082e-001
vplot(sys_t,'k-',sysrr_t,'k:');
xlabel('Time:seconds');

Рис. 8.16. Исходная система sys и редуцированная система sysrr

vplot(sys_t,'r-',sysrrh_t,'m:');

xlabel('Time:seconds');

Рис.8.17. Исходная система sys и редуцированная система sysrrh

В случае если возникает необходимость разбить систему на две части - устойчивую и неустойчивую, такая возможность предоставляется функцией sdecomp:


sys=zp2sys([],[0 1 -10],10);
[sysst,sysu]=sdecomp(sys);
% Устойчивая система
minfo(sysst);
disp(spoles(sysst))
system:   1 states     1 outputs     1 inputs     
   -10
% Неустойчивая система
minfo(sysu);
disp(spoles(sysu))
system:   2 states     1 outputs     1 inputs     
  1.0000e+000
  8.6270e-019

Литература к первой главе:

  1. Леонтьева Т.А., Панферов В.С., Серов В.С. Задачи по теории функций комплексного переменного. - М.: Изд-во МГУ, 1992. - 255 с.
  2. Веремей Е. И., Петров Ю.П. Управляемость линейных систем при на-личии возмущающих воздействий. Деп. В ВИНИТИ, № 1984-77 от 20 мая 1977 г. - 19 с.
  3. Бокова Я. М., Веремей Е. И. Вычислительные аспекты спектрального метода H -оптимального синтеза // Теория и системы управления. 1995. - №4. - С. 88 - 96.
  4. Doyle J., Francis B., Tannenbaum A. Feedback control theory. - New York: Macmillan Publ. Co., 1992. - XI, 227 p.
  5. Барабанов А. Е., Первозванский А. А. Оптимизация по равномерно-частотным показателям (H-теория) // Автоматика и телемеханика. 1992. № 9. С. 3-32.
  6. Алиев Ф. А., Ларин В. Б., Науменко К. И., Сунцев В. Н. Оптимизация линейных инвариантных во времени систем управления. - Киев: Нау-кова думка, 1978. - 327 с.
  7. Francis B.A. A course in H control theory. - Berlin: Springer-Verlag, 1987. - (Lecture Notes in Control and Information Sciences; Vol. 88).
  8. Francis B.A. Linear Systems. - Toronto: University of Toronto, 2002. - Lecture Notes.
  9. Икрамов Х.Д. Численное решение матричных уравнений. - М.: Наука. Главная редакция физико-математической литературы, 1984. - 192 с.
  10. Latham, G.A. and B.D.O. Anderson. Frequency-weighted optimal Hankel norm approximation of state transfer functions // Systems and Control Letters, vol. 5, pp. 229-236, 1985.
  11. Desai, U.B. and D. Pal, A transformation approach to stochastic model reduction // IEEE Transactions of Automatic Control, vol. AC-29, pp. 1097-1100, 1984.
  12. K. Glover. Multiplicative approximation of linear multivariable systems with L error bounds // Proceedings of the American Control Conference, Seattle, pp. 1705-1709, 1986.

В оглавление книги \ К следующему разделу \ К предыдущему разделу


Поиск по сайту:

Система Orphus

Яндекс.Метрика