|
Матлаб. К. Ю. Петрова введение в matlab учебное пособие
funtool. Он позволяет выполнять различные манипуляции с двумя функциями f(x) и g(x) от одной переменной, например, их складывать, перемножать, интегрировать. Задачи и упражнения 1. Кривые на плоскости. Используя команду plot, построить графики заданных плоских кривых: а) кардиоида t t y t t x 2 sin sin 2 , 2 cos cos 2 (траектория точки, лежащей на окружности, которая катится по кругу того же радиуса); б) нефроида t sin t sin y , t cos t cos x 3 3 3 3 (траектория точки, лежащей на окружности, которая катится по кругу, радиус которого в два раза больше); в) дельтоида t sin t sin y , t cos t cos x 2 2 2 2 (траектория точки, лежащей на окружности, которая катится по внутренней стороне другой окружности, радиус которой в три раза больше); г) астроида t sin t sin y , t cos t cos x 3 3 3 3 (траектория точки, лежащей на окружности, которая катится по внутренней стороне другой окружности, радиус которой в четыре раза больше). 2. Собственные векторы. Дана матрица 0 2 3 1 a a a A Требуется найти ее собственные векторы и написать MATLAB-программу, которая при заданных 3 2 1 , , a a a находит собственные векторы и изображает их на плоскости. 23 3. Три матрицы. Для заданных матриц найти характеристический полином, собственные числа и собственные векторы а) ; 18 3 24 1 б) ; 1 1 1 2 1 2 2 1 4 в) 1 1 1 1 0 0 0 1 0 Ответ: а) 2 +19 +90 б) 3 +6 2 +11 +6 в) 3 + 2 + +1 [ 1 , 2 ] =[-9 -10] [ 1 , 2 , 3 ] = [-1 -2 -3] [ 1 , 2 , 3 ] = [-1 i - i] 3 1 8 3 H0 1 1 1 0 1 1 1 1 H1 1 1 1 1 1 1 iiH4. Типы телосложения. Существуют три типа телосложения: астено-торакальный (худой, тощий), мышечный (атлетический) и дигестивный (толстый, тучный). Астено-торакальные люди выносливы, способны к монотонным длительным нагрузкам. Они хороши для бега на длинные дистанции, лыж, гребли, велосипеда, спортивной ходьбы. По натуре это стайеры – и в спорте и в жизни. Дигестивные люди хорошо справляются с интенсивными импульсными нагрузками, у них широкие кости и сильные мышцы. Спорт – толкание ядра, штанга. По натуре это спринтеры. В жизни они энергичны, подвижны, легко переключаются с одного дела на другое. Чтобы определить тип телосложения, используется формула T=P/H 3 , где P – вес в килограммах, Н – рост в метрах. Чем выше T, тем плотнее (упитаннее) человек. Для мужчин, если T <11.5, то тип астено-торакальный, если 11.5< T <13, то тип мышечный, если T >13, то тип дигестивный. Для женщин границы сдвинуты на 1 вверх. Требуется составить MATLAB-программу и построить кривые, которые делят плоскость (P, H) на области, соответствующие каждому типу и определяет тип телосложения по росту и весу (для мужчин и женщин). 5. Вложенные корни. Функция ) ( ny определена равенством nny 3 2 1 ) ( Требуется составить MATLAB-программу для ее вычисления, найти ) 9 ( y и построить график ) ( nyРешение. Найти ) 9 ( y можно, набрав в командном окне явную формулу >>y=sqrt(1+sqrt(2+sqrt(3+sqrt(4+sqrt(5+sqrt(6+sqrt(7+sqrt(8+sqrt(9))))))))), что даст ответ y =1.7579 Для вычисления результата при любом n составим программу-функцию sqrt1234, используя оператор for. function y=sqrt1234(n) %задача про вложенные корни y(n)=sqrt(n); for i=n-1:-1:1, y(i)=sqrt(i+y(i+1)); end y=y(1); Вычисляя sqrt1234(9), вновь получим ans =1.7579 Для построения графика ) ( ny составим программу-сценарий sqr. 24 %Program sqr % программа sqr.m использует функцию sqrt1234(n) for j=1:10, y(j)=sqrt1234(j); end, plot(y,'*'), grid 6. Световое табло. Сто светящихся кнопок расположены в виде квадрата 10х10. При нажатии любой кнопки она и все, находящиеся с ней в одном ряду и в одном столбце, меняют свое состояние на противоположное (светящиеся гаснут, а несветящиеся загораются). Какое наименьшее число кнопок нужно нажать, чтобы все кнопки оказались погашенными, если сначала они все светились? Для проведения экспериментов в MATLAB составьте программу, позволяющую проверять разные стратегии нажатия кнопок. Указание. Исходное состояние табло изобразим матрицей 10х10 >> a0=ones(10); a0= 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 После нажатия кнопки a(k,l) исходная матрица a0 преобразуется по правилу >>a0(k,:)=a0(k,:);a0(:,l)=a0(:,l);a0(k,l)=a0(k,l);a=a0; где знак тильда означает логическое отрицание. Рассмотрите стратегии: обход табло по спирали до центра; обход "змейкой" (строка за строкой).
25 2. Моделирование линейных систем в MATLAB 2.1. Способы описания линейных систем Прежде чем рассматривать вопросы моделирования динамических систем в MATLAB, напомним основные определения. Рассмотрим систему S с входом u и выходом y (рис. 2.1). Если мгновенное значение выхода ) (t y зависит от предыстории, система называется динамической. Системы с одним входом и одним обозначаются английской аббревиатурой SISO – Single Input Single Output. Системы с несколькими входами и выходами (рис. 2.2) обозначаются MIMO – Multiple Input Multiple Output. В этом случае входы и выходы системы часто записывают в виде векторов, например, , 2 1 2 1 y y y u u u S u y Рис. 2.1 S 1 u 1 y 2 u 2 y Рис. 2.2 Понятие динамической системы весьма широко. Наиболее хорошо изученными и удобными для анализа являются линейные стационарные динамические системы (LTI – Linear Time Invariant systems). Для исследования и моделирования таких систем предназначен тулбокс CONTROL, входящий в семейство специальных библиотек пакета MATLAB. Он содержит около 60 команд, служащих для формирования линейных моделей, их анализа, преобразования и моделирования. В данном разделе ограничимся рассмотрением линейных систем с одним входом и одним выходом (рис. 2.1). Они могут быть заданы передаточной функцией или матричным описанием в пространстве состояния. Напомним, что передаточной функцией линейной системы называется отношение изображения по Лапласу выходного сигнала y(p) к изображению по Лапласу входного сигнала и(p) при нулевых начальных условиях: ) ( ) ( ) ( p u p y p Q Например, передаточная функция интегратора равна , 1 p передаточная функция апериодического звена , 1 Tp k передаточная функция идеального колебательного звена 2 2 p k Передаточная функция линейной системы n-го порядка представляет собой отношение двух полиномов: , ) ( 0 1 1 0 1 1 n m a p a p a b p b p b p Q n n n n m m m m
26 Корни z1 , …, zm числителя B( p) называются нулями системы ( zeros), корни p1 , .., pnзнаменателя A( p) – полюсами системы ( poles). Знание нулей и полюсов позволяет представить описание системы в виде , ) ( ) ( ) ( ) ( ) ( 1 1 nmppppzpzpkpQ где коэффициент nmabk/ В MATLAB полиномы B( p) и A( p) представляются векторами-строками их коэффициентов: num=[ bm, …, b0 ] и den=[ an, …, a0 ], а нули и полюсы – векторами-столбцами z и р: z=[ z1 , …, zm] Т , p=[ p1 , …, pn] Т . Например, для передаточной функции третьего порядка 2 5 3 4 6 2 ) ( 2 3 2 ppppppQимеем num=[2 -6 4], den=[1 3 5 2]. Для создания модели, заданной в виде передаточной функции, используется конструктор tf (от Transfer Function). Его входными параметрами являются массивы коэффициентов числителя и знаменателя, например, по команде sys=tf(2,[3 1]) будет сформирована система sys с передаточной функцией 1 3 2 p Доступ к числителю и знаменателю объекта, заданного в виде передаточной функции, можно получить, обращаясь к полям num и den. Так, набрав sys.num{1}, получим ответ ans = 0 2, а набрав sy s.den{1}, получим ans = 3 1. Другой способ задания линейных систем – описание в пространстве состояний. Оно включает четыре матрицы A, B, C, D и имеет вид: , , DUCXYBUAXX где YU , – векторы входных и выходных сигналов, TnxxX] [ 1 – вектор состояния, DCBA, , , – постоянные матрицы. Если у системы один вход и один выход, то B – вектор-столбец, С – вектор-строка, D – число (часто равное нулю). Для того чтобы создать в MATLAB объект, заданный описанием в пространстве состояний, используется конструктор ss (от State Space – пространство состояний). Его входными параметрами служат матрицы А, B, C, D системы. Пример. Объект второго порядка описывается уравнениями 7 , 4 5 3 , 2 2 1 2 1 2 2 1 1 xxyuxxxxxx Им соответствуют следующие матрицы описания в пространстве состояний: 0 , 7 1 , 4 0 , 5 3 1 2 DCBAЧтобы ввести это описание в MATLAB, следует набрать текст: >>A=[-2, 1; 3, -5]; B=[0; 4]; C=[1, 7]; D=0; sys=ss(A, B, C, D). 27 Доступ к полям a, b, c, d созданного ss-объекта можно получить так же, как к полям num и den tf-объекта, например, набрав sys.c, получим ответ ans=1 7. Мы рассмотрели два способа представления линейных моделей в MATLAB – с помощью передаточной функции Q(p) (tf-модель) и в пространстве состояний DU CX Y BU AX X , (ss-модель). Аналитическая связь между этими описаниями дается формулой D B A pE C p Q 1 ) ( ) ( В MATLAB переход от ss-модели к tf-модели можно осуществить, используя конструктор tf с аргументом в виде исходной ss-модели. Обратный переход выполняется при помощи команды ss с аргументом в виде tf-модели. Выполним переход к передаточной функции для нашего примера, набрав sys1=tf(sys). На экране появится текст: transfer function , 7 7 60 28 2 s s s извещающий о том, что сформирована tf-модель sys1 с указанной передаточной функцией. Если после этого ввести команду sys2=ss(sys1), то мы снова получим ss-модель, однако матрицы A, B, C, D в ней будут уже иными: 0 , 75 3 5 3 , 0 8 , 0 2 5 3 7 d c b a Тем не менее, системы sys и sys2 эквивалентны, поскольку у них одинаковые передаточные функции (в этом можно убедиться с помощью команды tf(sys2)). Они представляет собой две различные реализации одной и той же системы в пространстве состояний. В MATLAB имеется еще один способ описания систем – нуль-полюсное или zpk-описание. Оно получается в результате разложения на множители числителя и знаменателя передаточной функции. Zpk-представление передаточной функции имеет вид , ) ( ) ( ) ( ) ( ) ( 1 1 n m p p p p z p z p k p Q где n m a b k – коэффициент усиления (gain). Такое описание создается конструктором zpk, который можно использовать также для перехода от ss-модели или tf-модели к zpk-описанию. В частности, выполняя команду sys3=zpk(sys2), получим систему с описанием ) 209 , 1 )( 791 , 5 ( ) 143 , 2 ( 28 s s s Доступ к отдельным элементам zpk-модели осуществляется так же, как и для tf-моделей, например, sys3.z даст ans=[-2.1429], т.е. нули системы. Отметим возможность объединения нескольких моделей в более сложные системы. Например, произведение sys=sys1*sys2 означает последовательное соединение систем sys1 и sys2, а сумма sys=sys1+sys2 означает их параллельное соединение. Можно использовать также знаки вычитания и деления – , / (подумайте, какому соединению они соответствуют?). 2.2. Моделирование линейных систем Главная цель моделирования – получение реакции системы на те или иные входные сигналы. Входные воздействия могут быть стандартными (единичный скачок, импульс, синусоида), либо произвольными, когда входной сигнал формируется как некоторая функция времени.
28 В теории линейных систем широко используются две временные характеристики систем – импульсная весовая функция и импульсная переходная характеристика. Импульсной весовой функцией q(t) называется реакция системы на входной сигнал в виде дельта-функции, т.е. на бесконечно короткий импульс единичной площади, действующий в момент времени t=0. Импульсной переходной характеристикой (переходной функцией) h(t) называется реакция системы на входной сигнал в виде единичной ступеньки (такой сигнал может рассматриваться, как интеграл от дельта-функции). Весовая и переходная функции связаны соотношением ). ( ) ( t h dt d t q Изображения по Лапласу дельта-функции и единичного скачка равны 1 и 1/p соответственно. Изображение весовой функции по Лапласу равно передаточной функции системы, а изображение переходной характеристики равно передаточной функции, деленной на р. Отсюда вытекает возможность получения весовой функции с помощью обратного преобразования Лапласа от передаточной функции. Например, передаточная функция интегратора , 1 ) ( p p Q поэтому его весовая функция q(t)=1; передаточная функция апериодического звена , ) ( a p b p Q поэтому его весовая функция имеет вид ) ( at be t q Аналогично, для колебательного звена с передаточной функцией 2 2 ) ( k p k p Q для весовой функции получаем sin ) ( kt t q Эта возможность отыскания весовой функции по известной передаточной функции реализуется в MATLAB командой ilaplace тулбокса SYMBOLIC, выполняющей обратное преобразование Лапласа (inverse Laplace). В частности, для получения весовой функции колебательного звена достаточно набрать syms k p; q=ilaplace(k/(p 2 +k 2 ), чтобы получить результат q=sin(k*t). Команда laplace служит для выполнения обратной операции. Например,чтобы получить изображение по Лапласу функции sin 10t, достаточно набрать: >>sym p, t; y=laplace(sin(10*t), t,p). Получаем ответ: y=10/(p^2+100), т.е. 100 10 ) ( 2 p p y Другой путь аналитического получения весовой и переходной функций связан с символьным решением дифференциальных уравнений. Если система задана описанием в пространстве состояний (ss-модель) , , cX y bu AX X то дифференциальные уравнения для весовой функции q и переходной характеристики h имеют вид 0 ) 0 ( , , ; ) 0 ( , , X cX h b AX X b X cX q AX X Например, описание в пространстве состояний апериодического звена с передаточной функцией a p b p Q ) ( имеет вид , x y bu ax x Его весовая функция является решением дифференциального уравнения
29 , ) 0 ( , 0 bxaxx откуда ) ( atbetq Для получения переходной функции надо решить неоднородное дифференциальное уравнение 0 ) 0 ( , xbaxx Его решение получаем, складывая общее решение однородного уравнения atоднCex и частное решение неоднородного уравнения : / baxчаст 1 / ) ( atatebabaCeth Постоянная С найдена из начального условия h(0)=0. Этот способ отыскания весовой и переходной функций может быть реализован в MATLAB с помощью команды |
|
|