Главная страница

scilab учебник. Учебник Scilab. Учебник Для студентов по дисциплин Базовые средства математических пакетов


Скачать 5.73 Mb.
НазваниеУчебник Для студентов по дисциплин Базовые средства математических пакетов
Анкорscilab учебник
Дата05.05.2022
Размер5.73 Mb.
Формат файлаpdf
Имя файлаУчебник Scilab.pdf
ТипУчебник
#513983
страница10 из 21
1   ...   6   7   8   9   10   11   12   13   ...   21
cell
(
VcellArray
=cell(2,2))
. Дан- ную инициализацию целесообразно выполнять, когда нужно определить боль- шой вектор или матрицу ячеек и в цикле задавать их значения. В этом случае
Scilab сразу создает массивы нужных размеров, в результате чего повышается скорость выполнения программ.
На рис. 1.3.6-2 показано, как извлечь несколько элементов из массива ячеек – список, разделенный запятыми, учитывая, что массив ячеек
4×6
--> // Извлечение несколько элементов из массива ячеек
--> C = cell
(4, 6);
--> for k = 1:24
> C{k} = k * 2;
> end
-->
C =
[2] [10] [18] [26] [34] [42]
[4] [12] [20] [28] [36] [44]
[6] [14] [22] [30] [38] [46]
[8] [16] [24] [32] [40] [48]
-->
--> С{:, 5} ans =
34 ans =
36 ans =
38 ans =
40
-->
// Это то же самое, что вводить С{1,5}, C{2,5}, С{3,5}, C{4,5}
Рис. 1.3.6-2 Извлечение несколько элементов из массива ячеек

102
Рассмотрим еще один пример (р ис. 1.3.6-3), в котором показано, как считывать и записывать данные массива ячеек. Для этого создадим массив ячеек
2×3
текстовых и числовых данных.
--> //
С
читывание и запись данных в массив ячеек и из массива ячеек
-->
--> C = {'one', 'two', 'three'; 1, 2, 3}
C =
[1x1 string ] [1x1 string ] [1x1 string ]
[1x1 constant] [1x1 constant] [1x1 constant]
-->
--> upLeft = C(1:2, 1:2) upLeft =
[1x1 string ] [1x1 string ]
[1x1 constant] [1x1 constant]
-->
--> // Замена значений элементам первой строки
--> C(1,1:3) = {'first','second','third'}
C =
[1x1 string ] [1x1 string ] [1x1 string ]
[1x1 constant] [1x1 constant] [1x1 constant]
--> nicC = C(2,1:3) nicC =
[1x1 constant] [1x1 constant] [1x1 constant]
-->
--> // Преобразование массива ячеек в вектор
--> nicV = cell2mat(nicC)
1. 2. 3.
Рис. 1.3.6-3 Считывание и запись данных в массив ячеек и из массива ячеек
Существует два способа ссылки на элементы массива ячеек. Можно за- ключить индексы в круглые скобки
()
и обращаться к массиву ячеек, напри- мер, для того, чтобы определить подмножество массива. Также можно заклю- чить индексы в фигурные скобки
{}
, и сослаться на элементы данных (текст, числа или другие данные) в отдельных ячейках.
Индексы массива ячеек в круглых скобках относятся к наборам ячеек. Например, круглые скобки используются, чтобы создать массив ячейки
2×2
, который является подмножеством
C
Обновление набора ячеек выполняется их заменой с тем же числом ячеек. Например, чтобы заменить ячейки в первой строке
C
используется экви- валент массив ячеек размера (
1×3
). Чтобы заменить содержимое ячейки, ана- логично можно индексировать и с использованием фигурных скобок
(рис. 1.3.6-4).
--> // Индексирование с использованием фигурных скобок

103
-->
--> last = C{2, 3} last =
3.
--> C{2, 3} = 300
;
--> C{2, 3} ans =
300.
--> las = C{1:2, 1:2} las = las(1) first las(2)
1. las(3) second las(4)
2.
--> las(1) ans = first
Рис. 1.3.6-4 Индексирование с использованием фигурных скобок
Если элементы в массиве содержат числовые данные, можно преобразо- вать ячейки в числовом массиве, используя функцию
cell2mat
Доступ к содержимому ячеек (число, текст или другие данные в ячейках) производится путем индексации с использованием фигурных скобок. Напри- мер, для доступа к содержимому последней ячейки
C
, используйте фигурные скобки.
Можно получить доступ к содержимому нескольких ячеек путем индек- сации с фигурными скобками.
1.3.7. Контрольные вопросы
1)
Какие способы создания векторов и матриц реализованы в Scilab?
2)
Каким образом создается вектор с постоянным шагом?
3)
Можно ли создать матрицу, элементы строки которой изменяются с постоянным шагом?
4)
С какого номера начинается индексация вектора?
5)
Какая функция позволяет определить длину вектора?
6)
Какие функции предназначены для определения числа строк, числа столбцов матрицы и общего количества ее элементов?
7)
Что такое «пустая матрица» и как ее создать?
8)
Какую матрицу создает операция
ones
?

