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

Базовые средства матпакета Scilab

.pdf
Скачиваний:
55
Добавлен:
04.04.2023
Размер:
6.29 Mб
Скачать

Можно построить в одном графическом окне графики нескольких графиков функций. На рис.1.4.1-4 приведен пример построения в одном окне трех графиков.

-->//Построение в одном окнеграфиков 3-х функций

-->

-->x=0:0.01:%pi;

--> y=[sin(x)',sin(2*x)',sin(4*x)']; --> plot(x',y)

Рис. 1.4.1-4. Построение в одном графическом окне графиков 3-х функций

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

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

Например, чтобы определить красную штрихпунктирную линию с ромбовидными маркерами, строка должна быть в виде 'r-.diam'. Причем, полное написание значения каждого свойства не обязательно, однако строка, которая является связкой (в любом порядке) этих трёх типов свойств, должна оставаться однозначной. Кроме того, определение строки не чувствительно к регистру.

Элементы Line_style, которые можно использовать вplotдля задания типа и цвета линий показаны на рис.1.4.1-5 и рис.1.4.1-6 соответственно.

91

ОпределительСтиль линии

-Сплошная линия (по умолчанию)

--Штриховая линия

:Пунктирная линия

-.

 

Штрихпунктирная линия

Рис. 1.4.1-5. Символы, указывающие на тип линии

ОпределительЦвет

r

 

Красный

 

 

 

 

 

 

g

 

Зелёный

bСиний

cГолубой

m

 

Пурпурный

 

 

 

y

 

Жёлтый

 

 

 

k

 

Чёрный

 

 

 

w

 

Белый

Рис. 1.4.1-6. Символы, указывающие на цвет линии

Если не указан цвет (ни с помощью Line_style , ни с помощью ГлобальногоСвойства), то будет использоваться таблица цветов, устанавливаемых по умолчанию. Во время отображения множества линий, команда plot автоматически перебирает в цикле эту таблицу.

Тип_маркера – строка, определяющая тип маркера. Заметьте, что, если указывается маркер без стиля линии, то будут нарисованы только маркеры. Это свойство связано со свойствами объекта Mark_style (Cтиль_маркера)

и Mark_mode (Режим маркера)(рис.1.4.1-7).

 

 

 

 

Определитель

Тип маркера

 

 

 

 

 

 

 

 

 

 

+

Знак "плюс"

 

 

 

 

 

 

o

Кружок

 

 

 

 

 

 

*

Звёздочка

 

 

 

 

 

 

.

Точка

 

 

 

 

 

 

x

Крестик

 

 

 

 

 

 

'square' ('s')

Квадрат

 

 

 

 

 

 

 

 

 

 

'diamond'('d')

Ромб

 

 

 

 

 

 

^

Треугольник, указывающий вверх

 

 

 

 

 

 

v

Треугольник, указывающий вниз

 

 

 

 

 

 

>

Треугольник, указывающий вправо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

92

<

Треугольник,

указывающий влево

 

 

 

 

 

'pentagram' ('p')

Пятиконечная

звезда (пентаграмма)

 

 

 

Нет маркера (по умолчанию)

 

 

 

 

 

 

Рис. 1.4.1-7. Символы, указывающие тип маркера Рассмотрим пример на (рис.1.4.1-8).

-->// Построить штрихпунктирную линию -->// с треугольниками, указывающими - -> // вправо, центрованными на каждой

--> // точке -->clf();

-->x=1:0.1:10;// Инициализация

-->plot(x, sin(x), 'r-.>')

Рис. 1.4.1-8. Пример построения различных линий и маркеров Символы, указывающие на цвет и тип точки, заключаются в апострофы

иуказываются в функцииplotпосле имени функции.

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

plot(x1,y1,'c1', x2,y2,'c2',...),

гдеxn,yn - каждая очередная пара векторов предназначена для построения нового графика, а'сn'–символы, указывающие на цвет и тип точки. Вэтомслучае происходит построение нескольких графиковв одном графическом окне.

