Главная страница

Практикум по матлабу. практикум по матлабу. Физических процессов с использованием


Скачать 1.13 Mb.
НазваниеФизических процессов с использованием
АнкорПрактикум по матлабу
Дата21.06.2021
Размер1.13 Mb.
Формат файлаpdf
Имя файлапрактикум по матлабу.pdf
ТипУчебное пособие
#219898
страница14 из 17
1   ...   9   10   11   12   13   14   15   16   17
Editor/Debu-
ger. Для его запуска используется команда
edit <имя_файла> или пункт меню
File/Open. Можно открыть окно редактора/отладчика и с помощью пункта ме- ню File/New/M-file. При таком варианте имя отлаживаемого файла открывается уже из меню самого редактора/отладчика. Общий вид окна редактора показан на рис.
2
, а кнопки панели инструментов, которые удобнее всего использовать при отладке, показаны на рис.
3
Панель инструментов редактора/отладчика выглядит следующим образом:
Рис. 3. Кнопки основной панели редактора/отладчика
Способ использования этих кнопок понятен из их названия. Часть кнопок пред- ставляют собой обычные редактирующие кнопки, используемые при сохранении,
копировании, печати и поиске файлов. Другая часть связана непосредственно с от- ладкой. Это кнопки установки и очистки точек остановки, кнопки пошагового пе- ремещения по программе с заходом в подпрограммы (Step in) и без захода в под- программы (Single Step), кнопка продолжения вычислений (Continue) и кнопка
133
остановки отладки (Quit Debugging). Как было отмечено выше, с помощью пунк- та меню View/Workspace Browser можно не только просмотреть, но и изменить значение любой переменной. При этом в одном из окон редактора открывается та- блица, подобная электронной таблице, и в ней можно не только просматривать, но и исправлять значения перемнных.
7.4.
Сравнение алгоритмов:
flops и etime
Для определения эффективности алгоритмов принято использовать два парамет- ра -число операций с плавающей запятой (flops) и затраченное время. Функция
MATLAB
flops сохраняет полное число выполненных операций с плавающей за- пятой. Команда
flops(0) (не flops = 0!) обнуляет счетчик выполненных опера- ций. Таким образом, если вы в начале исполнения вашего алгоритма введете коман- ду
flops(0), то команда flops сразу после его завершения даст число операций.
Функция
clock возвращает текущее время с точностью до сотых долей секунды
(см.
help clock). При наличии двух таких времен t1 и t2 функция etime(t2,t1)
выдает время, прошедшее от
t1 до t2. Можно, например, измерить время, требу- емое для решения данной линейной системы Ax
= b методом исключения Гаусса следующим образом:
t = clock; x = A
\ b; time = etime(clock,t). Вы можете сравнить это время и число
flops с временем решения этой же системы с помощью оператора
x = inv(A)*b;. Попробуйте сами сделать это. В версии 4.0 и выше имеются более удобные функции
tic и toc.
8.
Графика
MATLAB может создавать как плоские графики, так и трехмерные сетчатые по- верхности, а также движущиеся графики, или анимацию. Для знакомства с некото- рыми графическими возможностями имеющейся у вас версии запустите программу
demo.
Основными и наиболее часто употребительными являются графики, которые представляют собой линии, описывающие те или иные численные данные. MAT-
LAB предоставляет набор команд высокого уровня, которые используются для построения таких линий. Это такие команды, как
plot, title, axis, text, hist,
contour и ряд других, описанных в следующих двух разделах.
134

8.1.
Плоские графики
8.1.1.
Команда
plot
Команда
plot создает x-y график в линейных осях; если x и y являются векторами одинаковой длины, то команда
plot(x,y) открывает графическое окно и рисует зависимость
y(x). Вы можете нарисовать график синуса на интервале от -4 до 4 с помощью команды
x = -4:.01:4; y = sin(x); plot(x,y)
Попробуйте это сделать сами. Вектор
x является набором равноотстоящих точек с шагом 0.01, а
y -вектор со значениями функции синуса в этих точках (вспомните,
что синус -поэлементная функция). Рисунок при создании открывает отдельное окно. Переход между окнами (возврат в окно MATLAB или переход от рисунка к рисунку осуществляется в соответствии с правилами среды, например, с помощью комбинации Alt+Tab или с помощью мыши). В качестве второго примера вы мо- жете нарисовать график e
−x
2
на интервале от -1.5 до 1.5 следующим образом:
x =
- 1.5:.01:1.5; y = exp(-x.ˆ2); plot(x,y). Обратите внимание на то, что точка перед
ˆ обязательна, поскольку мы хотим, чтобы возведение в степень выполня- лось поэлементно (см. п.
3.3
). Можно, например, рисовать кривые, заданные па- раметрически. Попробуйте, например, выполнить такой оператор
t=0:.001:2*pi;
x=cos(3*t); y=sin(2*t); plot(x,y).
Аргументами функции
plot могут быть различные комбинации векторов и мат- риц. Возможны следующие варианты:
plot(y)

