Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1-2 Моделирование / Matlab. Практический подход. Самоучитель

.pdf
Скачиваний:
763
Добавлен:
31.01.2021
Размер:
12.72 Mб
Скачать

Глава 1. Принципы работы Matlab и основы вычислений

Рис. 1.10. Применение различных форматов вывода (конечная часть командного окна)

Заметим, что настройки формата вывода влияют только на способ отображения числовых значений, но никак не точность их представления. Поэтому главным критерием при выборе способа вывода данных может быть вопрос удобства.

На заметку

Есть одна функция, которая хотя напрямую и не относится к определению формата вывода числовых данных, ее использование значительно облегчает процесс взаимодействия пользователя с системой. Это функция clc, которая позволяет очистить рабочее пространство от команд ввода и результатов их выполнения.

41

Глава 2

Графика в Matlab

Когда настоящие знатоки выносят свое мнение об искусстве, я скромно молчу...

К/ф "Клуб самоубийц, или Приключения титулованной особы"

Бесспорным является тот факт, что визуализация расчетных данных не менее важна, чем сам процесс вычислений и анализа. Поэтому функциональность практически любого приложения, в том числе и математического пакета, во многом определяется именно возможностями по созданию графики. Как будет показано далее, в Matlab пользователю предоставляется широкий простор для деятельности в плане создания всевозможных графических иллюстраций, включая анимацию.

Создание графика функции

Так где мы можем обсудить аспекты, так сказать, нашего общего дела?

К/ф "Клуб самоубийц, или Приключения титулованной особы"

Одной из самых простых задач в области построения графиков является задача по созданию графика функции одной переменной. Основное правило состоит в том, что необходимо предварительно задать массив значений аргумента (узловые точки) функции и значений функции в узловых точках. Делаться это может по-разному. Рассмотрим наиболее общие случаи.

Для создания графика функции одной переменной используют функцию plot(). Первым аргументом функции указывается массив узловых точек, а второй аргумент функции – значения отображаемой на графике функции в этих узловых точках. На рис. 2.1 показан построенный в Matlab всего с помощью нескольких команд график для функции Бесселя J0(x).

Для создания графика использовались следующие команды:

>>x=0:0.005:40;

>>y=besselj(0,x);

>>plot(x,y)

Первой командой x=0:0.005:40 создается вектор-строка x с числовыми значениями от 0 до 40 и интервалом изменения 0.005 (вектор узловых точек). Это достаточно большой массив значений. Чтобы он не отображался на экране при выполнении команды создания вектора x, со-

42

Глава 2. Графика в Matlab

Рис. 2.1. График функции Бесселя, построенный в Matlab

ответствующая команда заканчивается точкой с запятой. Далее, командой y=besselj(0,x) создается вектор-строка y со значениями функции Бесселя в узловых точках. Для вычисления значений использована встроенная функция Matlab besselj(), первым аргументом указывается индекс функции Бесселя, а второй – массив узловых точек. Как отмечалось в первой главе, для большинства встроенных функций Matlab действует правило, согласно которому если вместо ожидаемого скалярного аргумента функции указан вектор, в качестве результата возвращается вектор того же размера со значениями функции в соответствующих точках. Здесь это правило было использовано на практике. Наличие точки с запятой в конце команды вызвано теми же причинами, что и в предыдущем случае.

Наконец, непосредственно график функции строится с помощью команды plot(x,y). В результате выполнения команды автоматически создается графическое окно с полем, на котором отображен график функции. По умолчанию окно имеет название Figure 1 и кроме непосредственно графика содержит ряд меню и пиктограмм для работы с созданным графическим объектом (см. рис. 2.1).

Применяемое по умолчанию при создании графика форматирование не всегда является оптимальным, поэтому обычно приходится прибегать к дополнительным настройкам. Часть из них может быть выполнена

43

Самоучитель Matlab

командами в рабочем документе, а часть выполняется непосредственно в графическом окне. Назначения большинства меню, команд меню и кнопок на панели инструментов достаточно очевидны, и читатель сможет легко разобраться в этом самостоятельно. Остановимся только на некоторых аспектах работы с настройками графического окна. В частности, командой Axes Properties из меню Edit графического окна (рис. 2.2) в графическом окне открывается специальная панель для настройки внешнего вида координатных осей.