Выполним теперь тот же пример, что и на рис.1.4.1-2, добавив в него при построении каждого графика символы для отображения цвета и типа точки и другой формат функцииplot(рис.1.4.1-9).

-->//Использование инструкцийдля установки цвета и типа линии

-->

-->x =0:0.1:%pi;

-->y1 = sin(x);// Тип линии -, черный

93

-->y2 =

sin(2*x);

// Тип линии

-, красный

-->y3 =

sin(4*x);

// Тип линии

– с точкой, синий

-->plot(x, y1,'-k',x, y2, '-r',

x,y3,'.-b');

 

 

 

 

 

 

 

 

 

 

Рис. 1.4.1-9. Использованием инструкций для цвета и символа при построении в одном графическом окне трех графиков

Различие между приведенными выше примерами состоит не только в количестве параметров функцииplot, но еще и в том, что в примере, приведенном на рис.1.4.1-4, формируется матрицаy, содержащая значения функций в виде столбцов, а в примере, приведенном на рис.1.4.1-9, формируются три вектора значений функций(y1,y2,y3).

График, выведенный в графическое окно Scilab, может быть снабжензаголовком, именами осей, текстом, сеткойи другой дополнительной информацией, которая устанавливается вспомогательными функциямиxtitle, xgrid, legendи др.Параметрами этих функций являются значения текстовых строк. Например, формат командыxtitle, добавляющей к графику заголовок и подписи осей, может выглядеть следующим образом:

xtitle('title','xstr','ystr'),

где:'title'заголовок графика; 'xstr'подпись осих;

'ystr'подпись осиy.

Функцияxgridпозволяет отобразить вГрафическом окнекоординатную сетку, а функция legendиспользуется,как правило, когдана одной координатной плоскости надо отобразить графики нескольких

94

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

legend(leg1, leg2, ..., legn), legend(leg1, leg2, ..., legn, pos),

где: leg1– имя первого графика; leg2имя второго графика; legnимяn-го графика;

posнеобязательный числовой параметр, определяющий место расположениялегенды в графическом окне (рис.1.4.1-10). По умолчанию числовой параметрposравен1, что означает расположение легенды в правом верхнем углу.

Значение аргумента

Размещение легенды

-1

В правом верхнем углу над областью графика

0

Выбирается автоматически, чтобы не перекрывались кривые

1

В правом верхнем углу (и по умолчанию)

2

В левом верхнем углу области графика

3

В левом нижнем углу области графика

4

В правом нижнем углу области графика

Рис. 1.4.1-10 Значение аргумента pos для указания места размещения легенды

Безусловно, каждый график удобнее выводить с использованием своей функцииplot,однако в этом случае происходит создание нового графического окна. Для того чтобы этого избежать,после первого выведенного графика достаточно выполнить функциюmtlb_hold('on').Эта функция позволяет расположить все выводимыевдальнейшемграфики в одном и том же окне.

Рассмотрим пример, в котором при построении трех графиков в одномГрафическом окнеиспользованыи прокомментированы всеописанные выше инструкции (рис.1.4.1-11).

--> //Построение нескольких графиков в одном окне, --> // дополняя их заголовком и легендой

-->

-->x = 0 : 0.01 : %pi * 2; -->y1 = sin(x);

--> y2 = sin(2*x);

95

-->y3 = sin(4 * x);

 

 

-->

 

 

-->plot(x, y1, '-k')

//Сплошная

кривая черного цвета

-->xgrid()

//Нанесение

сетки

-->//Построение всех последующих графиков в одном окне

-->mtlb_hold('on') -->

-->plot(x, y2, 'b--') //Штриховая линия синего цвета -->plot(x, y3, 'r.-') //Штрих-пунктирная линия красного цвета

-->xtitle('Построение графиков трех функций', 'x', 'y') // Заголовок

--> legend('y1(x)', 'y2(x)', 'y3(x)', 1) // Легенда

Рис. 1.4.2-11. Использование инструкцийпри построении графиков

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

Функцияplot2dлишена этого недостатка, посколькустроит график по формату, который уже определен пользователем при построении предыдущего графика.

