5.1.1 Графики в линейном масштабе
Построение графика функции одной переменной (или нескольких таких графиков) в линейном масштабе осуществляется с помощью команды plot(…).
Рассмотрим использование команды plot(…) на конкретных примерах.
Пример 1. Построить график функции y(t) = e-2tcos(10t), где аргумент t меняется в интервале [0;1] с шагом 0,01 (рис. 5.1).
>> t=[0:0.01:1];
>> y=exp(-2*t).*cos(10*t);
>> plot(t,y)
Рис. 5.1
Пример 2. Построить в одном окне графики двух функций x(t) = 2sin(50t) и y(t)=e-2tcos(10t), где аргумент t меняется в интервале [0;2] с шагом 0,01, (рис. 5.2).
>> t=[0:0.01:2];
>> y=exp(-2*t).*cos(10*t);
>> x=2*sin(50*t);
>> plot(t,x,t,y)
Рис. 5.2
Обсудим построенные графики.
1. Команда plot(t,x) позволяет строить в декартовой системе координат график одномерной функции x с аргументом t. При этом в скобках на первом месте стоит аргумент, а на втором функция.
2. MATLAB (если это не указано специально) самостоятельно выбирает цвет графика, масштаб и оцифровывает оси абсцисс и ординат. Из рис. 5.2 видно, что масштабирование производится по максимальным значениям одной из функций и ее аргумента.
3. Для функции x(t) = 2sin(50t) шаг изменения аргумента оказался не достаточно малым, и поэтому на ее графике отчетливо видны изломы.
Порой неверный выбор шага изменения аргумента функции может существенно исказить ее график.
Если пользователь затрудняется выбрать подходящий шаг (шаг дискретизации аргумента), то при выводе графика функции можно воспользоваться командой fplot(…), и MATLAB подберет шаг дискретизации самостоятельно. Поясним это на примере.
Пусть требуется вычислить функцию y = cos10x·(sinx+0,1sin(100πx))на интервале[0;1].
Если шаг дискретизации Δхвыбрать равнымΔх=0.01, то при выводе графика с помощью командыplot(…)получим результат, показанный на рис. 5.3а, что не соответствует истинной картине. Дело в том, что при таком шаге второе слагаемое сомножителя, заключенного в скобки, все время обращается в нуль. Верен график, показанный на рис. 5.3б.
Листинги программ вычисления функции и вывода ее графика с помощью команды plot(…)и командыfplot(…) выглядят следующим образом:
Вариант с применением Вариант с применением
команды plot(…) (рис. 5.3а) командыfplot(…) (рис. 5.3б)
x=[0:0.01:1]; y=myfun(x);
y=cos(10*x).*(sin(x)+0.1*sin(100*pi*x)); fplot(‘myfun’,[0,1])
plot(x,y)
Рис. 5.3а Рис. 5.3б
Первым входным аргументом fplot(…) является имя файл-функции, а вторым – вектор, элементы которого есть границы отрезков: fplot('имя файл-функции', [a,b]).
Для приведенного примера файл-функция myfun имеет вид:
function y=myfun(x);
y=cos(10*x).*(sin(x)+0.1*sin(100*pi*x));
Иногда требуется сравнить поведение двух функций, значения которых сильно отличаются друг от друга. При этом на графике с небольшими значениями функции бывает трудно выявить ее характерные особенности. В таком случае можно воспользоваться командой plotyy(…), который позволяет вывести графики двух функций в одно окно и нанести в этом окне две оси ординат, имеющие подходящий масштаб.
Пример 3. Увеличим амплитуду синусоиды функции x(t) из примера 2 в 50 раз, т.е. положим что x(t) = 100sin(50t), а y(t) = e-2tcos(10t), где аргумент t меняется от 0 до 2 с шагом 0,01. Если для построения графиков этих функций использовать команду plot(…), то получим график, представленный на рис. 5.4
Рис. 5.4
Выведем теперь графики тех же функций с помощью команды plotyy(…) (рис. 5.5)
Рис. 5.5
На рис. 5.5 проявляются характерные особенности каждой из функций. Кроме того, на цветном мониторе видно, что цвет каждой из вертикальных осей повторяет цвет соответствующего графика. При черно-белом изображении графики различных функций отличаются лишь оттенками серого цвета.
Иногда график функции требуется снабдить заранее заданными отличительными признаками, например, цветом, определенным типом линии, расположить на этой линии специальные символы (маркеры). Для этого также применяется команда plot(…), но более сложной конструкции.
Пример 4. Вычертить график функции y(t) = e-2tcos(10t) в виде штриховой линии красного цвета, помеченной маркером типа «кружок». Аргумент t меняется в интервале [0;1] с шагом 0,03.
Эта задача решается следующим образом (рис. 5.6):
>> t=[0:0.03:1];
>> y=exp(-2*t).*cos(10*t);
>> plot(t,y,'ro--')
Рис. 5.6
Полезно сравнить структуру команды plot(…) в этом примере и в примере 1. Из сравнения следует, что в команду plot(…) в настоящем примере включен дополнительный параметр, который заключается в апострофы. Этот параметр представляет собой последовательность символов, определяющих цвет линии (r – это красный цвет), тип маркера (о– это кружок) и стиль линии (двойной дефикс, т.е. символ -- соответствует штриховой линии). Заметим, что внутри апострофов между отдельными символами нет никаких разделительных знаков.
В таблице 5.1 содержатся данные, необходимые для определения свойств линий графиков.
Таблица 5.1 Свойства графиков
Цвет | Тип маркера | Стиль линии |
y желтый | ∙ точка | - сплошная |
m розовый | о кружок | : пунктирная |
с голубой | х крестик | -. штрих-пунктирная |
r красный | + знак “плюс” | -- штриховая |
g зеленый | s квадрат |
|
b синий | d ромб |
|
w белый | v треугольник вершиной вниз |
|
k черный | ^ треугольник вершиной вверх |
|
| < треугольник вершиной влево |
|
| > треугольник вершиной вправо |
|
| p пятиконечная звезда |
|
| h шестиконечная звезда |
|
Команда plot(t,y,S), где S – дополнительный параметр, заключенный в апострофы [например, у+- (цвет желтый, тип маркера +, стиль линии сплошная) или сd: (голубой, ромб, пунктирная) или другая комбинация символов из табл 5.1], чаще всего применяется вычерчивании нескольких графиков в одном окне. Поясним это на примере.
Пример 5. Вычертить в одном окне графики трех функций y(t) = sin(0,5t), y(t) = cos(0,5t) и y(t) = sint при изменении t в пределах от –2π до 2π с шагом 0,1π (рис. 5.7).
>> t=[-2*pi:0.1*pi:2*pi];
>> y1=sin(0.5*t);
>> y2=cos(0.5*t);
>> y3=sin(t).^5;
>> plot(t,y1,'k',t,y2,'r-.+',t,y3,'-o')
Рис. 5.7
В данном случае команда plot(…)содержит требования по выводу графиков трех функций: у1, у2 и у3. При этом параметр S для функции у1 состоит лишь из двух символов. В этом случае S = ’-m'. В то же время для функции у2 S = '-.+r', а для функции у3 S = '-ok'.
Вывод: Символы, определяющие цвет, тип маркера, стиль линии и находящиеся внутри апострофов, могут располагаться в любой последовательности. Внутри апострофов могут располагаться один, два или три таких символа.
В заключение рассмотрения команды plot(…) отметим, что она может использоваться и с одним аргументом, например, в виде plot(Y). При этом аргумент команды plot(…), т. е. Y, должен быть предварительно задан в виде вектора или матрицы. Если Y есть вектор, то на графике строится зависимость значений элементов вектора от номеров элементов. Если аргументом команды plot(…) является матрица, то на одни координатные оси выводятся графики столбцов.
Пример 6. Построить график функции y(t) = e-2tcos(10t), где аргумент t меняется от 0 до 1 с шагом 0,01. Функцию у задать как вектор.
>> t=[0:0.01:1];
>> Y=exp(-2*t).*cos(10*t);
>> plot(Y)
В результате выполнения программы построенный график (рис. 5.8) по форме повторяет график, представленный на рис. 5.1. Однако, разбиение оси абсцисс на рис. 5.8 производится по возрастанию номеров элементов вектора Y. Номера элементов вектора – всегда целые числа.
Рис. 5.8
Пример 7. Применить команду plot для построения в одном окне графиков столбцов матрицы Y (рис. 5.9).
>> t=[0:0.2*pi:pi];
>> fi=0:0.2*pi:pi;
>> Y=(cos(t)).^2+sin(fi);
>> plot(Y)
Рис. 5.9
- Основы работы и программирования, компьютерная математика Учебный курс
- Isbn ооо «Харвест», 2008
- Предисловие
- Введение
- Глава 1 знакомство с matlab и простейшие вычисления
- 1.1. Рабочая средаMatlab
- 1.2. Арифметические вычисления
- 1.3. Вещественные числа
- 1.4. Форматы вывода результата вычислений
- 1.5 Комплексные числа
- 1.6 Векторы и матрицы
- 1.7 Встроенные функции. Функции, задаваемые пользователем
- 1.8 Сообщения об ошибках и их исправление
- 1.9 Просмотр и сохранение переменных
- 1.10 Матричные и поэлементные операции над векторами и матрицами
- 1.11 Решение систем линейных уравнений
- Вопросы для самопроверки
- Глава 2 работа с массивами
- 2.1 Создание векторов и матриц
- 2.2 Применение команд обработки данных к векторам и матрицам
- 2.3 Создание специальных матриц
- 2.4 Создание новых массивов на основе существующих
- 2.5 Вычисление собственных значений и собственных векторов. Решение типовых задач линейной алгебры
- Вопросы для самопроверки
- Глава 3 м-файлы
- 3.1 Файл-программы
- 3.2 Файл-функции
- Вопросы для самопроверки
- Глава 4 программирование
- 4.1 Операторы отношения и логические операторы
- 4.2 Операторы цикла
- 4.3 Операторы ветвления
- 4.4 Оператор переключения switch
- 4.5 Оператор прерывания цикла break
- 4.6 Пример сравнения быстродействия матричных и скалярных операций
- Вопросы для самопроверки
- Глава 5 высокоуровневая графика
- 5.1 2D графика
- 5.1.1 Графики в линейном масштабе
- 5.2 Специальные виды 2d - графиков
- 5.2.1 Представление функции в виде дискретных отсчетов
- 5.2.2 Лестничные графики
- 5.2.3 Графики с указанием погрешности
- 5.2.4 Графики в логарифмическом и полулогарифмическом масштабах
- 5.2.5 Графики параметрических функций
- 5.3 3D графика
- 5.3.1 Линейчатые поверхности
- 5.3.2 Каркасные поверхности
- 5.3.3 Контурные графики
- 5.3.4 Сплошная освещенная поверхность
- 5.4 Оформление, экспорт и анимация
- 5.4.1 Оформление графиков
- 5.4.2 Сохранение и экспорт графиков
- 5.4.3 Анимация
- Вопросы для самопроверки
- Глава 6 прикладная численная математика
- 6.1 Операции с полиномами
- 6.2 Решение уравнений и их систем
- 6.3 Минимизация функции одной переменной
- 6.4 Минимизация функции нескольких переменных
- 6.5 Вычисление определенных интегралов
- 6.6 Решение дифференциальных уравнений
- 6.7 Аппроксимация и интерполяция данных
- 6.8 Интерполяция двумерных и многомерных данных
- Вопросы для самопроверки
- Глава 7 символьные вычисления
- 7.1 Символьные переменные, константы и выражения
- 7.2 Вычисления с использованием арифметики произвольной точности
- 7.3 Команды упрощения выражений – simplify, simple
- 7.4 Команда расширения выражений – expand
- 7.5 Разложение выражений на простые множители – команда factor
- 7.6 Приведение подобных членов – команда collect
- 7.7 Обеспечение подстановок – команда subs
- 7.8 Вычисление пределов – команда limit
- 7.9 Вычисление производных – команда diff
- 7.10 Вычисление интегралов – команда int
- 7.11 Разложение в ряд Тейлора – команда taylor
- 7.12 Вычисление суммы ряда – команда symsum
- 7.13 Решение уравнений и их систем – команда solve
- 7.14 Решение дифференциальных уравнений – команда dsolve
- 7.15 Прямое и обратное преобразования Лапласа – команды laplace,ilaplace
- 7.16 Графики символьных функций – команды ezplot, ezpolar
- 7.17 Прямой доступ к ядру системы Maple – командаmaple
- 7.18 Разложение рациональной дроби на сумму простейших дробей
- 7.19 Интерполяционный полином Лагранжа
- 7.20 Решение неравенств и систем неравенств
- 7.21 Разложение в ряд Тейлора функции нескольких переменных
- 7.22 Решение дифференциальных уравнений с помощью степенных рядов
- 7.23 Решение тригонометрических уравнений
- Вопросы для самопроверки
- Приложения Приложение 1. Справочная система matlab
- Приложение 2. Знакомство с пакетами расширения системыMatlab
- Приложение 3. Задания для самостоятельной работы
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Литература