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

  • Sources

  • Задачи и упражнения

  • РЕШЕНИЕ АЛГЕБРАИЧЕСКИХ ЗАДАЧ

  • Графические средства MATLAB

  • Управление графическим экраном В MATLAB существует ряд команд для управления графическими окнами, их перечень приводится ниже: grid axis hold figure

  • Рис. 4.1 Команда figure

  • Semilogy

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


    Скачать 2.57 Mb.
    НазваниеК. Ю. Петрова введение в matlab учебное пособие
    АнкорМатлаб
    Дата15.09.2022
    Размер2.57 Mb.
    Формат файлаpdf
    Имя файлаmironovsky_petrova_matlab.pdf
    ТипУчебное пособие
    #678847
    страница7 из 18
    1   2   3   4   5   6   7   8   9   10   ...   18
    Signal Routing).
    Для передачи данных в MATLAB использован блок
    To Workspace c форматом вывода
    structure with time. Теперь после прогона модели графики
    )
    (t
    y
    и
    )
    (t
    y

    можно будет построить из командного окна MATLAB, набрав:
    >> plot(simout.time,simout.signals.values)
    Такой способ построения полезен, если необходимо изменять вид графика, поскольку возможности осциллографа
    Scope значительно ниже, чем у команды plot. y''
    y'
    a)
    sin
    Trigonometric
    Function
    Scope
    1
    s
    Integrator1 1
    s
    Integrator
    -1
    Gain
    Рис. 3.7
    В пункте меню «Simulation/Simulation parameters» можно задать ряд параметров моделирования. Часть из них расположены на панелях Solver (решатель) и Workspace I/O
    (интерфейс с рабочим пространством). На панели Solver в группе элементов управления Simulation
    Time (время моделирования) можно определить время начала (
    Start time
    ) и конца моделирования
    (
    Stop time
    ). В группе опций решателя (Solver) можно выбрать используемый алгоритм решения дифференциальных уравнений с фиксированным шагом (Fixed-step) или с изменяемым шагом
    (Variable step). Можно также задать минимальный и максимальный размер шага, а также относительную и абсолютную точность интегрирования. На панели Workspace I/O можно y''
    y'
    б)
    XY Graph sin
    Trigonometric
    Function simout
    To Workspace
    Scope
    Mux
    1
    s
    Integrator1 1
    s
    Integrator
    -1
    Gain

    44 определить имена переменных, в которых хранятся результаты моделирования и которые используются как источники сигналов.
    Чтобы проиллюстрировать их применение, усложним нашу модель, введя в нее управляющий сигнал
    t
    e
    u


    :
    1
    )
    0
    (
    ,
    1
    )
    0
    (
    ,
    sin




    y
    y
    u
    y
    y



    Теперь это уравнение описывает вынужденное движение маятника под действием управляющего воздействия u(t). Управляющий сигнал можно получить либо непосредственно в
    SIMULINK, либо сформировать его в рабочем пространстве MATLAB и оттуда передать в
    SIMULINK. Воспользуемся второй возможностью. Для этого потребуется изменить схему, изображенную на рис 3.7, добавив блоки «Вход» (
    In из группы Sources) и «Выход» (
    Out из группы
    Sinks). Результат показан на рис 3.8, слева.
    Зададим время моделирования
    Stop time=20
    . На панели Workspace I/O в графе Input запишем
    [t, u], в графе Initial State запишем xInitial
    , в графе Time – tout
    , в графе Output – yout
    , и установим соответствующие чек-боксы.
    В рабочем пространстве MATLAB подготовим управляющий сигнал
    t
    e
    u


    и установим начальные условия
    1
    )
    0
    (
    ,
    1
    )
    0
    (


    y
    y

    :
    >> xInitial=[1; 1];
    % столбец начальных условий
    >> t=linspace(0,20)';
    % время моделирования
    >> u=exp(-t);
    % управление u
    Запустим процесс моделирования в SIMULINK. По окончании моделирования в рабочем пространстве появятся переменные tout и yout
    . Набрав plot(tout,yout,t,u,'r:')
    , можно просмотреть три графика –
    )
    (
    ),
    (
    ),
    (
    t
    u
    t
    y
    t
    y

    (рис 3.8, справа). y''
    y'
    1
    Out1
    sin
    Trigonometric
    Function
    1
    s
    Integrator1 1
    s
    Integrator
    1
    In1
    Рис. 3.8
    Задачи и упражнения
    1. Дана система дифференциальных уравнений с единичными начальными условиями


    T
    X
    AX
    X
    1 1
    )
    0
    (
    ,




    Для двух вариантов матрицы А
    0 2
    4 6
    8 10 12 14 16 18 20
    -2.5
    -2
    -1.5
    -1
    -0.5 0
    0.5 1
    1.5 2
    1 2.5

    45 а)
    ,
    9 6
    3 6
    4 2
    3 2
    1












    A
    б)














    1 1
    1 1
    1 1
    1 1
    1 1
    1 1
    1 1
    1 1
    A
    получить в MATLAB и SIMULINK графики выходных сигналов. Найти аналитическое решение с помощью команды dsolve.
    Ответ. а)
    t
    e
    x
    x
    x
    14 3
    2 1




    >> A=-[1 2 3;2 4 6;3 6 9]; s=ss(A,eye(3),eye(3),0);initial(s,[1;1;1]) б)
    t
    e
    x
    x
    x
    x





    4 3
    2 1
    >> s=ss(-ones(4),eye(4),eye(4),0);initial(s,[1;1;1;1])
    2. Дана функция sin
    3 1
    2
    t
    a
    e
    a
    y
    t
    a



    Параметры а
    1
    , а
    2
    , а
    3
    – это число букв в Вашей фамилии, имени, отчестве. Требуется найти дифференциальное уравнение, решением которого она является, рассчитать начальные условия и нарисовать схему для моделирования в СИМУЛИНК.
    3. Составить схему и выполнить моделирование в SIMULINK cледующих линейных дифференциальных уравнений с переменными коэффициентами: а) уравнения Матье
    0 4
    )
    cos
    5
    ,
    0 1
    (




    y
    y
    t
    y



    ; б) уравнения Бесселя
    0
    )
    (
    2 2
    2




    y
    n
    t
    y
    t
    y
    t



    ; в) уравнения Лежандра
    0
    )
    1
    (
    2
    )
    1
    (
    2





    y
    n
    n
    y
    t
    y
    t



    ; г) уравнения Чебышева
    0
    )
    1
    (
    2 2




    y
    n
    y
    t
    y
    t



    ; д) уравнения Лагерра
    0
    )
    1
    (




    ny
    y
    t
    y
    t



    4. Свободные колебания маятника описываются дифференциальным уравнением
    ,
    0
    sin


    y
    l
    g
    y

    где y – угол отклонения, g – ускорение свободного падения, l – длина маятника.
    а). Требуется исследовать в SIMULINK колебания маятника, когда его движение ограничивается вертикальной стенкой, расположенной на расстоянии b от положения равновесия (рис.3.9 ).
    Считать, что при ударе о стенку скорость маятника изменяет знак на противоположный. Для разных вариантов начальных условий получить графики
    ).
    (
    ),
    (
    ),
    (
    y
    f
    y
    t
    y
    t
    y



    б). Сделать то же для симметричного двустороннего ограничения (маятник помещают в стакан радиуса b)
    l
    b
    y
    Рис.3.9

    46
    РЕШЕНИЕ АЛГЕБРАИЧЕСКИХ ЗАДАЧ
    В предыдущих разделах были изложены начальные сведения о MATLAB и SIMULINK, необходимые для освоения этих пакетов. В этом разделе описываются графические средства
    MATLAB и его возможности по решению алгебраических задач и поиску экстремумов.
    Графические средства MATLAB
    Информация о построении графиков с помощью команды plot была приведена в разд. 1.3.
    Однако графические возможности MATLAB отнюдь не исчерпываются этой командой. В данном разделе описываются средства, предназначенные для управления графическими окнами и построения различных видов графиков.
    Управление графическим экраном
    В MATLAB существует ряд команд для управления графическими окнами, их перечень приводится ниже:
    grid
    axis
    hold
    figure
    shg
    clf
    subplot
    Кратко охарактеризуем каждую из них. О назначении команды grid (сетка) и ее вариантах
    grid on и grid off было сказано ранее.
    Изменить масштабы осей текущего графика можно с помощью команды axis. Наиболее распространенные форматы ее вызова – это axis square, axis normal, axis auto и
    axis equal
    . Те же действия можно произвести, набрав axis('square'), axis
    (‘normal’), axis(‘auto’)
    и axis('equal'),
    соответственно. Команда axis('square')
    делает область графического изображения квадратной. При этом наклон линии plot(x,x)
    должен быть 45 градусов, если она не скашивается неправильной формой экрана. Круг, задаваемый командой plot(sin(t),cos(t))
    должен выглядеть как круг, а не как овал. Команде axis('normal')
    восстанавливает масштаб обратно в нормальное положение. Есть также возможность задать размеры осей явно, например, axis([10 10 -1 2]).
    При этом область вывода примет вид
    ,
    2 1
    ,
    10 10





    y
    x
    а plot (X,Y,'LineWidth',2) сделает толщину линии равной двум.
    На один график можно поместить несколько кривых. Это можно сделать тремя способами, которые мы поясним на примере команды plot.
    Первый способ заключается в том, что в команде plot указывают несколько пар аргументов, например
    , набрав plot (х1, у1, х2, у2, х3, у3), получим три графика
    y
    1
    = f
    1
    (x
    1
    ), y
    2
    = f
    2
    (x
    2
    ), y
    3
    = f
    3
    (x
    3
    ).
    Второй способ изображения нескольких кривых на одном графике применяется для изображения нескольких функций одного и того же аргумента. Если х – вектор, Y – матрица, то по команде plot(
    х, Y)
    будет построен набор графиков, отражающих зависимость столбцов матрицы Y от аргумента х (длина вектора х должна совпадать с длиной столбцов матрицы Y).

    47
    Пример. Нарисуем, используя этот прием, синусоиду, косинусоиду и экспоненту на одном графике:
    >>t=0:0.1:10; x=[sin(t);cos(t); exp(-t)]; plot(t,x)
    Результат представлен на рис. 4.1.
    Третий способ основан на использовании команды hold, которая удерживает текущий график на экране. Последующие команды plot будут добавлять к этому графику новые, сохраняя ранее вычерченные кривые. Режим удержания графиков будет действовать до тех пор, пока команда hold не будет введена повторно. Другая возможность включения и выключения этого режима – использовать команды hold on и hold off. Для рассматриваемого примера нужно набрать:
    >> hold on, plot(t,sin(t)), plot(t,cos(t)), plot(t,exp(t)), hold off
    Результат работы двух последних способов идентичен (за исключением цветов), он показан на рис.
    4.1 слева.
    0 2
    4 6
    8 10
    -1
    -0.5 0
    0.5 1
    0 2
    4 6
    8 10
    -1 0
    1 0
    2 4
    6 8
    10
    -1 0
    1
    Рис. 4.1
    Команда figure позволяет открывать нужное количество графических окон. Каждый график выводится в свое графическое окно, их количество может быть произвольным. Без указания аргумента figure открывает новое графическое окно, присваивая ему очередной порядковый номер. Команда figure(5)
    откроет графическое окно, присвоив ему номер 5, после этого в него командой plot илидругой графической командойможет быть помещен нужный график. Это дает возможность одновременно сохранять несколько графических окон с различными графиками.
    Вызвать нужное окно для просмотра можно с помощью клавиш Alt-Tab или мыши, для вызова последнего графика существует команда shg (от show graphic). Для очистки графического окна служит команда clf (от clear figure).
    Заметим, что очистка командного окна производится командой clc (от clear command), а очистка рабочей области, т.е. удаление всех переменных – командой clear. Для удаления одной переменной х надо набрать clear(x),
    а команда clear x y z удалит из рабочей области три переменные x, y, z.
    Каждое графическое окно можно разбить на таблицу из нескольких прямоугольных частей и поместить в них отдельные графики. Это делается с помощью команды subplot. Команда subplot(mnp)
    разбивает графическое окно на mхn частей (m строк и n столбцов) и помещает следующий график в ячейку номер р. Например, команды
    >>subplot(211), plot(t,sin(t)), subplot(212), plot(t,cos(t))

    48 разбивают экран на две части, изображая график синуса в верхней половине, а график косинуса – в нижней половине (рис. 4.1, справа). Команда subplot(111)
    или просто subplot возвращает к положению, когда одно окно занимает целый экран.
    Большая часть сказанного справедлива не только для команды plot, но и для других графических команд, описываемых ниже.
    Двумерная графика
    В состав MATLAB входит целый ряд команд, которые дают различные возможности по изображению двумерных графиков. Их перечень приведен в табл. 4.1.
    Таблица 4.1
    loglog
    polar
    stairs
    area
    pcolor
    line
    pie
    plotyy
    semilogx
    comet
    bar
    fill
    colormap
    ribbon
    pie3
    strips
    semilogy
    stem
    barh
    patch
    rectangle
    scatter
    errorbar
    imagesc
    Дадим их краткую характеристику.
    Применение команд loglog, semilogx, semilogy, polar аналогично применению plot. Они дают возможность изображать данные графически на различных видах "миллиметровой бумаги", т.e. в различных системах координат – логарифмической, полулогарифмической и полярной.
    Команда loglog строит график, используя логарифмические шкалы по обеим осям. Semilogx делает график, используя полулогарифмический масштаб, при этом ось X – логарифмическая, а ось Y – линейная. Semilogy строит график, используя полулогарифмический масштаб, при котором ось Y – логарифмическая, а ось X – линейная.
    Пример. В телевизионной игре "Кто хочет стать миллионером" всего 14 туров, выигрыши в них составляют 100, 200, 300, 500, 1000, 2000, 4000, 8000, 16000, 32000, 64000, 125000, 500000,
    1000000 рублей соответственно
    1
    . Требуется построить график выигрыша в зависимости от номера тура, используя команды plot, subplot, semilogy, title, xlabel, ylabel, bar.
    Вводим исходные данные и строим графики в обычном и полулогарифмическом масштабах.
    >> y=[100 200 300 500 1000 2000 4000 8000 16000 32000 64000 125000 500000 1000000];
    >> subplot(121); plot(y),grid, title('Rate of game'), xlabel('Tours');ylabel('Rubles');
    >> subplot(122); semilogy(y), grid, title('Rate of game'), xlabel('Tours');ylabel('Rubles');
    Графики приведены на рис.4.2. Видим, что в полулогарифмическом масштабе зависимость выигрыша от номера тура близка к линейной.
    0 5
    10 15 0
    2 4
    6 8
    10
    x 10 5
    Rate of game
    Tours
    R
    u b
    le s
    0 5
    10 15 10 2
    10 4
    10 6
    Rate of game "MILLIONER"
    Tours
    R
    u b
    le s
    Рис.4.2 1
    Данные относятся к середине 2005 года

    49
    Для построения графиков в полярной системе координат используется команда polar. Она имеет те же модификации, что и команда plot, допуская использование как векторных, так и матричных аргументов. По команде polar(

    , r)
    строится график r = f(

    ), показывающий зависимость длины радиус-вектора r от угловой координаты

    , которая измеряется в радианах.
    Например, полярное уравнение логарифмической спирали имеет вид r = be
    a

    . Ее построение в полярной системе координат для b=1, a= – 0,2 показано на рис. 4.3.
    0.2 0.4 0.6 0.8 1
    30 210 60 240 90 270 120 300 150 330 180 0
    t = 0:.1:10; r = exp(-.2*t); polar(t,r,'*')
    Рис. 4.3
    t=0:10:180; x=sind(t); stairs(x)
    Рис. 4.4
    Команда comet удобна для вычерчивания траекторий движения, в ней «хвост» графика выделяется другим цветом, что дает возможность наблюдать динамику его построения. График, построенный командой stem, имеет вид вертикальных отрезков, заканчивающихся кружочками, наподобие стебельков цветов.
    Команда stairs рисует график вектора х
    в виде ступенек (лестницы), как это показано на рис.
    4.4 для полуволны синусоиды. Еще один способ отображения информации – использование столбцовых графиков, которые строит команда bar. Она дает изображение элементов вектора х в виде расположенных рядом столбцов, высота которых определяется значением элементов (рис.
    4.5). Команда barh отличается горизонтальным расположением столбцов.
    1 2
    3 4
    5 6
    0 1
    2 3
    4 5
    x=5:-1:0; bar(x)
    Рис. 4.5 20 40 60 80 100
    -1
    -0.5 0
    0.5 1
    t=0:.1:10; x=sin(t); area(x)
    Рис. 4.6 0
    5 10 15 20 0
    0.2 0.4 0.6 0.8 1

    50
    Команды area, fill и patch позволяют закрашивать области на графике. Пример действия первой из них приведен на рис. 4.6, где закрашена область между графиком синусоиды и осью абсцисс.
    Цветовая палитра графика может уточняться с помощью функции colormap. В качестве аргумента у нее возможны опции white, gray, black, cool, hot, 'default'. Разные цвета можно задавать трехэлементной численной rgb-кодировкой, где первый элемент указывает интенсивность красного цвета, второй – зеленого, третий – синего. Например, [0 0 0] черный цвет, [1 1 1] – белый, [.5 .5 .5]
    – серый, [1 0 0] – красный, [127/255 1 212/255] – аквамариновый. Можно использовать также буквенные обозначения 'r','g','b','c','m','y', 'w', или 'k'. Функция colormap может использоваться и с другими командами графики, такими как errorbar, imagesc, pcolor.
    Команда rectangle строит графический примитив в виде прямоугольника с прямыми или скругленными углами, а команда line проводит отрезок прямой линии, соединяющей две точки.
    Команда ribbon
    рисует двумерный график в виде ленты в трехмерном пространстве. Например, набрав x=0:.2:10; y=sin(x); ribbon(y)
    получим синусоидальную поверхность (рис. 4.7).
    0.6 0.8 1
    1.2 1.4 0
    50 100 150
    -1
    -0.5 0
    0.5 1
    Рис. 4.7 0
    1 2
    3 4
    5 6
    7 8
    9 10
    -1
    -0.8
    -0.6
    -0.4
    -0.2 0
    0.2 0.4 0.6 0.8 1
    Рис. 4.8
    Команда
    1   2   3   4   5   6   7   8   9   10   ...   18


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