На рис.1.4.1-12 приведен пример использования функцииplot2dдля отображения в одном графическом окне графиков двух функций. Заметим, что совместное изображение графиков, для того, чтобы в окне были достаточно хорошо видны оба графика,потребовало изменения масштаба по оси y.

96

-->//Построение 1-го графикаy=sin(x)

--> -->scf(0);

-->deff('y=f(x)','y=sin(x)'); -->x = -10:0.5:10;

-->y = f(x); -->plot(x, y, '--')

-->//Добавление графика функции x^2

--> -->scf(0);

-->plot2d(x,x.^2)

Рис.1.4.1-12 Построение в одном окне двух графиков

Добавление к имени функцииplot2d цифр 2, 3или 4, приводит к изменению шаблона графика:

plot2d2– функция, предназначенная для построения графика в виде

ступенчатой функции;

plot2d3– функция, предназначенная для построения графика в виде

вертикальных полосок;

plot2d4– функция, предназначенная для построения графика с

указанием направления.

Примеры использования функций plot2d2, plot2d3иplot2d4приведены на рис.1.4.1-13 (а, b и с).

97

-->//Примеры использования функций

-->//plot2d2, plot2d3 иplot2d4

-->

-->deff('y = f(x)','y = sin(x)'); -->x=[1:0.1:3*%pi];

-->y = f(x);

-->

-->// Ступенчатый график

-->plot2d2(x,y)

--> -->// График с вертикальными

-->// полосами

-->scf(1); -->plot2d3(x,y)

-->

-->//График с указанием направления

-->scf(2); -->plot2d4(x,y)

a) Ступенчатый график

b) График в виде вертикальных полос

c) График с указанием направления

Рис. 1.4.1-13 Примеры использования функций

98

a) plot2d2b), plot2d3, c) plot2d4

Для построения гистограмм на плоскости в Scilab предназначена функцияhistplot.На рис.1.4.2-14 приведен пример, отображающий данные в 20-ти отрезках, имеющие нормальное распределение.

-->// Построения гистограммы

-->

-->d = rand(1, 10000, 'normal');

-->histplot(20,d);

Рис. 1.4.1-14 Пример построения гистограммы функциейhistplot

Чтобы воспроизвести изображение в двумерном пространстве в виде векторных полей можно использовать функциюchamp,самый простой формат которой имеет следующий вид:

сhamp(x,y,fx,fy),

где: x, yвекторы, определяющие сетку координат;

fxматрица, описывающаяxкомпоненту каждого поля вектора; fyматрица, описывающаяyкомпонентой в точке (x(i),y(i)).

99

-->// Пример использования функцииchamp

-->

-->champ(-5:5,-5:5, rand(11,11), rand(11,11))

Рис. 1.4.1-15. Пример использования функцииchamp

С помощью функциисhampвекторныеполя изображаются в виде стрелок, а их длина указывает интенсивность векторного поля(рис. 1.4.2-15).

Все сведения об используемых в п. 1.4.2 функциях приведены в

Приложении 1.4. табл. 1.4.2-1

Построение графиков функций от двух переменных

Трехмерные поверхностиописываются функцией двух переменныхz(x,у).Для построения одних трехмерных графиков необходимосформироватьдвематрицы, например,и yМ, а для другихдва вектора, например, XVиYV.

Сформированные в виде матриц данные используются функциями:

mesh(xM,xM,zM)– для построения сетчатых графиков;

surf(xM,yM,zM)– для построения графиков со сплошной

поверхностями.

Сформированные в виде векторов данные используются функциями:

contour(xV,xV,zM) – для построения графиков с контурными

линиями;

plot3d(xV,yV,zM) – для построения графиков точек,

соединенных отрезкамипрямых и других линий.

Рассмотрим примеры использования перечисленных выше функций, для чего сформируем матрицуzM(x,y)с использованием встроенной внутренней функцииf(x,y)(рис. 1.4.1-16).Результаты построения соответствующих графиков приведены на рис. 1.4.3-3 – 1.4.3-5

100