104 9)
Каким образом в Scilab могут быть объединены две матрицы?
10) С использованием каких функций матрицы могут динамически из- менять свой размер в процессе выполнения программы?
11) Для чего предназначены в Scilab функции
matrix
и
resize_matrix
?
12) Назначение и формат функции
cat
?
13) Каким образом удалить из матрицы определенный столбец?
14) Что такое векторизация?
15) Что такое стандартное индексирование векторов и матриц?
16) Что такое векторное индексирование матриц?
17) Что такое логическое индексирование матриц?
18) Что такое поэлементные действия (операции с точкой) и где они используются?
19) Каким образом можно транспонировать вектор или матрицу?
20) Требуется ли при работе с векторами и матрицами предваритель- ное объявление их размера?
21) Какой символ используются для разделения элементов матрицы в строке, а какой для разделения ее столбцов?
22) Какие команды предназначены для заполнения матрицы случай- ными числами, распределенными по равномерному или нормаль- ному закону распределения?
23) Какой командой можно осуществить выбор минимального и мак- симального значения элемента матрицы.
24) В каких случаях матрицы могут динамически изменять свой раз- мер?
25) Как создается массив ячеек?
26) Что представляют собой операции доступа извлечения и модифи- кации матриц?
27) Что такое индексирование и векторизация?
28) Что такое логическая индексация?
29) Когда можно использовать функцию
find
?

105
1.4. Средства визуализация в системе Scilab
Пользователь Scilab имеет целый ряд возможностей для визуализации данных:

высокоуровневые графические функции (
plot, surf, mesh
и многие другие);

интерактивную среду, компоненты которой позволяет изменять свой- ства элементов графика;

специализированные функции и средства для графического отобра- жения характеристик исследуемых объектов и результатов вычисле- ний;

низкоуровневые средства построения графиков и простейших гео- метрических фигур;

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

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

Вид математической функции в системе координат: o
одной переменной – графики функции с одной переменной в задан- ной системе координат:
 в прямоугольной системе координат;
 в полярной системе координат;
 в комплексной плоскости (например, годографы);
 в векторной плоскости; o
двух переменных – графики функции с двумя переменными в за- данной системе координат:
 в пространственной прямоугольной системе координат;
 в сферической системе координат;
 в цилиндрической системе координат;
 в векторном пространстве.

Способ представления в виде: o
точечного графика; o
линейного графика (с учетом всевозможных представлений ли- нии); o
полигонального графика; o
градиентного графика; o
контурного графика; o
гистограммы.

107
Графические окна
Графические изображения (объекты) в Scilab отображаются в специаль- ных Графических окнах, причем в одном графическом окне (в одной системе координат) могут быть построены несколько графических объектов, а на экране дисплея могут быть размещены одновременно несколько графических окон, причем разных типов.
Графические окна имеют свою нумерацию. Чтобы создать новое графи- ческое окно с конкретным номером достаточно выполнить функцию
scf:
h = scf(id)
;
h = scf()
, где:
id
– необязательный целочисленный параметр, задающий номер окна, а
h
– дескриптор создаваемого окна, который связан с набором свойств этого окна и их значениями.
Если параметр, указывающий номер создаваемого окна, отсутствует, то система присваивает окну последний незанятый порядковый номер, начиная с нуля. В ответ функция
scf
возвращает дескриптор окна, а также набор его свойств, причем большая часть значений свойств заранее предопределена (т.е. заданы по умолчанию), кроме того п ервое обращение к одной из графических команд автоматически вызывает появление графического окна, которому при- сваивается номер ноль (
id
=0
) рис.1.4.1-1).
Рис. 1.4.1-1 Графическое окно с номером
0
Элементы меню, расположенного в верхней части графического окна, предоставляют большой набор команд, предназначенных для отображения и оформления графиков, позволяющих в интерактивном режиме и без использо- вания программного кода придать графику желаемый вид, а кнопки панели дублируют наиболее часто используемые пункты меню, ускоряя тем самым процесс оформления графика. Каждый элемент меню содержит набор команд, соответствующих его названию:

