Матлаб. К. Ю. Петрова введение в matlab учебное пособие
Скачать 2.57 Mb.
|
15 6 12 2 6 2 6 6 3 A Ее собственные числа 9 , 6 , 3 3 2 1 d d d Матрица собственных векторов имеет вид: 4 2 1 2 1 0 1 2 1 V Вычисления в MATLAB дают >>A =[-3 -6 6;-2 6 2;-12 -6 15]; [V,D]=eig(A) V = -0.7071 0.2182 0.6667 -0.0000 0.4364 -0.3333 -0.7071 0.8729 0.6667 D = 3.0000 0 0 0 9.0000 0 0 0 6.0000 На диагонали матрицы D стоят собственные числа. Заметим, что MATLAB выдает матрицу собственных векторов в нормированном виде, так что сумма квадратов элементов в каждом столбце равна единице. Порядок расположения собственных векторов в матрице V соответствует 72 расположению собственных чисел в матрице D. В принципе, мы имеем право умножить каждый столбец матрицы V на любое число, поскольку собственные векторы определены с точностью до постоянного множителя. Команду eig можно применять и к символьным матрицам, при этом MATLAB старается выдать ответ в целочисленном виде, например >> A =sym([-3 -6 6;-2 6 2;-12 -6 15]); [V,D]=eig(A) V = [ -2, 1, 1/2] [ 1, 0, 1] [ -2, 1, 2] D = [ 6, 0, 0] [ 0, 3, 0] [ 0, 0, 9] По сравнению с предыдущим ответом MATLAB изменил порядок собственных чисел и длину собственных векторов. Если собственные числа матрицы комплексные, то ее собственные векторы также будут комплексными. Пример. Два из трех собственных чисел матрицы 3 1 2 1 1 2 1 1 0 B комплексные: , 1 , 1 , 2 3 2 1 i d i d d им соответствуют собственные векторы: 1 1 , 1 , 2 0 1 3 2 1 i h i i h h Найдем жорданову каноническую форму матрицы B : >>B =[0 1 1;-2 1 1;-2 1 3]; [ Н,L]=eig(B) H = -0.4472 0.0000 - 0.5774i 0.0000 + 0.5774i 0.0000 0.5774 0.5774 -0.8944 0.0000 - 0.5774i 0.0000 + 0.5774i L = 2.0000 0 0 0 1.0000 + 1.0000i 0 0 0 1.0000 - 1.0000i Повторим те же вычисления в символьной форме >>B =sym([0 1 1;-2 1 1;-2 1 3]); [H,L]=eig(B) H = [ 1, 1, 1] [ i, -i, 0] [ 1, 1, 2] L = [ 1+i, 0, ] [ 0, 1-i, 0] [ 0, 0, 2] Здесь матрицы H и L представлены в более удобном виде. Полученную матрицу L можно преобразовать к вещественной форме, в которой каждой паре комплексных собственных чисел i соответствует диагональная клетка В MATLAB такой переход осуществляется командой cdf2rdf (сокращение от complex diagonal form to real diagonal form). Ее входными аргументами являются комплексные матрицы 73 собственных чисел и векторов, возвращаемые командой eig, а выходными аргументами – матрицы вещественной формы. Применим ее к результату последнего примера. >> [H1,L1]=cdf2rdf(H,L) H1 = -0.4472 0.0000 -0.5774 0.0000 0.5774 0 -0.8944 0.0000 -0.5774 L1 = 2.0000 0 0 0 1.0000 1.0000 0 -1.0000 1.0000 Матрица L1 – это вещественная форма Жордана матрицы В. Второй и третий столбцы матрицы Н1 представляют собой вещественную и мнимую части соответствующих векторов матрицы Н. Обратный переход к комплексной жордановой форме выполняется с помощью команды rsf2csf. Синтаксис вызова обеих команд одинаков. Если среди корней минимального полинома матрицы A имеются кратные, то на диагонали ее жордановой канонической формы появляются клетки соответствующего размера вида 2 2 2 1 1 0 0 1 0 0 1 , 0 1 и т.д. В этом случае применять команду eig следует с осторожностью, поскольку неопытного пользователя ее результаты могут ввести в заблуждение. Пример. Рассмотрим матрицу 2 0 0 1 2 0 0 0 2 C Все ее собственные числа равны 2, характеристический полином имеет вид , 2 3 минимальный полином равен 2 2 Следовательно, алгебраическая кратность собственного числа 2 равна трем, а геометрическая – двум. У матрицы С только два собственных вектора 0 1 0 , 0 0 1 2 1 V V Вычислим их с помощью команды eig. >>С=[2 0 0;0 2 1;0 0 2], [H,L]=eig(С) H = 1.0000 0 0 0 1.0000 -1.0000 0 0 0.0000 L = 2 0 0 0 2 0 0 0 2 MATLAB правильно нашел собственные числа матрицы С и оба собственных вектора, однако матрица L уже не является жордановой канонической формой матрицы C. При этом MATLAB не выдал сообщения о том, что имеются только два собственных вектора, а просто дважды поместил в матрицу Н второй собственный вектор (во второй и третий столбцы). Застраховаться от подобных недоразумений можно, вычисляя ранг матрицы собственных векторов (в нашем примере он равен двум, т.е. меньше размера матрицы), либо переходя к символьным вычислениям. При этом в команде eig можно задавать третий выходной параметр, который укажет количество собственных векторов, имеющихся у матрицы. 74 >> C=[2 0 0;0 2 1;0 0 2]; [H1,L1,p]= eig(sym(C)) C = 2 0 0 0 2 1 0 0 2 H1 = [ 1, 0] [ 0, 1] [ 0, 0] L1 = [ 2, 0, 0] [ 0, 2, 0] [ 0, 0, 2] p = 1 2 Теперь MATLAB выдал два собственных вектора, параметр р указывает на их число. Однако матрица L1 по-прежнему осталась диагональной. Получить жорданову каноническую форму матрицы С можно, используя команду jordan. Ее синтаксис [V,J]=Jordan(A) , где V – матрица перехода к жордановой канонической форме J: V/A*V=J. Для нашего примера получаем: >> C=[2 0 0;0 2 1;0 0 2]; [V,J] = jordan(C), C = 2 0 0 0 2 1 0 0 2 V = 0 1 -2 1 0 1 0 1 0 J = 2 1 0 0 2 0 0 0 2 Столбцами V служат так называемые корневые или обобщенные собственные векторы матрицы С (подробнее о них можно прочитать в учебном пособии [9]. Надо иметь в виду, что команда jordan очень чувствительна к погрешностям. Малейшее изменение входных данных может изменить структуру канонической формы. Увеличим, например, на 0,01 последний элемент матрицы С: >> C1=[2 0 0;0 2 1;0 0 2.01]; [V1,J1] = jordan(sym(C1)), C1 = 2 0 0 0 2 1 0 0 2.01 V1 = [ 1, 0, -201/100] [ -100, 100, 1 ] [ 0, 1, 0 ] J1 = [ 2, 0, 0] [ 0, 201/100, 0] [ 0, 0, 2] В результате матрица J 1 – каноническая форма Жордана матрицы С 1 – стала диагональной, в то время как матрица J имела треугольную жорданову клетку. Сопоставляя жорданову А J и фробениусову (сопровождающую) А F канонические формы матрицы А, отметим следующее. При отсутствии кратных корней характеристического полинома связь жордановой и фробениусовой канонических форм осуществляется с помощью матрицы Вандермонда V, составленной из собственных чисел 1 , ..., n матрицы А: , 1 1 1 0 0 1 1 n n n n F J V V A V A В MATLAB матрица Вандермонда может быть получена с помощью команды vander. Непосредственной проверкой легко убедиться, что столбцы матрицы V являются собственными векторами матрицы Фробениуса. Сопровождающая каноническая форма имеет определенные преимущества перед формой Жордана: во-первых, она вещественная, во-вторых, алгоритм ее получения – рационален (использует только операции сложения и умножения). В то же время 75 применять обе формы в практических вычислениях нужно с осторожностью, поскольку они весьма чувствительны к погрешностям округлений. Задачи и упражнения 1. В 2005 г. правила игры «Кто хочет стать миллионером» с учетом инфляции были несколько изменены по сравнению с описанными в разд. 4.2.1, и стоимость туров стала следующей: 500, 1000, 2000, 3000, 5000, 10000, 15000, 25000, 50000, 100000, 200000, 400000, 800000, 150000, 3000000 рублей. Постройте графики стоимости туров в обычном и полулогарифмическом масштабах, отметив на них крестиками «несгораемые» суммы 5000, 100000 и ноликами – остальные точки. 2. Эллипс задан уравнением 25 2 2 y xy x Предложите пять способов получения его графика в MATLAB. Указание. Вот несколько возможных вариантов построения графика: - по точкам (задавая x и рассчитывая y как корни квадратного уравнения); - поворачивая на 45 о эллипс, задаваемый параметрическими уравнениями t b y t a x sin , cos , где b a, длины полуосей эллипса (они находятся через собственные числа 2 1 , матрицы квадратичной формы A=[1 .5;.5 1]/25 по формулам 2 1 / 1 , / 1 b a ; - находя с помощью команда chol разложение Холецкого А= R T R матрицы A и выполняя аффинное преобразование единичной окружности с помощью матрицы R; - находя матрицу Н собственных векторов матрицы A и выполняя аффинное преобразование единичной окружности с ее помощью; - применяя команду contour к поверхности 2 2 y xy x z ; - для двоечников: наберите команд у ezplot('x*x+x*y+y*y-25') 3. Требуется разделить число 8 на две части так, чтобы произведение их произведения на разность было максимальным. Рассмотрите три варианта решения этой задачи в MATLAB и сравните результаты. Указание. Обозначив искомые части через x, y, получаем задачу на условный экстремум xy(x-y)max при ограничении x+y=8. Ответ: ). 3 3 1 ( 4 ), 3 3 1 ( 4 y x 4. Дана матрица А=[a b; c 0], где a, b, c – число букв в Вашей фамилии, имени, отчестве. Найти три матричные нормы, соответствующие им числа обусловленности, а также векторы Х 1 , Х 2 , Х 3 , на которых достигаются матричные нормы. Указание. Для определения векторов Х i использовать равенства X AX A / 5. Для приведенных ниже матриц найти матричную экспоненту At e : , 3 2 1 0 1 A , 2 0 0 0 2 0 0 1 2 2 A 2 0 0 1 2 0 0 1 2 3 A Ответ: 76 2 2 2 2 2 2 2 2 1 t t t t t t t t t A e e e e e e e e e 0 0 0 0 0 2 2 2 2 2 t t t t t A e e te e e 0 0 0 2 2 2 2 2 2 2 2 3 t t t t t t t A e te e e t te e e 6. Найти жорданову и фробениусову канонические формы следующих матриц: A1=[1 2 3;2 4 6;3 6 9]; A2=diag(1:4]); A3=ones(3); A4=ones(4); A5=triu(ones(4)); 77 МОДЕЛИРОВАНИЕ ДИНАМИЧЕСКИХ СИСТЕМ Краткие сведения о методике моделирования линейных динамических систем в MATLAB были изложены в разделах 2, 3. В данном разделе рассматривается более широкий круг моделей, включая линейные системы с несколькими входами и выходами, дискретные модели и нелинейные дифференциальные уравнения. Канонические формы линейных систем Изменение базиса в пространстве состояний В разд. 2.1. отмечалось, что одному и тому же объекту S с передаточной функцией Q(p) можно сопоставить несколько эквивалентных реализаций в пространстве состояний. Если известна одна из таких реализаций , , cX y bu AX X то другие могут быть получены невырожденной заменой переменных типа X=TZ, что приводит к преобразованию матриц системы по формулам , , 1 1 Tc c b T b AT T A В MATLAB для этого служит команда ss2ss (читается state space to state space). Ее синтаксис имеет вид sys1=ss2ss(sys,T), где sys – исходная система, Т – матрица преобразования). Такое преобразование, связанное с изменением базиса в пространстве состояний, называется преобразованием подобия, оно не меняет передаточную функцию системы. Варьируя матрицу преобразования Т, можно получить бесчисленное множество реализаций одной и той же передаточной функции в пространстве состояний. При компьютерном моделировании возникает вопрос, какой из реализаций отдать предпочтение. От ответа на него зависит сложность программы, точность моделирования и другие характеристики вычислительного процесса. На практике обычно предпочитают реализации, отличающиеся простотой математического описания и регулярной структурой. Последнее обеспечивается переходом от исходной ss-модели с помощью замены переменных X=TZ к такой системе координат, что большинство элементов матриц c b A , , становятся равными нулю или единице. Такие описания называются каноническими представлениями динамических систем или каноническими формами. С инженерной точки зрения канонические формы – это модели исходной системы, отличающиеся простой структурой и минимальным числом варьируемых параметров. Совокупность канонических форм можно рассматривать, как набор типовых моделей динамических систем. Знание свойств этих моделей и их характеристик позволяет выбирать реализации, удобные для решения конкретных задач моделирования, анализа или синтеза систем. Рассмотрим три типа канонических форм линейных моделей, которые поддерживаются MATLAB – модальные, сопровождающие и сбалансированные канонические формы. Модальная и сопровождающая канонические формы В тулбоксе CONTROL имеется команда canon, которая строит модальную (жорданову) и сопровождающую канонические формы линейных систем. Ее первый входной аргумент – исходная система, второй – тип канонической формы ('modal' или 'companion'). Выходной аргумент может быть один (результирующая система) или два (возвращается также матрица преобразования Т). 78 У системы в модальной канонической форме матрица А представлена в жордановом вещественном виде. Представление системы в этом виде приводит к ее декомпозиции на несколько параллельно соединенных независимых схем, отвечающих различным собственным числам. Во многих случаях такое представление облегчает моделирование и анализ устойчивости, управляемости и наблюдаемости. У системы в сопровождающей канонической форме матрицы А имеет фробениусов вид. В ее последнем столбце стоят коэффициенты характеристического полинома системы, на главной поддиагонали стоят единицы, а остальные элементы – нулевые. Если у системы один вход, то матрица В имеет вид единичного орта, а матрица управляемости – единичная. Заметим, что в теории управления известны еще три сопровождающие формы, это каноническая форма фазовых переменных, идентификационная каноническая форма и каноническая форма с единичной матрицей наблюдаемости. Однако прямых команд для их получения в MATLAB нет. Проиллюстрируем работу функции canon на примере системы с одним входом и одним выходом. Пример. Найдем модальную каноническую форму следующей системы третьего порядка: ] 1 0 1 [ , 0 1 2 1 1 1 2 1 2 2 1 4 X y u X X Формируем ss-модель и применяем команду canon с опцией ‘modal’: >> a=[-4 1 2;-2 -1 2;-1 1 -1]; b=[2;1;0]; c=[1 0 1]; sys=ss(a,b,c,0); >> sysM=canon(sys,'modal'); sysM.a, sysM.b, sysM.c sysM.a sysM.b sysM.c -1.0000 0 0 0 -3.0000 0 0 0 -2.0000 -1.7321 2.8284 1.4142 1.1547 0.7071 1.4142 Мы получили модальную реализацию, матрица А в ней диагональна. Теперь построим сопровождающую каноническую форму той же системы: >> [sysC,T]=canon(sys,'compan'); sysC.a, sysC.b, sysC.c, T, ctrb(sys) sys С.a sys С.b sys С.c T ctrb(sys) 0 0 -6 1 0 -11 0 1 -6 1 0 0 2 -8 24 0.5 0 -3.5 -0.75 1.5 -3.25 -0.25 0.5 -0.75 1 0 0 0 1 0 0 0 1 Теперь матрица А имеет фробениусов вид, вектор В – единичный орт. В качестве второго выходного аргумента фигурирует матрица Т замены переменных. Следует предупредить, что в случае кратных собственных чисел функция |