Если
y -вектор, то будет нарисована кривая y как функция номера эле- мента в
y.

Если
y -матрица, то будет сгенерирован набор кривых, каждая из кото- рых представляет собой зависимость столбца матрицы от номера строки.
plot(x,y)

Если
x и y -вектора одинаковой длины и размерности (оба строки или оба столбцы), то будет нарисована кривая
y от x.

Если
x -вектор, а y -матрица, строки или столбцы y будут нарисованы в зависимости от
x. Если столбец матрицы y имеет ту же длину, что и век- тор
x, то будет построен набор кривых, представляющий зависимость каждого из столбцов от
x. Если строка матрицы y имеет ту же длину,
135
что и вектор
x, то будет построен набор кривых, представляющий зави- симость каждой из строк от
x. Если число строк и столбцов y одинаково,
то строятся столбцы от
x.

Если
x -матрица, а y -вектор, то будет построено несколько кривых представляющих зависимость
y от строк или столбцов матрицы x по пра- вилу, описанному в предыдущем пункте.

Если
x и y -матрицы одинаковой размерности, то будет построен набор кривых, представляющих столбцы
y от столбцов x.
Если у вас цветной монитор, то вы уже обратили внимание, что при описанном способе вызова функции
plot различные кривые на одном и том же графике от- рисовываются разным цветом. Перебор цветов выполняется автоматически, а при использовании соответствующих аргументов у команды
plot эти цвета можно вы- бирать (см. далее).
Число аргументов у команды
plot не ограничивается двумя. Можно исполь- зовать эту команду в формате
plot(x1,y1,x2,y2,...), причем правила, описанные выше, относятся к каждой паре аргументов.
Иногда для отрисовки кривой используется функция
line с теми же аргумента- ми, что и функция
plot. Различие станет ясно после знакомства с дескрипторной графикой низкого уровня (см. п.
8.4
).
Представляет интерес познакомиться с функцией
comet(x,y), которая строит движущуюся двумерную кривую с головой другого цвета. И хотя такое отображе- ние не является анимацией в полном смысле слова, поскольку выполняется отри- совка уже насчитанных точек, тем не менее при построении сложных параметриче- ских кривых полезно использовать эту функцию (например, в задаче исследования кривых Лиссажу).
8.1.2.
Разметка графика и надписи
Команда
grid поместит сетку на график. График может быть снабжен заголов- ком, именами осей, и на сам график может быть помещен дополнительный текст с помощью команд вывода текста. Аргументами всех этих команд является тексто- вая строка. Например, команда
title(’График наилучшего приближения’)
добавит к вашему графику заголовок. Команда
gtext(’Пятно’) позволяет с помо- щью мыши или клавишного курсора разместить на рисунке индикаторный крест,
в месте размещения которого и будет помещен текст после нажатия произволь- ной клавиши. При необходимости сделать подписи осей используются команды
Xlabel(’ПодписьX’), Ylabel(’ПодписьY’). При необходимости вывести в каче-
136
стве надписи какую-либо комбинацию символов, которые отсутствуют в стандарт- ном текстовом процессоре (например, верхние и нижние индексы, формулы и т.д.),
вы можете использовать стандартную нотацию LaTeXа (подробнее о LaTeX вы можете узнать, например в [
10
]). Если выведена неправильная надпись, то можно ее стереть или заменить на другую, повторив такую же команду вывода текста, но с пустой или новой строкой в качестве аргумента.
Для изображения нескольких кривых на одном рисунке существуют два спосо- ба, которые иллюстрируются следующими примерами.
1.
x=0:.01:2*pi;
y1=sin(x);
y2=sin(2*x);
y3=sin(4*x);
plot(x,y1,x,y2,x,y3)
или, что полностью эквивалентно, формируется матрица
Y, содержащая зна- чения изображаемых функций в виде столбцов, и после этого рисунок созда- ется последовательностью команд
x=0:.01:2*pi;
Y=[sin(x)’, sin(2*x)’, sin(4*x)’];
plot(x,Y)
2.
Другим способом такого рисования является использование команды
hold
on, которая замораживает текущий график, так что последующие кривые по- мещаются на этот же график. При этом масштаб и разметка осей изменяют- ся, если новая кривая не вписывается в нарисованные оси. Команда
hold off
приводит к тому, что любой последующий вызов команды
plot создает новый рисунок на этом же листе, т.е. предыдущий график стирается.
При выводе графика можно сменить принятый по умолчанию тип точек, с по- мощью которых рисуется данный график. Например, последовательность команд
x=0:.01:2*pi;
y1=sin(x);
y2=sin(2*x);
y3=sin(4*x);
plot(x,y1,’--’,x,y2,’:’,x,y3,’+’)
приведет к тому, что первый график будет нарисован пунктиром, второй – точками,
а третий – символами + (рис.
4
). В общем случае каждая линия на графике опре- деляется триплетом
x,y,s, где x и y -это вектора с координатами, а s -строковая
137