108
Файл:
Новое графическое окно, Загрузить…, Сохранить…, Экспортировать, Ко-
пировать в буфер, Параметры страницы, Печать, Закрыть
;
Инструменты: Показать/скрыть панель инструментов, Увеличить
область, Исходный вид,
2D/3D
вращение;
Правка: Установить текущим графическим окном, Очистить графи-
ческое окно…, Свойства графического окна…, Свойства осей, Разрешить вы-
бор объектов, Включить/выключить управление подсказками данных,
Начать/остановить изменение данных кривых;
Справка: Содержание, О Scilab.
Наиболее часто используемые команды вынесены на панель инструмен- тов в виде кнопок.
Переход между Командным окном и Графическим окном осуществля- ется с помощью комбинации клавиш

или с помощью мыши.
Закрыть графическое окно можно традиционным способом – щелчком по крестику, расположенному в правом верхнем углу окна, или выполнением команды
xdel(id)
, в скобках которой указывается
id
– номер закрываемого графического окна.
Перечень всех открытых графических окон можно посмотреть, выпол- нив команду
winsid
, которая выводит в следующей строке номера открытых графических окон (рис.1.4.1-2).
--> // Примеры использования команд scf, xdel и winsid
--> scf(2); scf(3); scf(5);//Открытие графических окон 2,3,5
--> winsid//Вывод списка открытых графических окон ans =
2. 3. 5.
-->
--> xdel(3);//Удаление графического окна с номером 3
--> winsid ans =
2. 5.
--> scf();
Рис. 1.4.1-2 Примеры использования команд
scf, xdel и
winsid
После каждого вызова функции
scf
появляется графическое окно с со- ответствующем номером, а в
Командном
окне отображаются свойства создан- ного окна. Причем основная область графического окна называется рабочей областью, и на ней можно отображать любые графические объекты
Следует отметить, что если за время сеанса не было создано ни одного графического окна, с
помощью функции scf, то любая графическая функция создает ее автоматически.

109
Построение графиков функций от одной переменной
Начнем знакомство с графической системой Scilab построением гра- фика функции одной переменной. Самым простым способом построения гра- фика функции
y=f(x)
является формирование двух векторов одинаковой длины (вектора значений аргументов
x
и вектора соответствующих им значе- ний функции
у
) с последующим выполнением функции
plot(x,y)
. Функция
plot(x,y)
открывает графическое окно и отображает в нем график функции
y(x)
Рассмотрим, например, построение графика функции
2
x
y
e


на отрезке
[-1.5;1.5].
В результате выполнения функции
plot(x,y)
появляется
Графическое окно 0
с графиком функции (рис.1.4.1-3).
--> // Построение графика функции
-->
--> x = -1.5 : 0.01 : 1.5;
--> y = exp(-x.^2);
--> plot(x, y)
Рис. 1.4.1-3. Построение графика функции
2
x
y
e


Обратите внимание, что элемент меню графического окна File имеет команду
Копировать в буфер обмена, которая позволяет копировать окно в буфер обмена, и,
которое впоследствии можно вставить в Word или другой текстовый редактор.

110
Можно построить в одном графическом окне графики нескольких гра- фиков функций. На рис.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 соответственно.

111
Определитель Стиль линии
-
Сплошная линия (по умолчанию)
--
Штриховая линия
:
Пунктирная линия
-.
Штрихпунктирная линия
Рис. 1.4.1-5. Символы, указывающие на тип линии
Определитель Цвет
r
Красный
g
Зелёный
b
Синий
c
Голубой
m
Пурпурный
y
Жёлтый
k
Чёрный
w
Белый
Рис. 1.4.1-6. Символы, указывающие на цвет линии
Если не указан цвет (ни с помощью
Line_style
, ни с помощью
ГлобальногоСвойства)
, то будет использоваться таблица цветов, устанавливае- мых по умолчанию. Во время отображения множества линий, команда
plot
ав- томатически перебирает в цикле эту таблицу.
Тип_маркера – строка, определяющая тип маркера. Заметьте, что, если указывается маркер без стиля линии, то будут нарисованы только маркеры.
Это свойство связано со свойствами объекта
1   ...   6   7   8   9   10   11   12   13   ...   21


написать администратору сайта