Рис. 2.2. Выбор команды Axes Properties из меню Edit графического окна для настройки вида координатных осей графика

Графическое окно с открытой панелью настройки координатных осей показано на рис. 2.3. При этом ряд настроек уже выполнен.

В частности, в текстовом поле Title указано название для графика: Bessel Function. Это название отображается в верхней части графического окна над областью отображения графика. Установлены флажки опций X и Y раздела Grid. Благодаря этому на графике отображается координатная сетка. При необходимости параметры сетки задаются в отдельном окне настройки, которое открывается после нажатия кнопки Ticks. В текстовых полях X Label на вкладке X Axis и Y Label на вкладке Y Axis указаны подписи для координатных осей - x и y соответственно. На вкладке Font выбран шрифт Arial жирный. Больше опций и параметров настройки доступно после нажатия кнопки More Properties.

44

Глава 2. Графика в Matlab

Рис. 2.3. Графическое окно с панелью для настройки внешнего вида координатных осей графика и рядом выполненных настроек

После выполнения настроек координатных осей панель настройки закрываем (достаточно щелкнуть пиктограмму закрытия панели), а вместо нее открываем панель настройки графических объектов Current Object Properties (также находится в меню Edit – см. рис. 2.3). Если при этом в области графика выделить кривую отображенной функциональной зависимости, графическое окно примет вид, как на рис. 2.4.

В раскрывающемся списке Plot Type выбирают тип графика (кроме кривой, можно, например, использовать стиль диаграммных столбиков, режим заливки области между графиком и координатной осью и ряд других). Тип линии, ее толщина и цвет выбираются в раскрывающихся списках группы Line. Тип маркера (базовый символ, которым на графике выделяются узловые точки, на основании которых строится кривая), раз-

45

Самоучитель Matlab

Рис. 2.4. Графическое окно с разделом настройки вида кривой на графике

Рис. 2.5. Результат внесения изменений относительно вида координатных осей и самого графика функции

46

Глава 2. Графика в Matlab

мер и цветовые параметры задаются с помощью раскрывающихся списков группы Marker.

Враскрывающихся редактируемых полях X Data Source и Y Data Source можно изменить ссылки на данные, на основе которых строится график.

Вэтих полях указываются имена переменных рабочего пространства, содержащих числовые данные для отображения на графике: в поле X Data Source указывается вектор значений узловых точек аргумента функции (в данном случае это переменная x), а в поле Y Data Source указывается вектор значений в узловых точках отображаемой на графике функции. Некоторые из выполняемых настроек вступают в силу сразу, а некоторые – после нажатия кнопки Refresh Data. На рис. 2.5 показано графическое окно с графиком функции Бесселя после ряда выполненных настроек.

Вчастности, выбран режим заливки области между графиком функции и горизонтальной координатной осью, изменен цвет закраски (красный), тип линии установлен штрихованный. Важно также понимать, что одни и те же настройки выполнять разными способами. Например, открыть окно настройки координатных осей можно, выделив координатную рамку и выбрав команду (установив флажок опции) Property Editor в меню View. То же можно делать, выделив кривую на графике. Полезным в этом случае может оказаться и контекстное меню, открывающееся при щелчке правой кнопкой мыши.

Отображение нескольких кривых на одном графике

Да, как эксперимент это интересно. Но какое практическое применение?

К/ф "Приключения Шерлока Холмса и доктора Ватсона. Знакомство"

По умолчанию при вызове функции plot() (с разными аргументами) каждый раз создается новый график, причем создается в исходном графическом окне. Нередко нужно, чтобы несколько графиков отображались одновременно. В этом случае, если графики строятся с помощью функции plot(), между вызовами соответствующих команд необходимо выполнить команду hold on. В результате создаваемое после этого графическое изображение будет пересылаться в уже существующее графическое окно без удаления существующего графика, что позволяет добиться желаемого эффекта: на одном графике отображается сразу несколько кривых. Пример создания в одном графическом окне двух кривых для разных функциональных зависимостей приведен на рис. 2.6.

47

Самоучитель Matlab

Рис. 2.6. Две кривые на одном графике

