Задание осей координат

ЭЛЕМЕНТАРНАЯ ГРАФИКА

В режиме непосредственных вычислений доступны практически все воз-можности системы [5]. Широко используется, например, построение графиков различных функций, дающих наглядное представление об их поведении в широком диапазоне изменения аргумента. При этом графики строятся в отдельных масштабируемых и перемещаемых окнах.

Двумерная графика

4.1.1. Графика в линейном масштабе

Построение графиков осуществляется для наборов значений с возможностью задания дополнительного оформления:

• plot(y) – построение графика одномерного массива в зависимости от номера элемента (для двумерного массива строятся графики для столбцов);

• plot(x, y) – построение графика функции yº=ºy(x); при двумерном х строятся графики хº=ºх(y); если оба массива двумерные, строятся зависимости для соответствующих столбцов;

• plot(x, y, LineSpec) определяет (табл. 4.1, 4.2) стиль линий, форму маркера точек и цвет линий и маркера заданием строки LineSpec (до трех символов).

Таблица 4.1 Таблица 4.2

Стиль линии Символ   Цвет Символ Цвет Символ
Непрерывная   Желтый y Зеленый g
Штриховая – –   Фиолетовый m Синий b
Двойной пунктир :   Голубой c Белый w
Штрихпунктирная –.   Красный r Черный k

Задание осей координат - student2.ru Например, последовательность команд:

»X = [–pi : 0.1 : pi];

»X1 = sin(X);

»plot(X1, '^ r')

обеспечит построение графика, представленного на рис. 4.1.

По умолчанию выбирается непрерывная линия с точечным маркером и чередованием цветов с желтого по синий. Маркер может определяться символами: . + * °, а также s (квадрат), d (ромб), р (пятиугольник), h (шестиугольник), v ^ < > (стрелки).

Команда plot(x1, y1, LineSpec1, x2, y2, LineSpec2, ...) строит на одном графике несколько линий (диапазон по аргументу – объединение х1 и х2).

Задание осей координат - student2.ru Рис. 4.2 Задание осей координат - student2.ru Рис. 4.3 В результате выполнения команд: »x = [–3 : 0.1 : 3]; »y = x.^2; »x1 = x+3; »y1= x1; »plot(x, y, x1, y1) будут получены графики, как на рис. 4.2. Выполнение последовательности команд с расширенным набором аргументов: »x = 0 : 0.3 : 6; »y = besselj(0, x); % команда J0(x) »x1 = 0 : 0.4 : 8; »y1 = besselj(1, x1); % команда J1(x) »plot(x, y, '–sk', x1, y1, '–pk', 'LineWidth', 1)

приведет к построению (рис. 4.3) двух графиков с разным оформлением, где plot(..., 'PropertyName', PropertyValue, ...) задает значения свойств графического объекта Line (толщину линий LineWidth, размер маркера MarcerSize, цвет маркера MarcerFaceColor и др.).

4.1.2. Построение графиков функций

Есть возможность построить график функции по ее имени и аргументу:

• fplot(<имя функции>, limits)строит график функции (функций) в интервале limitsº=º[xmin, xmax]. В качестве имени функции может использоваться m-файл или строка типа 'sin(x)', '[sin(x) cos(x)]', '[sin(x), myfun1(x), myfun2(x)]'. Можно установить размеры графика по оси значений функции limitsº=º[xmin, xmax, ymin, ymax];

• fplot(<имя функции>,limits,eps)строит график c относительной погрешностью ерs (по умолчанию 0.002) и максимальным числом шагов (1/eps) + 1. Эту конструкцию можно дополнить четвертым параметром n (n + 1 – минимальное число точек) и параметром LineSpec.

Задание осей координат - student2.ru Рис. 4.4 С помощью команды: »fplot('[besselj(0, x) besselj(1, x) 0]', [0 10], [ ], 20) обеспечивается построение графиков двух функций Бесселя (рис. 4.4) для указанного диапазона аргумента [0 10].

Команда ezplot('f(x)') строит график f (x), заданной символьным выражением (например, ezplot('x^2–2*x+1')), на интервале [–2p 2p] с выводом выражения в качестве заголовка графика. Команды ezplot('f(x)', limits, fig) и ezplot('f(x)', limits) строят график f (x) на указанном интервале в заданном окне.

График в полярных координатахопределяется командами polar(f, r) и polar(f, r, LineSpec), где f – массив значений угла, r – соответствующие значения радиуса. Примеры использования полярной системы координат представлены на рис. 4.5.

»f = 0 : 0.02 : 2*pi »r = sin(2.*f).*cos(2.*f); »hp = polar(f, r), hold on »set(hp, 'LineWidth', 4)   »f = 0 : 0.01 : 15*pi »r = exp(–0.1*f); »hp = polar(f, r), hold on »set(hp, 'LineWidth', 4)
Задание осей координат - student2.ru   Рис. 4.5 Задание осей координат - student2.ru

График в логарифмическом масштабе задается функцией loglog c тем же набором параметров, что и plot, с той лишь разницей, что проводится масштабирование десятичным логарифмированием по обеим координатам.

График в полулогарифмическом масштабезадается командами semilogxи semilogy с тем же набором параметров, что и plot (проводится масштабирование логарифмированием по одной из координат).

