Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа3.doc
Скачиваний:
22
Добавлен:
22.03.2016
Размер:
727.04 Кб
Скачать

Лабораторная работа №3. Построение двумерных графиков в Scilab

Рассмотрим задачу построения простейшего двумерного графика вScilabвидаy=f(x). Для этой цели вScilabиспользуется функцияplot со следующими аргументамиplot(x,y). Здесьх – массив абсцисс,у- массив ординат.

Например, построим график функции y=cos(2x)на отрезке[-2π,2π]с шагом 0.1. Для этого сформируем массивХ, вычислим значение функцииy=cos(2x)для каждого значения массиваХ, сформировав массивY. Затем воспользуемся функциейplot(x,y)для построения кривой. Набрав соответствующие команды:

Получим график искомой функции в отдельном графическом окне с номером 0:

В простейшем случае к функции можно обратиться как plot(y)? Где в качестве массиваХвыступает массив номеров точек массиваY. В качестве массиваYможет выступать набор экспериментальных точек.

Такой синтаксис функции plotпозволяет строить графики нескольких функций. Ниже показан пример построения графиков трех функцийy(x)=sin(x), g(x)=cos(x), f(x)=sin(cos(x))на одном чертеже. Значения всех функций вычислены на отрезке[2π,2π]с шагом 0.1.

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

Построить несколько графиков в одном окне можно и с помощью короткой записи функции plot(x,y), но перед обращением к функциямplot(x,g), plot(x,f) каждый раз необходимо обращаться к инструкцииmtlb_hold(‘on’)для того чтобы блокировать режим создания нового окна. При этом линии всех графиков будут иметь один и тот же цвет.

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

Для формирования области в графическом окне служит команда plotframe:

Plotframe(rect,tics,grid,title,x_leg,y_leg,X,y,w,h)

rect - вектор[xmin,ymin,xmax,ymax], который определяет границы измененияx иy– координат области;

tics – вектор[nx,mx,ny,my], который определяет количество линий сетки по осиХ (mx)иY(my), величиныnx иnyдолжны определять число подинтервалов по осямX иY;

grid – логическая переменная, которая определяет наличие(%t)либо отсутствие координатной сетки(%f). Этот параметр следует указывать для обеих осей, например,[%t,%t];

title – заголовок, который будет выводиться над графической областью;

x_leg,y_leg– подписи осей графикаX иY;

x,y – координаты верхнего левого угла области в графическом окне,w – ширина,h– высота окна. Значенияx,y,w,h измеряются в относительных единицах и лежат в диапазоне[0,1].

После определения области в нее можно вывести график функции с помощью командыplot.

Для примера рассмотрим построение 4-х графиков функцийy=sin(2x), z=cos(3x), g=sin(cos(2x)), f=cos(sin(x))в одном графическом окне, каждый в своей системе координат на отрезке[-10,10]с шагом0.01.

То есть, каждый раз команда plotframeформирует в одном и том же графическом окне отдельную область для построения нового графика. Обратите внимание, подписи графика и координатных осей формируются в виде массива символьного типа при каждом вызове командыplotframe. Важными параметрами являются элементы последнего массива командыplotframe. Первые 2 элемента данного массива задают координаты верхнего левого угла области, в которой будет размещаться очередной график. В нашем примере необходимо построить 4 графика. Поэтому графическое окно разбивается пополам по горизонтали и вертикали. Соответственно координаты каждой области будут[0,0];[0.5,0];[0,0.5];[0.5,0.5], а ширина и высота каждой области –0.5.

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

Результат работы данной последовательности команд приведен на следующем рисунке

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

Subplot(m,n,p).

Здесьm – количество областей по вертикали на которое разбивается графическое окно,n– количество областей по горизонтали на которые разбивается графическое окно,p– номер области, которая в данный момент является активной.

Например, построим графики 6-и функций: y=sin(x), z=cos(x), w=exp(sin(x)), g=exp(cos(x)), f=cos(sin(x)), u=sin(cos(x)) на отрезке[-10;10]с шагом0.01.

Для решения задачи воспользуемся командой subplot. Нам необходимо построить 6 графиков в одном графическом окне. Поэтому разобьем графическое окно на 6 областей: три по вертикали и три по горизонтали.

На следующем рисунке приведены построенные программой графики

Еще одна функция, которую можно использовать для построения двумерных графиков – plot2d. В общем виде обращение к ней имеет вид:

plot2d([logflag],x,y’,[key1=value1,key2=value2,…,keyn=valuen])

где logflag – строка из двух символов, каждый из которых определяет тип осей (nнормальная осе,l– логарифмическая ось), по умолчанию параметр равен – “nn;

x – массив абсцисс;

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

keyi=valuei– последовательность значений свойств графика, определяющие его внешний вид.

Не все параметры функции являются обязательными. В простейшем случае к ней можно обратиться кратко, как и к функции plot.Например, построим график функцииy=cos(x) на отрезке[-2π;2π].

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

Обратите внимание? массив абсцисс при построении нескольких графиков должен быть вектором-столбцом, для чего используется операция транспонирования “’”.

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