Для создания на одном графике кривых для двух функциональных зависимостей использовалась следующая последовательность команд:

>>x1=-4*pi:0.01:4*pi;

>>y1=5*sin(x1)./x1;

>>t=0:0.01:2*pi;

>>x2=4*cos(t);

>>y2=3*sin(t);

>>plot(x1,y1)

>>hold on

>>plot(x2,y2)

В данном случае строятся графики для функций y(x) = 5 sin(x) x и функции, заданной в параметрическом виде x(t) = 4 cos(t) и y(t) = 3 sin(t) при значениях параметра 0 ≤ t ≤ 2π - это эллипс.

На заметку

В последнем несложно убедиться, если заметить, что для любого значения

 

2

 

2

 

 

x

 

 

y

 

 

0 ≤ t ≤ 2π имеет место соотношение

 

 

+

 

 

= 1. Это уравнение эллипса.

 

 

 

 

 

4

 

3

 

 

Кривая для первой функции строится на основе векторов x1 и y1, а кривая для второй функции – на основе векторов x2 и y2.

48

Глава 2. Графика в Matlab

Вектор x1 создается командой x1=-4*pi:0.01:4*pi. Значениями элементов вектора являются узловые точки на интервале от −4π до 4π с шагом 0.01. Значения функции y(x) = 5 sin(x) x в этих точках записываются элементами вектора y1. Вектор определяется командой y1=5*sin(x1)./ x1. Обращаем внимание на использование оператора ./ для выполнения поэлементного деления одного массива на другой. Так, результатом выражения 5*sin(x1) является массив (вектор) того же размера, что и x1. Элементы массива рассчитываются умножением на 5 синуса от соответствующего элемента массива x1. Чтобы на основе вычисленного таким образом массива получить значения функции y(x) = 5 sin(x) x в узловых точках, необходимо еще выполнить деление на соответствующие элементы массива x1. Для такой операции используется оператор поэлементного деления

./ - элементы массива слева от оператора делятся на соответствующие им элементы массива справа от оператора.

Несколько по-иному формируются векторы x2 и y2, на основании которых строится вторая кривая. Сначала командой t=0:0.01:2*pi создается вектор t с узловыми значениями параметра, посредством которого в параметрическом виде задана кривая. Это вектор со значениями от 0 до 2π и с шагом дискретности 0.01. Далее на основании значений вектора t создаются векторы x2 и y2. В первом случае использована команда x2=4*cos(t), во втором – команда y2=3*sin(t).

После выполнения команды plot(x1,y1) создается графическое окно с графиком для первой функции. Затем выполняется команда hold on, после чего с помощью команды plot(x2,y2) в созданное ранее графическое окно добавляется график для второй функции. Еще раз обращаем внимание читателя, что если команду hold on не выполнить, второй график отобразится в исходном окне с удалением уже существующего графика. Для того чтобы выйти из режима "удержания" графиков (то есть выйти из режима добавления нового графика к уже существующему), необходимо выполнить инструкцию hold off. После этого каждый новый график будет замещать уже существующий.

На заметку

Что касается самого графика на рис. 2.6, то несложно заметить, что эллипс вытянут не так, как должно было бы быть. Причина в том, что по координатным осям масштаб разный, поэтому картинка деформирована. Обычно это проблем не вызывает. Но бывают случаи, когда важно, чтобы масштаб по каждой из осей был одинаковым – например, если отображается окружность. Полезной в таких случаях будет инструкция axis equal, которую необходимо ввести в рабочем окне и выполнить. Более подробно команды настройки внешнего вида графиков обсуждаются в следующем разделе.

49

Самоучитель Matlab

Формат, используемый по умолчанию при создании графиков, далеко не самый оптимальный. Например, обе кривые по умолчанию отображаются линией одного и того же типа и одного цвета. Тот же график, но с несколько измененными настройками, показан на рис. 2.7.

Рис. 2.7. Графическое окно с двумя кривыми после внесения изменений в настройки отображения графики

Рис. 2.8. Для выполнения настроек свойств кривой используются команды контекстного меню

В частности, добавлены линии координатной сетки, увеличена толщина линий для отображения кривых, а также для второй кривой изменен цвет

50