Задание осей координат - student2.ru График с двумя осями ординат (одна отображается слева, другая справа) реализуется функцией plotyy(x1, y1, x2, y2)и той же функцией с добавлением параметров масштабирования 'f1' или 'f1', 'f2', в роли которых могут выступать semilogx, semilogx, loglog, plot.

Результат, представленный на рис. 4.6, получен с помощью команд:

»x = 0 : 0.01 : 12*pi;

»plotyy(x, sin(x), x, 10*exp(–0.1.*x))

Трехмерная графика

В трехмерной графике выполняются представления функции z = z(x, y), отличающиеся способом соединения точек: линия, сечения, сетчатая или сплошная поверхность.

Задание осей координат - student2.ru Рис. 4.7 Команда plot3(x, y, z)в тех же вариациях, что и plot, предполагает задание одномерных и двумерных массивов – строятся точки с координатами x(i,:), y(i,:), z(i,:) для каждого столбца и соединяются прямыми линиями. Применив команды: »t = 0.01 : 0.01 : 20*pi; »plot3(cos(t), sin(t), t.^3) получим «пружину» (рис. 4.7).
Задание осей координат - student2.ru Рис. 4.8 Задание осей координат - student2.ru Рис. 4.9 При использовании [x, y] = meshgrid(...) можно построить сечения (рис. 4.8 и 4.9) при выполнении последовательности команд: »xord = –1 : .05 : 1; »yord = –1 : .05 : 1; »[x, y] = meshgrid(xord, yord); »z1 = x .* sin(x.^2 – y.^2); »z2 = y .* cos(x.^2 + y.^2); »plot3(x, y, z1), grid on; % рис. 4.8 »mesh(xord, yord, z2) % рис. 4.9 Команды mesh(x, y, z, c), mesh(z, c), mesh(z) определяют задание сетчатой поверхности (массив cопределяет цвета узлов поверхности; если x, уне указаны, то x = 1: n, y = 1: m, где [m, n] = size(z).  

Аналогичная команда meshс в дополнение к поверхности строит проекции линий уровня, а meshz делает срез поверхности до нулевого уровня (своеобразный пьедестал). Результаты их применения показаны на рис. 4.10.

»meshc(xord, yord, z1) »meshz(x, y, z2)
Задание осей координат - student2.ru Задание осей координат - student2.ru
Рис. 4.10

Команды surf(x, y, z, c), surf(z, c), surf(z) определяют задание сплошной поверхности, отличаясь от mesh системой окраски; команда surfс(...) задает проекции линий уровня. Примеры их использования приведены на рис. 4.11.

»surf(z) »shading interp
Задание осей координат - student2.ru Задание осей координат - student2.ru
Рис. 4.11

Реализация трехмерной графики может сопровождаться множеством вспомогательных команд, например:

• hidden on / off включает или выключает режим удаления невидимых линий (по умолчанию on);

• shading faceted / flat / interp устанавливает затенение поверхностей (по умолчанию faceted дает равномерную окраску ячеек с черными гранями, flat – цветами узлов сетки, interp – интерполяцией цветов.

Задание осей координат

Графический объект создается автоматически при обращении к командам, порождающим объекты Line и Surface, или командой axec('<имя свойства>', <значение>, ...). Есть и команды более высокого уровня:

• axis([xmin xmax ymin ymax]), axis([xmin xmax ymin ymax zmin zmax]) устанавливает масштаб по осям;

• axes off / onвыключает (включает) вывод на координатные оси обозначений и маркеров;

• grid on / off, gridвключает (выключает) или переключает режим нанесения координатной сетки на осях;

• box on / off, box включает (выключает) или переключает режим рисования контура параллелепипеда, трехмерный объект;

• zoom on / off включает (выключает) режим интерактивного масштабирования графиков: левая кнопка мыши увеличивает масштаб вдвое, правая – уменьшает; удержанием левой кнопки мыши можно выделить прямоугольную область для детального просмотра; zoom outвосстанавливает исходный график.

Линии уровня

В отличие от meshс (...) и surfс(...) команда contour рисует только линии уровня соответствующих поверхностей и выступает в многообразии синтаксических форм: contour(X, Y, Z) – для массива Z = Z(X, Y), contour(X, Y, Z, n) – то же с указанием числа линий уровня (по умолчанию 10), что демонстрирует рис. 4.12, contour(X, Y, Z, v) – то же для массива указанных значений; contour(Z), contour(Z, n), contour(Z, v) – аналогичные команды без указания диапазонов для аргументов и contour(..., LineSpec) – аналогичные команды с указанием типа и цвета линий (см. plot); [с, h] = contour (...) возвращает массив с и вектор дескрипторов, позволяя тем самым продолжить работу с рисунком (давать оцифровку линий, заголовки и др.).

»[c, h] = contour(xord, yord, z1, 20); »[c, h, cf] = contourf(xord, yord, z1, 20);
Задание осей координат - student2.ru Рис. 4.12 Задание осей координат - student2.ru Рис. 4.13

Команда contourf(...) закрашивает области между линиями уровня, аналогична contour(...) с разницей в формате [с, h, cf] = contourf(...), где cf определяет матрицу раскраски (рис. 4.13).

Наши рекомендации