Рис. 4. Пример графика Sin(x), Sin(2x) и Sin(3x)
переменная, образованная любыми комбинациями из каких-нибудь приведенных ниже столбцов.
S
Цвет
S
Маркер
S
Тип линии y
желтый точка
- сплошная m фиолетовый o
кружок
:
точечная c
голубой x
x-метка
-.
штрих-пунктирная r
красный
+ плюс
-
- пунктирная g
зеленый
*
звездочка b
синий s
квадрат w белый d
алмаз k
черный v
треугольник (вниз)
ˆ
треугольник (вверх)
< треугольник (влево)
> треугольник (вправо)
p шестиугольник h
восьмиугольник
8.1.3.
Управление осями при выводе графиков
По умолчанию масштаб осей выбирается автоматически так чтобы график целиком поместился в окне, причем с разумным запасом. Кроме того, оси автоматически
138
размечаются и по умолчанию выбирается декартова система координат с началом координат
5
, в левом нижнем углу. Эта автоматическая установка может быть из- менена с помощью команды
axis. Использование этой функции применительно к плоским графикам описано в следующей далее таблице.
Обращение
Результат
axis([xmin xmax ymin ymax]) Устанавливает пределы изменения соот- ветственно по
x и y координатам соот- ветственно. Если максимальный предел по любой координате установить равным
Inf,
то соответствующий предел будет опреде- ляться автоматически. Аналогичное спра- ведливо для нижнего предела, если его установить равным
-Inf.
axis(’square’)
Делает область вывода квадратной.
axis(’equal’)
Делает единицы измерения по оси
x и y
одинаковыми.
axis(’normal’)
Восстанавливает режим по умолчанию.
axis(’ij’)
Помещает начало координат в левый верх- ний угол. Направление оси
x -слева на- право, направление оси
y -сверху вниз.
axis(’xy’)
Восстанавливает стандартную декартову систему координат с началом в левом ниж- нем углу и направлением оси
y снизу вверх.
axis(’tight’)
Устанавливает пределы по осям точно рав- ными максимальным и минимальным зна- чениям соответствующих переменных.
5
Началом координат считается точка с координатами x
min
, y
min
.
139

Обращение Результат
axis(’off’) Делает невидимыми оси, метки осей и над- писи на осях.
axis(’on’)
Включает оси и их разметку.
8.1.4.
Несколько графиков на листе
При необходимости вывести на один экран несколько графиков, т.е. разбить гра- фическое окно на несколько отдельных частей, каждая из которых со своими ося- ми, используется команда
subplot(m n p) или, что тоже самое, subplot(m,n,p).
Значение
m указывает, на сколько частей окно разбивается по вертикали, n -по горизонтали, а
p -порядковый номер подокна при счете слева направо и сверху вниз. Команда
subplot используется как для создания нового подокна, так и для перехода от одного подокна к другому. После вызова этой команды
plot нарисует график или графики в соответствующем подокне. Например, последовательность команд
x= -1:.1:1;
y1=sin(x);
subplot(2, 1, 1), plot(x, y1);
y2=log(abs(y1));
subplot(2, 1, 2), plot(x,y2);
строит два рисунка в верхней и нижней части экрана. В верхней части строится гра- фик
sin(x), а в нижней части экрана -зависимость log(abs(sin(x))). Как видно из приведенной выше последовательности команд, при
x=0 вычисляется log(0).
При этом в командном окне появляется предупреждение, а график строится в точках
1 ≤ x ≤ 0.1 и 0.1 ≤ x ≤ 1.
8.2.
Специальные виды графиков
Существует целый ряд функций высокого уровня, которые позволяют построить такие виды зависимости, как столбиковые диаграммы, гистограммы, ступенчатые зависимости и статистические кривые с указанием погрешностей.
8.2.1.
Столбиковые диаграммы
Как правило, построение таких диаграмм у большинства ассоциируется с электрон- ными таблицами или другими подобными средствами. Но поскольку MATLAB
140
используется и для финансового анализа (а также эта функция удобна для постро- ения гистограмм), мы здесь с ней познакомимся.
Если необходимо построить столбиковую диаграмму, показывающую зависи- мость какой-либо величины, хранящейся в векторе
bar_h, от номера каждого эле- мента, то это выполняется командой
bar(bar_h). Если необходимо построить эту же зависимость, но от другой величины, то используется функция
bar(bar_h,x).
Если вам необходимо рисовать столбики определенного цвета или с помощью опре- деленной линии, то можно использовать еще один аргумент у функции
bar(x, y,
line_style_string), который полностью эквивалентен такому же аргументу у ко- манды
plot(см. п.
8.1.2
). Существуют еще разные возможности построения стол- биковых диаграмм, когда аргументом является не вектор, а матрица. При этом воз- никают различные возможности группировки этих столбиков. Поскольку это вы- ходит за рамки наших интересов, рекомендуем при необходимости ознакомиться с этими возможностями с помощью встроенной помощи(
help bar).
8.2.2.
Ступенчатые кривые
В системе MATLAB существует функция, которая создает ступенчатое изобра- жение ваших данных. Например, вместо соединения каждой пары точек из векторов- аргументов прямыми линиями (как это делает функция
plot или line) функция
stairs изображает ваши данные в виде горизонтальных отрезков на уровне y
i
, при- чем каждый отрезок горизонтальной линии длится от i до i
+ 1, если обращение имеет вид
stairs(y), и от x
i
до x
i+1
, если обращение имеет вид
stairs(x,y). Зна- чения x
i
не должны быть равноотстоящими и не должны быть упорядочены по возрастанию. Вывод графика на экран можно предотвратить, используя обраще- ние вида
[xs,ys]=stairs(x,y). Потом этот график может быть выведен на экран с помощью команды
plot, line или другим каким-нибудь способом (см., например,
п.
8.6
)
8.2.3.
Гистограммы
Гистограмма является специальным видом столбиковой диаграммы. При постро- ении гистограмы (т.е. графического изображения распределения некоторой вели- чины) необходимо задавать определенное число бинов (иногда говорят: каналов гистограммы)
6
, определяя тем самым, сколько данных попадет в каждый бин, и
6
Т.е. число разбиений переменной на интервалы, относительно которой и будет вычис-
ляться и строиться распределение. Например, если студенты имеют рост от 150 см до 200 см,
то можно разбить этот интервал ростов на 10 бинов, по 5 см в каждом, т.е это интервалы от
150 см до 155 см и т.д. Так вот, гистограмма показывает, сколько студентов попадает в каждый
141
графически изображать это в виде столбиковой или ступенчатой диаграммы. В
MATLAB существует функция
hist, которая при обращении к ней в виде hist(y)
вычисляет и рисует гистограмму с 10 бинами, равномерно распределенными между
y
max
и y
min
. Кроме того, функция
hist(y) может иметь второй аргумент. Если этот аргумент -целое число, то это число определяет число бинов. Если второй аргумент -вектор, то этот вектор определяет центры используемых бинов. В этом случае центры бинов должны быть равноотстоящими, а координаты этих центров должны быть расположены в возрастающем порядке. При нарушении любого из этих условий результат становится непредсказуемым.
Как и при использовании команды
1   ...   9   10   11   12   13   14   15   16   17


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