![]() Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Использование символьных преобразований для исследования систем управления
При исследовании систем управления стандартными средствами MATLAB результат получается в численной форме. Однако при проведении исследований часто бывает важно исследовать результат в аналитической (символьной) форме. 3.4.1. Использование символьных преобразований в среде MATLAB. В системе MATLAB символьные вычисления реализуются средствами Symbolic Toolbox. В состав пакета включено ядро системы символьных вычислений MAPLE V, разработанное фирмой Waterloo MAPLE Software (Canada). Пакет Symbolic добавил системе MATLAB существенно новое свойство – возможность выполнения символьных вычислений и преобразований, которые ранее были доступны только в системах принципиально иного класса, относящихся к компьютерной алгебре. Применяя Symbolic Toolbox, можно легко в единой среде выполнять как численные, так и символьные вычисления без ущерба для скорости и точности вычислений. Помимо типовых аналитических вычислений (символьное дифференцирование и интегрирование, упрощение математических выражений и т.п.) пакет Symbolic позволяет выполнять арифметические выражения с произвольной точностью. Базовые символьные операции. Переменные среды MATLAB не определены и обычно задаются как числовые или матричные. Поэтому в первую очередь необходимо создать специальные символьные переменные. В простейшем случае их можно определить как строковые переменные, то есть заключить в апострофы: Пример: >>sin('x')^2+cos('x')^2 ans = 1 Для объявления символьной переменной используется оператор sym, например: x=sym('x') – создание символьной переменной Чаще всего, для задания символьных переменных используется команда syms arg1 arg2 … – короткая запись последовательности функций sym: arg1=sym('arg1'); arg2=sym('arg2'); … Преобразования объектов. Для преобразования объектов между символьной и числовой формами представления в MATLAB используются следующие команды: r=double(S) – преобразование символьного объекта S в число (или массив) удвоенной точности; r=poly2sym(c) – возвращение символьного представления полинома, коэффициенты которого записаны в векторе с. c=sym2poly(r) – обратное преобразование символьного полинома в вектор-строку коэффициентов c.
Аналитические преобразования. Одни из наиболее часто используемых команд в системах компьютерной алгебры – это команды для выполнения символьных преобразований. Приведем их список: r=simplify(s) – упрощает каждый элемент символьного массива s; r=expand(s) – раскрывает каждый элемент символьного массива s. r=factor(s) – разлагает полиномы на множители; r=collect(s) – собирает однородные члены по степеням переменной х; r=simple(s) – упрощает символьное выражение (выводит его в самой короткой форме). [N, D] = numden(A) – преобразовывает каждый элемент символьного массива А к рациональной форме в виде отношения двух неприводимых полиномов с целыми коэффициентами; N и D – символьные массивы числителей и знаменателей элементов массивов. Пример. 3.2. Символьное преобразование передаточных функций. Рассмотрим разомкнутую систему с передаточной функцией
Определим передаточную функцию (используя команды Symbolic toolbox):
>>Gs=sym('1')/sym('(s+1)*(5*s+1)') Gs= 1/(s+1)/(5*s+1)
Исследуем реакцию на единичный скачок объекта с единичной обратной связью без регулятора. Передаточные функции замкнутой системы по команде и ошибке: Определим их в MATLAB:
>>Gc=simplify(Gs/(sym('1')+Gs)) Gc= 1/(2 + 5*s^2 + 6*s) >>Ge=simplify(sym('1')/(sym('1')+Gs)) Ge= (s+1)*(5*s+1)/(2 + 5*s^2 + 6*s)
Для исследования реакции системы преобразуем символьные передаточные функции сначала в вектор-строки, а затем в объекты LTI:
% Выделяем числители и знаменатели >>[NGc, DGc] = numden(Gc); >>[NGе, DGе] = numden(Gc); % Преобразуем символьные объекты в переменные типа ”передаточная функция” >>numGc = sym2poly(expand(NGc)) >>denGc = sym2poly(expand(DGc)) >>Gclti=tf(numGc,denGc) >>numGe = sym2poly(expand(NGe)) >>denGe = sym2poly(expand(DGe)) >>Gelti=tf(numGe,denGe) % Построим переходные процессы >>subplot(211), step(Gclti), title('Выход'), grid on >>subplot(212), step(Gelti), title('Ошибка'), grid on Рис. 3.2
В результате получим графики переходных процессов (рис.3.2). 3.4.2. Использование пакета MAPLE V для исследования устойчивости систем управления. Приведем краткое описание системы MAPLE, необходимое для понимания дальнейшего материала. Работа в MAPLE происходит в режиме сессии – пользователь вводит предложения (команды, выражения и процедуры), которые воспринимаются и интерпретируются MAPLE. При этом документ MAPLE разделяется на три части: область ввода (Input Region), которая состоит из набираемых предложений, область вывода (Output Region) и текстовые комментарии (Text Region). Эти области в документах MAPLE выделяются различными цветами. Область вывода может включать как результаты выполнения математических операций в виде формул, так и графические образы. Символом приглашения системы к вводу команд является “>”. Каждая команда должна завершаться разделителем: точкой с запятой (;) или двоеточием (:). При построении выражений, как и в алгоритмическом языке Паскаль, знаком присваивания является “:=”. Переменные в MAPLE не объявляются, а определяются при присваивании им значений исходя из контекста. По умолчанию переменная считается скалярной и имеющий строковый тип, фактически это математическая переменная. Для задания массивов их нужно объявить командой array, например > A := array(1..2,1..2, [[a,b],[c,d]]); Здесь для указания размерности массива использован знак диапазона: две идущие подряд точки. Данные в массивах задаются в виде списков. Списки – это упорядоченные последовательности данных, заключенные в квадратные скобки. В данном случае каждая строка массива задана в виде списка – [a,b] и [c,d]. Сам массив также определен в виде списка, состоящего из подсписков. Для описания матрицы в MAPLE используется двухмерный массив, для вектора – одномерный массив, индексы которых начинаются с единицы. Для задания матриц и векторов можно использовать команду array. Для описания векторов и матриц можно также использовать команды пакета линейной алгебры linalg. Команда описания матрицы из пакета linalg имеет вид: > matrix(n,m,[val1, val2, … ]) Здесь n – число строк матрицы; m – число столбцов; val1, val2, … – значения элементов матрицы. Для описания вектора используется команда > vector(n,[val1, val2, … ]) где n – размерность вектора; val1, val2, … – значения элементов. Если опущен параметр размерности, то размерность вектора определяется числом его элементов. Наиболее часто используемые команды MAPLE – это операции аналитического преобразования формул: simplify(f) – упрощение выражения f;
expand(f) – раскрытие скобок в выражении f; factor(f) – разложение на множители; collect(expr,var) – приведение подобных членов в выражении expr относительно переменной var. Команда subs(old=new, expr) выполняет подстановку выражения new вместо old в выражение expr. Для нормализации дроби (сокращения общих множителей и приведения к виду числитель/знаменатель) используется команда normal(expr). Команды numer(expr) и denom(expr) выделяют соответственно числитель и знаменатель из рациональной дроби expr. Команда coeffs(poly,var) вычисляет коэффициенты полинома poly при переменной var; результат операции – переменная типа "список" (list), содержащая неупорядоченные коэффициенты. Для выделения вещественной и мнимой частей выражения expr используются команды соответственно Re(expr) и Im(expr). Команда diff(expr, var) выполняет дифференцирование выражения expr по переменной var. Для аналитического решения уравнений используется команда solve(eqns,vars), где eqns – уравнение или система уравнений; vars – переменная или группа уравнений в фигурных скобках. Исследование устойчивости линейных систем. Рассмотрим методы и алгоритмы анализа устойчивости линейных систем с использованием системы аналитических вычислений (компьютерной алгебры) MAPLE V. Пример 3.3. Рассмотрим задачу определения характеристического уравнения для системы спутник-стабилизатор в центральном ньютоновском поле тяготения на круговой орбите со скоростью v. Малые колебания системы спутник-стабилизатор в плоскости орбиты в окрестности положения равновесия описываются системой уравнений
Здесь a1, a2 – углы, определяющие отклонения спутника и стабилизатора от направления радиус-вектора R центра системы; Определим матрицу системы в MAPLE:
> А = matrix(4,4,[[0,0,1,0], [0,0,0,1], [-(3*(A1-C1)+k2)/B1, k2/B1, -k1/B1, k1/B1], [k2/B2, -(3*(A2-C2)+k2)/B2, (k1/B2), (-k1/B2)];
Для вычисления характеристического многочлена матрицы A относительно переменной lambda используем команду charpoly:
> pol:=charpoly(A,lambda); pol:=(l4 B1 B2+l3 B1 k1 + l3 k1 B2 + 3 A2 l2 B1 + 3l A2 k1 – 3C2 l2 B1 –3l C2 k1 + k2 l2 B1 + 3 k1 A1 – 3k1 C1 – k2 l B1)/(B1 B2) > pol:=collect(pol,lambda);
Определим численные значения параметров:
> A1:=80; B1:=100; C1:=20; k1:=20; > A2:=90; B1:=120; C1:=60; k1:=20; > pol;
Для исследования устойчивости по уравнениям первого приближения необходимо исследовать знаки вещественных корней характеристического уравнения. Необходимые и достаточные условия, при которых характеристическое уравнение системы имеет все корни с отрицательными вещественными частями, даются критерием Рауса – Гурвица. Пример 3.4. Определить, является ли нулевое решение системы разностных уравнений асимптотически устойчивым. Определим матрицу системы в среде MAPLE: > a:=array(1..3,1..3,[[0.1,0,0.2],[0.4,0.2,0.5], [-0.1,-0.2,0.3]]); [.1 0 .2] [ ] a := [.4 .2 .5] [ ] [-.1 -.2 .3]
Характеристический полином
> charp:=charpoly(a,x);
3 2 charp := x - .6 x + .23 x - .004
Делаем замену переменной
> x:=(1+y)/(1-y); 1 + y x := ----- 1 - y
> pol1:=subs(x=(1+y)/(1-y),charp);
3 2 (1 + y) (1 + y) 1 + y pol1 := -------- - .6 -------- + .23 ----- - .004 3 2 1 - y (1 - y) (1 - y)
> pol2:=normal(pol1);
2 3 .626 + 2.182 y + 3.358 y + 1.834 y pol2 := - ------------------------------------ 3 (-1 + y)
> nm:=-numer(pol2);
2 3 nm := .626 + 2.182 y + 3.358 y + 1.834 y
> cf:=coeffs(nm,y);
cf := 2.182, 3.358, 1.834, .626
Все коэффициенты характеристического полинома больше нуля. Вычислим определитель Гурвица
> delta:=cf[2]*cf[1]-cf[3]*cf[4];
delta := 6.179072
Так как определитель тоже положителен, система устойчива. |
||
Последнее изменение этой страницы: 2018-04-12; просмотров: 332. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |