Control System Toolbox (1086791), страница 3
Текст из файла (страница 3)
а грамиан наблюдаемости — интегралом
Для дискретных моделей аналогами грамианов управляемости и наблюдаемости служат выражения
Грамиан управляемости положительно определен тогда и только тогда, когда пара матриц {А,В} является управляемой. Аналогично грамиан наблюдаемости положительно определен тогда и только тогда, когда пара матриц {А,С} является наблюдаемой.
Функция Gc = gram(sys, 'с ' ) вычисляет грамиан управляемости для непрерывной или дискретной ss-модели.
Функция Go = gram (sys, 'о' ) вычисляет грамиан наблюдаемости для непрерывной или дискретной ss-модели.
Функция obsv формирует матрицу наблюдаемости для модели в пространстве состояний:
Ob = obsv (А, С) Ob = obsv (sys)
Система является наблюдаемой, если матрица наблюдаемости имеет полный ранг. Возвращаемая величина Ob — матрица наблюдаемости, имеющая р строк (р — количество выходов) и п столбцов и описываемая соотношением
Пример применения функции obsv:
>> А =[[1 1]; [4 -2]]; С = [[1 0]; [0 1]];
>> Ob = obsv(А,С); unob = length(A)-rank(Ob)
unob =0
Функция obsvf формирует так называемую каноническую форму наблюдаемости:
[Abar,Bbar,Cbar,T,k] = obsvf(А,В,С)
[Abar,Bbar,Cbar,T,k] = obsvf (А, В, С, tol)
Если матрица наблюдаемости для пары {А, С} имеет ранг r < п, где п порядок матрицы А, то существует преобразование подобия вида
где Т — унитарная матрица, при которой преобразованная система имеет блочно-треугольную форму с ненаблюдаемыми модами, расположенными в верхнем левом углу:
Такая форма называется канонической формой наблюдаемости.
Пара матриц {Аo, Вo } является наблюдаемой, так что справедливо соотношение
Сo(рI -Ao)-1Bo=C(pI-A)-1B,
то есть передаточная функция всей системы совпадает с передаточной, функцией ее наблюдаемой части, а все моды, соответствующие собственным значениям матрицы Аnо, являются ненаблюдаемыми.
Функция [Abar,Bbar,Cbar,T,k] = obsvf(А,В,С) преобразует ss-модель, описываемую тройкой матриц [А, В, С], в каноническую форму наблюдаемости [Abar, Bbar, Cbar]. Матрица Т описывает преобразование подобия, а элементы вектора k указывают количество наблюдаемых мод, выделенных на каждом шаге расчета матрицы преобразования. Число ненулевых элементов вектора k показывает, сколько итераций потребовалось для расчета матрицы Т, а величина sum(k) указывает число канонических переменных состояния, соответствующих наблюдаемой части матрицы Abar.
Пример применения функции obsvf:
>> А = [[1 1]; [4 -2]]; В = [ [1 -1]; [1 -1]]; С = [[1 0]; [0 1]];
>> [Abar,Bbar,Cbar,T,k] = obsvf(А,В,С)
Abar =
1 1
-
-2
Bbar =
-
-1
1 -1
Cbar =
-
0
0 1
T =
-
0
-
1
k =
-
0
Функция ssbal выполняет масштабирование ss-моделей:
[sysb,T] = ssbal(sys) [sysb,T] = ssbal(sys,condT)
Рассматриваемая функция выполняет масштабирование матриц ss-модели, используя преобразование подобия с диагональной матрицей Т и скаляром а такими, что матрица
имеет малые числа обусловленности по отношению к задаче на собственные значения.
Функция [sysb, Т] = ssbal(sys) возвращает масштабированную модель sysb, описываемую четверкой {ТАТ"1, ТВ/а, аСТ"1, D}, и матрицу преобразования Т, такую что = Тх, где — новый вектор состояния модели.
Функция [sysb, Т] = ssbal (sys, condT) задает верхнюю границу числа обусловленности condT для матрицы Т. Поскольку масштабирование при плохо обусловленной матрице Т может приводить к росту ошибок округления, задание величины condT дает возможность контроля данных ошибок.
Функция ss2ss осуществляет преобразование ss-модели при переходе к новому базису:
sysT = ss2ss(sys,T).
Для заданной ss-модели sys рассматриваемая функция выполняет преобразование вектора состояния = Тх и создает эквивалентную модель sysT, описываемую системой уравнений:
Функция sysT = ss2ss(sys,T) возвращает преобразованную модель sysT, используя исходную модель sys и матрицу преобразования Т (данная матрица должна быть невырожденной). Функция применима как к непрерывным, так и к дискретным моделям.
7.3.6. Модели динамики
Модели динамики одни из наиболее применяемых. В группу функций для
работы с такими моделями входит 14 функций. Рассмотрим основные из них:
Функция bandwidth вычисляет ширину полосы SISO модели sys:
fb = bandwidth(sys) fb = bandwidth(sys,dbdrop)
Измерения выполняются на уровне -3 дБ в первом случае и dbdrop во втором.
Функция сovaг возвращает матрицу ковариаций сигнала на выходе
устойчивой линейной модели с постоянными параметрами при действии на входах возмущений типа белого шума:
Р = covar(sys,W)
[P,Q] = covar(sys,W)
Здесь sys — имя модели и W — матрица интенсивностей входного сигнала. Возвращаемые величины: Р — матрица ковариаций выходов и Q — матрица ковариаций переменных состояния.
Функция damp возвращает собственные частоты и коэффициенты демпфирования LTI-модели:
[Wn,Z] = damp (sys)
[Wn,Z,P] = damp(sys)
Функция damp предназначена для расчета собственных чисел и коэффициентов демпфирования, соответствующих полюсам LTI-модели sys. Если функция вызывается без выходных аргументов, тб на дисплей выводится таблица собственных значений Р, соответствующих им собственных частот Wn и коэффициентов демпфирования Z.
Функция dcgain возвращает статический коэффициент передачи (матрицу таких коэффициентов в многомерном случае) LTI-модели:
k = dcgain(sys)
Рассмотрим пример. Пусть дискретная передаточная функция имеет вид
Создадим ее tf-модель, а затем найдем матрицу статических коэффициен-
тов усиления:
>> W=tf(l [1 -1], [1 1 3]); tf (1, [1 I]) tf ([1 2], [1 -3])]
Transfer function from input 1 to output...
#1: 1
1
#2: -------
s + 1
Transfer function from input 2 to output...
s - 1
#1: ------------------
s^2 + s + 3
s + 2
#2: -----------
s - 3
>> cdcgain(W)
ans =
1.0000 -0.333.3
1.0000 -0.6667
Используя свойства преобразования Лапласа, нетрудно убедиться в правильности ответа.
Функция dsort сортирует полюсы дискретной LTI-модели в порядке убывания их модулей. Неустойчивые полюсы располагаются в начале списка:
s = dsort(p)
[s,ndx] = dsort(p)
Функция eig вычисляет полюсы LTI модели:
d = eig(A) d = eig(A,B) [V,D] = eig(A)
[V,D] = eig(A,B) [V, D] = eig (A, B,.flag)
[V,D] = eig(A,'nobalance')
Пример применения этой функции для сортировки матрицы В:
>> В = [ 3 -2 -.9 2*eps
-2 4 1 -eps
-eps/4 eps/2 -1 0
-.5 -.5 .1 1 ];
>> [VB,DB] = eig(В)
>> B*VB - VB*DB
>> [VN,DN] = eig(B,'nobalance')
>> B*VN - VN*DN
VB = …
DB= …
ans = …
VN = …
DN = ….
ans = …
Функция esort сортирует полюсы непрерывной LTI-модели в порядке убывания значений их действительной части:
s = esort(p) [s,ndx] = esort(p)
Неустойчивые полюсы располагаются в начале списка. В этой функции р — вектор-строка полюсов модели; s — вектор, содержащий отсортированные полюсы; ndx — вектор, содержащий индексы, использованные при сортировке.
>>p = [
-0.2410+ 0.55731
-0.2410- 0.55731
0.1503
-0.0972
-0.2590]
>>esort(p)
ans =
0.1503
-0.0972
-0.2410 + 0.5573i
-0.2410 - 0.5573i
-0.2590
Функция norm предназначена для вычисления норм типа || ||2 или || ||, для
непрерывной или дискретной LTI-модели (норма равна бесконечности для неустойчивых систем):
norm(sys) norm(sys,2) norm (sys, inf)
norm(sys,inf,tol) [ninf,fpeak] = norm(sys)
Отметим, что норма ||W(p)||2 устойчивой непрерывной системы с передаточной матрицей W(p) — это квадратный корень из среднего значения квадрата импульсной характеристики системы, а при переходе к преобразованию Лапласа данная норма, в соответствии с теоремой Парсеваля, определяется соотношением
где tr{} — обозначение следа матрицы, W*(j) — матрица, сопряженная по отношению к W(j).
Норма || ||, равна максимальному значению модуля частотной характеристики:
-
для одномерных моделей
-
для многомерных моделей
где max – максимальное сингулярное число матрицы W(j), то есть неотрицательный корень квадратный из максимального собственного числа матрицы W*(j) W(j);
-
для дискретной модели
Аргументы функции norm следующие:
-
sys – имя модели;
-
2 – задание нормы || ||2 ;
-
inf - задание нормы || ||
-
tol – точность при расчете нормы, по умолчанию tol= 1е-2.
Возвращаемые величины:
-
ninf – норма модели ( по умолчанию - || ||2 );
-
speak – частота, на которой нора достигает максимального значения.
Пример применения функции norm:
>> H = tf([1 -2.841 2.875 -1.004], [1 -2.417 2.003 -0.5488], 0.1)
Transfer function:
z^3 – 2.841 z^2 +2.875 z –1.004
---------------------------------------
z^3 - 2.417 z^2 + 2.003 z - 0.5488
Sampling time: 0.1
>> norm(H)
ans =
1.2438
Функция pole возвращает вектор, элементами которого являются полюсs LTI-модели:
p = pole(sys)
Пример: