Главная страница
Навигация по странице:

  • 1.6.

  • 1.7.

  • Матлаб. К. Ю. Петрова введение в matlab учебное пособие


    Скачать 2.57 Mb.
    НазваниеК. Ю. Петрова введение в matlab учебное пособие
    АнкорМатлаб
    Дата15.09.2022
    Размер2.57 Mb.
    Формат файлаpdf
    Имя файлаmironovsky_petrova_matlab.pdf
    ТипУчебное пособие
    #678847
    страница3 из 18
    1   2   3   4   5   6   7   8   9   ...   18
    conv (сокращение от convolution.
    Рассмотрим произведение двух квадратных трехчленов:
    2 13 24 17 4
    2 1
    ;
    1 5
    4 2
    ;
    2 3
    1 2
    3 4
    2 2













    x
    x
    x
    x
    P
    P
    P
    x
    x
    P
    x
    x
    P
    Вычислим коэффициенты результирующего полинома четвертой степени в MATLAB:
    >>
    Р1=[1 3 2]; Р2=[4 5 1]; Р= conv(P1,P2).
    Получим ответ:
    Р= 4 17 24 13 2.
    Обратная операция – деление полиномов – выполняется по команде deconv. Результат операции деления полиномов представляет собой частное и остаток.
    Пример. Найдем целую часть и остаток неправильной рациональной дроби
    2 3
    2 1
    5 4
    2 3
    4 14 24 17 4
    2 2
    2 2
    3 4













    x
    x
    x
    x
    x
    x
    x
    x
    x
    x
    x
    Выполним это деление в MATLAB:
    >> num=[4 17 24 14 4]; den=[1 3 2]; [q,r]=deconv(num,den),
    Результат будет иметь вид q = 4 5 1, r = 0 0 0 1 2.
    Здесь вектор q характеризует целую часть деления, а вектор r – остаток.
    Отношение двух полиномов относится к классу так называемых дробно-рациональных функций. Именно такой вид имеют, например, передаточные функции систем автоматического управления. С ними часто приходится делать две типовые операции – разложение передаточной функции в сумму элементарных дробей и обратное действие – сложение элементарных дробей, т.е. приведение их к общему знаменателю.
    В MATLAB обе эти операции могут быть выполнены с помощью команды residue.
    Пример. Пусть требуется разложить на элементарные дроби рациональную функцию
    2 3
    5 2
    2 1
    1 2
    r
    x
    k
    r
    x
    k
    x
    x
    x







    При «ручном» счете сначала находят числа r
    1
    , r
    2
    – это корни знаменателя: r
    1
    = -2, r
    2
    = -1.
    Затем для определения неизвестных коэффициентов k
    1
    , k
    2
    приравнивают числители правой и левой частей:
    ).
    2
    (
    )
    1
    (
    5 2
    1





    x
    k
    x
    k
    x
    Отсюда
    5 2
    ,
    1 2
    1 2
    1




    k
    k
    k
    k
    Решая эту систему, находим
    4
    ,
    3 2
    1



    k
    k
    Выполним указанное разложение с помощью команды residue. Ее входными аргументами являются числитель num и знаменатель den исходной дроби, выходными аргументами – векторы
    R, K, содержащие коэффициенты знаменателей и числителей элементарных дробей (полюсы и вычеты исходной функции). Набрав
    >>num=[1 5]; den=[1 3 2]; [K, R]=residue(num, den), получим результат
    K=[-3 4], R=[-2 -1], .
    Следовательно, искомое разложение имеет вид
    2 3
    1 4
    2 3
    5 2







    x
    x
    x
    x
    x

    17
    В общем случае корни знаменателя могут оказаться комплексными и кратными, кроме того, исходная дробь может быть неправильной (порядок числителя больше или равен порядку знаменателя). Об особенностях применения команды в этих случаях можно узнать с помощью справки help residue.
    При вызове с синтаксисом
    [num, den]=residue(R, K, P) команда выполняет обратное действие – находит сумму элементарных дробей, характеризуемых параметрами R, K и полиномом Р, заданным вектором своих коэффициентов. Одно из применений этого варианта команды – сложение комплексно-сопряженных пар дробей для получения вещественных элементарных дробей второго порядка.
    1.6.
    Собственные числа и векторы
    С необходимостью вычисления собственных чисел и векторов приходится сталкиваться при решении многих физических и технических задач, таких как определение осей эллипсоида инерции тяжелого тела, определение собственных частот колебаний электрических и механических систем, решение систем дифференциальных уравнений, приведение линейных систем к каноническому виду.
    Напомним, что собственными числами или собственными значениями квадратной матрицы
    А называются корни ее характеристического полинома. Характеристический полином находим, раскрывая определитель


    ,
    det
    0 1
    1 1
    a
    a
    a
    E
    A
    n
    n
    n













    где Е – единичная матрица, n – размерность матрицы А.
    Приравнивая его нулю, получим характеристическое уравнение матрицы А.
    Найдем характеристический полином при n=2:

    


     

    det
    21 12 22 11 22 11 2
    21 12 22 11 22 21 12 11
    a
    a
    a
    a
    a
    a
    a
    a
    a
    a
    a
    a
    a
    a























    Заметим, что коэффициент при

    равен следу матрицы А, взятому с минусом, а свободный член равен ее определителю. Поэтому характеристическое уравнение можно записать в виде
    0
    det tr
    2



    A
    A


    Корни
    2 1
    ,


    этого уравнения и будут собственными числами матрицы А.
    В MATLAB для получения характеристического полинома матрицы А можно воспользоваться командой poly(A).
    Ее результатом будет вектор коэффициентов характеристического полинома. Корни этого полинома находим командой roots. Найдем, например, собственные числа матрицы
    :
    3 0
    2 1






    >>A=[1 2; 0 3]; p=poly(A); L=roots(p).
    В результате выполнения этих команд на экран будут выведены собственные числа 1 и 3.
    Более короткий путь получения собственных чисел состоит в применении команды eig (от немецкого «eigen» – собственный). Для нашего примера, вводя код
    L=eig(A), получаем вектор- столбец собственных чисел с элементами 1; 3. Отметим, что матрица А в примере была треугольной, поэтому собственные числа равны ее диагональным элементам.

    18
    Перейдем к определению собственных векторов квадратной матрицы. Вектор H называется собственным вектором матрицы А, если в результате его умножения на матрицу он не изменяет своего направления, а лишь удлиняется или укорачивается.
    Алгебраическая запись этого условия имеет вид
    AH = λH или (A-λE)H = 0,
    (*) где коэффициент

    показывает, во сколько раз изменяется длина вектора. Для того чтобы однородная система (*) имела ненулевое решение H, необходимо, чтобы определитель системы равнялся нулю:


    0
    det


    E
    A

    Последнее равенство представляет собой характеристическое уравнение матрицы А. Следовательно его корни
    ,
    ,
    ,
    1
    n



    т.е. собственные числа, надо поочередно подставлять в уравнение (*), чтобы найти собственные векторы, причем каждому собственному числу
    i

    будет отвечать свой собственный вектор H
    i
    Замечание 1. Если все собственные числа
    n


    ,
    ,
    1

    различны, то у матрицы А будет n линейно независимых собственных векторов H
    1
    , …, H
    n
    Замечание 2. Поскольку определитель системы (A – λ
    i
    E)H
    i
    = 0 равен нулю, то одно из уравнений этой системы будет линейной комбинацией других, т.е. «лишним» и его следует отбросить. Решение оставшейся системы будет определено с точностью до произвольной константы. Геометрически это означает, что если H
    1
    – собственный вектор матрицы А, то и k H
    1
    , где k – любое число, также собственный вектор. В пакете MATLAB при вычислении собственных векторов константа k обычно выбирается так, чтобы собственные векторы имели единичную длину (чтобы сумма квадратов их компонент равнялась единице).
    Замечание 3. Если матрица А – симметрична, то ее собственные числа вещественны, а собственные векторы – ортогональны. У несимметричных матриц все или часть собственных чисел и векторов могут оказаться комплексными.
    Чтобы найти собственные векторы матрицы в пакете MATLAB, надо использовать команду
    eig с двумя выходными параметрами
    [H,L]=eig(A).
    При этом столбцами матрицы H будут служить собственные векторы матрицы А, а диагональными элементами матрицы L – соответствующие им собственные числа.
    Пример. Дана матрица второго порядка
    2 3
    2 1







    A
    Чтобы найти ее собственные числа, выписываем характеристический полином



    

    4 3
    6 2
    1 2
    3 2
    1
    det
    2
























    E
    A
    Его корни вещественны
    4
    ,
    1 2
    1





    Матричное уравнение для определения первого собственного вектора имеет вид
    2 3
    2 1
    ,
    2 1
    2 1
    1 1
    1





















    h
    h
    h
    h
    H
    AH

    Ему соответствует система двух скалярных уравнений

















    0 3
    3
    ,
    0 2
    2 2
    3 2
    2 1
    2 1
    2 2
    1 1
    2 1
    h
    h
    h
    h
    h
    h
    h
    h
    h
    h

    19
    Они отличаются только постоянным множителем и эквивалентны уравнению
    0 2
    1


    h
    h
    Принимая, например,
    ,
    1 1

    h
    получаем
    ,
    1 2


    h
    т.е. первый собственный вектор равен
    1 1
    1








    H
    Аналогичным образом получаем систему уравнений для определения второго собственного вектора:
















    0 2
    3
    ,
    0 2
    3 4
    2 3
    4 2
    2 1
    2 1
    2 2
    1 1
    2 1
    h
    h
    h
    h
    h
    h
    h
    h
    h
    h
    Полагая
    ,
    2 1

    h
    получаем
    ,
    3 2

    h
    т.е. второй собственный вектор равен
    3 2
    2







    H
    Заметим, что его можно записать также в виде







    2
    /
    3 1
    2
    H
    или
    1 3
    /
    2 2







    H
    Решим эту задачу в MATLAB с помощью команд:
    >> A=[1 2;3 2]; [H,D]=eig(A)
    В результате получаем матрицы:
    A
    H
    D
    1 2
    3 2
    -0.7071 -0.5547 0.7071 -0.8321
    -1 0 0 4
    Заметим, что MATLAB выдал нормированные собственные векторы.
    Пример. Найдем характеристический полином и собственные числа матрицы третьего порядка
    1 1
    1 1
    1 2
    1 2
    3











    B
    Используя команды poly и eig, получаем:
    >>B=[3 2 1; 2 1 1; 1 1 1]
    >>v=poly(B)
    >>eig(B)
    B=3 2 1 2 1 1 1 1 1 v=1 -5 1 1 ans= -0.3489 0.6041 4.7448
    Второй коэффициент характеристического полинома, взятый с обратным знаком, равен сумме собственных чисел и следу матрицы B.
    1.7.
    Символьные вычисления в MATLAB
    Для проведения символьных вычислений необходим тулбокс SYMBOLIC пакета MATLAB.
    Если он установлен, то имеется возможность выполнять аналитические преобразования формул с буквенными коэффициентами, производить численные расчеты без округлений, строить графики функций, заданных в неявной форме.
    Формирование символьных переменных производится командами sym и syms, например,
    sym(2) или syms x y z. После этого можно вводить математические выражения, содержащие эти числа или переменные.

    20
    Перечень основных символьных алгебраических операций приведен в табл. 6.
    Таблица 6
    det
    rank
    inv
    expand
    simple
    solve
    diag
    poly
    eig
    factor
    collect
    numden
    Первые три столбца в этой таблице содержат перечень операций над матрицами, которые могут выполняться как в числовой, так и в символьной форме. Например, набрав в командном окне текст
    >>syms a b c d; A=[a b;c d], D=det(A) и нажав
    Enter, получим ответ
    *
    *
    ,
    ,
    ,
    c
    b
    d
    a
    D
    d
    c
    b
    a
    A









    По команде
    P=poly(A) получим символьную запись характеристического полинома матрицы:
    ,
    )
    (
    2
    bc
    ad
    x
    d
    a
    x
    P





    а команды inv и eig дают возможность найти в символьном виде обратную матрицу, собственные числа и собственные векторы.
    Пример. Найдем символьные выражения собственных чисел, собственных векторов и характеристического полинома для матриц А, В из двух предыдущих примеров. Преобразуем эти матрицы к символьному виду:
    >>
    A=sym(A); [H,D]= eig(A), B=sym(B), V=poly(B)
    A=sym(A)
    H
    D
    B=sym(B)
    V=poly(B)
    [1 2]
    [3 2]
    [ -1, 1]
    [ 1, 3/2]
    [ -1, 0]
    [ 0, 4]
    B= [ 3, 2, 1]
    [ 2, 1, 1]
    [ 1, 1, 1]
    V =x^3-5*x^2+x+1
    Когда используются символьные вычисления собственных векторов, MATLAB берет одну из компонент собственного вектора равной единице. Заметим, что хотя собственные числа матрицы
    В вещественны, команда eig(sym(B)) дает для них комплексные выражения, которые не удается упростить средствами MATLAB.
    Три последние столбца табл. 6 содержат команды, применяемые для преобразования и упрощения символьных формул. Так, команда expand раскрывает скобки, команда factor, наоборот, пытается факторизовать выражение (разложить его на множители), команда collect
    приводит подобные члены. Например, команда expand (a+b)^2 даст ответ a^2+2*a*b+b^2, а команда factor(a^2-b^2) даст ответ (
    a+b)*(a-b),
    Естественно, надо предварительно объявить символьные переменные командой: sym a b.
    Команды simple и simplify используются для упрощения формул, например, набрав
    >>sym(x), y=simple(sin(x)^ 2+cos(x)^ 2) получим ответ y=1.
    Особо следует выделить команду solve, которая позволяет решать алгебраические уравнения, включая нахождение корней полиномов, решение линейных и нелинейных систем уравнений.
    Найдем, например, в символьном виде корни квадратного уравнения
    0 2
    2



    c
    bx
    x
    Набрав
    >>syms x b c; solve
    (‘x^2+2*b*x+c=0’, x) получаем ответ: ans= -b+(b^2-c) ^(1/2), -b-(^2-c) ^(1/2), что соответствует школьной формуле
    2 2
    ,
    1
    ac
    b
    b
    x





    21
    Команда numden служит для выделения числителя и знаменателя дробно-рациональных выражений. Найдем с ее помощью сумму элементарных дробей

    

    3 4
    5 3
    3 1
    5 3
    3 2
    1 1
    2











    p
    p
    p
    p
    p
    p
    p
    p
    Вводя текст
    >>syms p; [num,den]=numden(1/(p+1)+2/(p+3)), получаем ответ: num=3*p+5, den=(p+1)*(p+3).
    Раскрывая последнее выражение с помощью команды expand:
    >>den=expand(den), получаем den=p^2+4*p+3, что совпадает со знаменателем суммы дробей.
    Отметим еще команды преобразования полиномов из символьного вида в числовой и обратно
    sym2poly и poly2sym, а также команды double и vpa, служащие для перевода символьных данных в числовые. Например,
    P=sym2poly(den) даст
    P=[1 4 3], а результатом команд
    A=sym([1 2; 2 3]), L=eig(A), L1=double(L) будут символьная матрица А, символьный вектор собственных чисел L и его числовое значение L1:
    A=[1, 2]
    [2, 3]
    L=2+5

    (1/2)
    2-5

    (1/2)
    L1=4.2361
    -0.2361
    О применении команд laplace и ilaplace для выполнения прямого и обратного преобразования Лапласа будет сказано позже.
    В тулбоксе Symbolic есть два удобных средства для построения графиков, они вызываются командами ezplot и funtool. Имя первой из них читается как ‘easy plot, она предназначена для построения графиков функций, заданных аналитически. На рис. 1.8 приведен пример ее использования для построения графика синуса и функции
    x
    x
    y
    2
    cos sin


    >>ezplot('sin')
    -6
    -4
    -2 0
    2 4
    6
    -2
    -1.5
    -1
    -0.5 0
    0.5 1
    x sin
    (
    x
    )+
    cos
    (
    2
    x
    )
    >>ezplot('sin(x)+cos(2*x)')
    -6
    -4
    -2 0
    2 4
    6
    -1
    -0.5 0
    0.5 1
    x sin
    (
    x
    )
    Рис. 1.8
    Функция ezplot позволяет также рисовать графики функций, заданных неявно, либо параметрически. Например, для того чтобы изобразить гиперболу, заданную уравнением
    1 2
    2


    y
    x
    достаточно набрать ezplot('x^2-y^2-1').
    Можно также указать пределы, в которых будет изображена функция, например, команда ezplot('-x^3+2*x+1',[-2,3])
    изобразит график полинома
    1 2
    3



    x
    x
    на интервале [-2, 3].
    Для изображения функций, заданных параметрически
    ),
    (
    ),
    (
    t
    g
    y
    t
    f
    x


    команда вызывается в формате ezplot('f(t
    )’, 'g(t)’, [t0, t1]).
    Пусть, например, требуется нарисовать на плоскости
    (x, y) кривую, заданную уравнениями:

    22
    x = 2t – 4t
    3
    , y = t
    2
    – 3t
    4
    Набирая в командной строке:
    >>ezplot('2*t-4*t^3','t^2-3*t^4',[-1,1]), получаем кривую, показанную на рис.1.9
    -1.5
    -1
    -0.5 0
    0.5 1
    1.5
    -1.5
    -1
    -0.5 0
    x y
    x = 2 t-4 t
    3
    , y = t
    2
    -3 t
    4
    Рис. 1.9
    В математической теории катастроф она известна как «ласточкин хвост».
    Второе графическое средство тулбокса SYMBOLIC – это функциональный калькулятор
    1   2   3   4   5   6   7   8   9   ...   18


    написать администратору сайта