В режиме непосредственных вычислений доступны практически все возможности системы. Широко используется, например, построение графиков различных функций, дающих наглядное представление об их поведении в широком диапазоне изменения аргумента. При этом графики строятся в отдельных масштабируемых и перемещаемых окнах.
Возьмем вначале простейший пример — построение графика синусоиды. Следует помнить, что MATLAB (как и другие СКМ) строит графики функций по ряду точек, соединяя их отрезками прямых, т. е. осуществляя линейную интерполяцию функции в интервале между смежными точками. Зададим интервал изменения аргумента х от 0 до 10с шагом 0.1. Для построения графика достаточно вначале задать вектор х=0:0.1:10, а затем использовать команду построения графиков plot(sin(x)). Это показано на рис. 3.1.
Вектор х задает интервал изменения независимой переменной от 0 до 10 с шагом 0.1. Почему взят такой шаг, а не, скажем, 1? Дело в том, что plot строит не истинный график функции sin(x), а лишь заданное числом элементов вектора х число точек. Эти точки затем просто соединяются отрезками прямых, т. е. осуществляется кусочно-линейная интерполяция данных графика. При 100 точках полученная кривая глазом воспринимается как вполне плавная, но при 10-20 точках она будет выглядеть состоящей из отрезков прямых.
Графики MATLAB строит в отдельных окнах, называемых графическими окнами. С первого взгляда видны отличия графического окна, показанного на рис. 3.1, от командного окна MATLAB. В главном меню окна появилась позиция Tools (Инструменты), которая позволяет вывести или скрыть инструментальную панель, видимую в верхней части окна графики на рис. 3.1. Средства этой панели (мы их рассмотрим полнее в дальнейшем) позволяют легко управлять параметрами графиков и наносить на них текстовые комментарии в любом месте.
Построение в одном окне графиков нескольких функций
Более подробное описание графического окна будет дано в уроке 5. А пока пойдем дальше и попытаемся построить графики сразу трех функций: sin(x), cos(#) и sin (x)/х. Прежде всего отметим, что эти функции могут быть обозначены переменными, не имеющими явного указания аргумента в виде у(х):
»y1=sin(x); y2=cos(x); y3=sin(x)/x;
Такая возможность обусловлена тем, что эти переменные являются векторами — как и переменная х. Теперь можно использовать одну из ряда форм команды
plot: plot(a1.f1.a2.f2.a3.f3,...).
где al, а2, аЗ,.„ — векторы аргументов функций (в нашем случае все они — х), a f1, f2, f3,... —векторы значений функций, графики которых строятся в одном окне. В нашем случае для построения графиков указанных функций мы должны записать следующее:
» plot(x,y1,x,y2,x.y3)
Можно ожидать, что MATLAB в этом случае построит, как обычно, точки графиков этих функций и соединит их отрезками линий. Но, увы, если мы выполним эти команды, то никакого графика не получим вообще. Не исключен даже сбой Б работе программы. Причина этого казуса уже обсуждалась в предыдущем уроке — при вычислении функции y3=sin(x)/x, если х представляет собой массив (вектор), то нельзя использовать оператор матричного деления /.
Этот пример еще раз наглядно указывает на то, что чисто поверхностное применение даже такой мощной системы, как MATLAB, иногда приводит к досадным срывам. Чтобы все же получить график, надо вычислять отношение sin(x) к хс помощью оператора поэлементного деления массивов ./. Этот случай поясняет рис. 3.2.
Обратите внимание на то, что хотя на этот раз MATLAB построил графики всех трех функций, в окне командного режима появилось предупреждение о делении на 0 — в момент, когда х=0. Это говорит о том, что piot «не знает» о том, что неопределенность sin(x)/x=0/0 устранимая и дает 1. Это недостаток практически всех систем для численных вычислений.
Графическая функция fplot
Разумеется, MATLAB имеет средства для построения графиков и таких функций, как sin(x)/x, которые имеют устранимые неопределенности. Не обсуждая эти средства подробно, просто покажем, как это делается, с помощью другой графической команды —
fplot: fplott'f(x)'. [xmin xmax])
Она позволяет строить функцию, заданную в символьном виде, в интервале изменения аргумента х от xmin до xmax без фиксированного шага изменения х. Один из вариантов ее применения демонстрирует рис. 3.3. Хотя в процессе вычислений предупреждение об ошибке (деление на 0) выводится, но график строится правильно, при х=0 sinx/x=l. Обратите также внимание на две используемые команды: clear (очистить)— очистка графического окна и grid on (сетка)— включение отображения сетки, которая строится пунктирными линиями.
На рис. 3.3 представлено также меню File (Файл) окна графики. Нетрудно заметить, что оно содержит типовые файловые операции. Однако они относятся не к файлам документов, а к файлам графиков. В частности, можно присваивать имя записываемым на диск рисункам с графиками.
Позже мы более подробно рассмотрим возможности различных графических команд. В частности, покажем, как можно задавать определенный цвет и стиль линий, как менять вывод координатных осей, наносить на графики различные текстовые надписи и выполнять множество иных операций форматирования графиков для придания им более наглядного вида, соответствующего требованиям пользователя. Мы также обсудим множество новых форм применения графических команд, резко расширяющих их возможности построения графиков всех мыслимых типов.