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

Учебник Математические пакеты

.pdf
Скачиваний:
43
Добавлен:
23.12.2022
Размер:
6.39 Mб
Скачать

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

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

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

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

-.

 

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

Рис. 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

 

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

 

 

 

 

 

 

 

>

 

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

 

 

 

 

 

 

 

<

 

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

 

 

 

 

 

 

 

 

 

 

 

 

111

'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);

// Тип линии

-, черный

 

--> y2

=

sin(2*x);

// Тип линии

-, красный

 

 

 

 

 

 

 

 

 

 

 

 

 

112

--> 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 используется, как правило, когда на одной координатной плоскости надо отобразить графики нескольких функций (как, например, на рис. 1.4.1-9). Очевидно, что в этом случае возникает необходи-

113

leg2 legn
leg1

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

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

где: – имя первого графика;

имя второго графика;

имя 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); --> y3 = sin(4 * x);

114

-->

 

--> 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.

115

--> // Построение 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 и с).

116

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

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

a) plot2d2b), plot2d3, c) plot2d4

117

Для построения гистограмм на плоскости в 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)).

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

-->

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

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

118

С помощью функции с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

--> // Построение различных видов графиков функции двух переменных

--> // zM = xM.^2 + 2 * yM.^2

-->

--> // Формирование двух матриц xM и yM

--> [xM, yM] = meshgrid(-4 : 4, -4 : 4) xM =

0.1. 2. 3.

0.1. 2. 3.

0.1. 2. 3.

0. 1. 2. 3.

--> yM =

-3. -3. -3. -3. -2. -2. -2. -2. -1. -1. -1. -1.

0. 0. 0. 0.

-->

--> // Формирование матрицыzM

119

--> deff('k = f(x, y)', 'k = x.^2 + 2 * y.^2');

 

--> zM = f(xM, yM)

 

 

 

 

 

 

zM =

 

 

 

 

 

 

 

 

48.

41.

36.

33.

32.

33.

36.

41.

48.

34.

27.

22.

19.

18.

19.

22.

27.

34.

24.

17.

12.

9.

8.

9.

12.

17.

24.

18.

11.

6.

3.

2.

3.

6.

11.

18.

16.

9.

4.

1.

0.

1.

4.

9.

16.

18.

11.

6.

3.

2.

3.

6.

11.

18.

24.

17.

12.

9.

8.

9.

12.

17.

24.

34.

27.

22.

19.

18.

19.

22.

27.

34.

48.

41.

36.

33.

32.

33.

36.

41.

48.

-->

 

 

 

 

 

 

 

 

--> // Формирование векторовxVиyV

 

 

 

--> x2 = -4 : 4; y2 = -4 : 4;

 

 

 

 

-->

 

 

 

 

 

 

 

 

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

 

--> scf(1); mesh(xM,yM,zM)

//

Сетчатыйграфик(окно 1)

--> scf(2);plot3d(xV, yV, zM)

//

График точек, соединенных отрезками

-->

// прямых (окно 2)

--> scf(3);surf(xM, yM, zM)

//

График сплошной поверхности (окно 3)

--> scf(4); contour(xV, yV, zM, 7) //

График контурных линий (окно 4)

Рис. 1.4.1-16. Построение различных видов графиков

Результатом выполнения функции mesh является построение в окне 1

графика поверхности в виде сетки (рис.1.4.1-17).

Рис. 1.4.1-17 Результат выполнения в окне 1функции mesh(xM,yM,zM)

В результате выполнения функции plot3d (рис.1.4.3-17) происходит построение в окне 2 графика поверхности, где точки соединены отрезками прямой, а соответствующая заливка квадратов делает изображение фигуры объемной (рис. 1.4.3-18). Функции plot3d имеет формат:

120