Назад к материалам

Массивы в Scilab

Scilab - матрично-ориентированный язык. Под массивами в данном мат. пакете понимаются конструкции, используемые в линейной алгебре: матрицы, векторы-строки и векторы-столбцы.

Массивы в Scilab

Scilab - матрично-ориентированный язык. Под массивами в данном мат. пакете понимаются конструкции, используемые в линейной алгебре: матрицы, векторы-строки и векторы-столбцы.

Под массивами в данном случае понимаются конструкции, используемые в линейной алгебре: матрицы, векторы-строки и векторы-столбцы.

Важно! Нумерация элементов массива в Scilab начинается с 1.

2.1 Одномерные массивы (столбцы и строки)

Задать одномерный массив в Scilab можно следующим образом:

MAS = v1:d:vmax

Здесь MAS – имя переменной, куда будет записан сформированный массив, v1 – значение первого элемента массива, vmax – значение последнего элемента массива, d – шаг, с которым будет происходить формирование элементов.

Например, сформируем массив с элементами от 1 до 2 с шагом 0.1 (листинг 4).

M = 1:0.1:2;

листинг 4. Вектор-строка в Scilab. Задание одномерного массива из 11 элементов

Сформировать одномерный массив можно и непосредственным перечислением всех его элементов через запятую или пробел:

MAS = [v1, v2, … , vmax] или MAS = [v1 v2 … vmax]

Отметим, что данные способы формируют вектор-строку в которую записаны всего vmax элементов.

Для поэлементного задания вектор-столбца нужно разделять элементы массива точкой с запятой «;», то есть, воспользоваться записью:

MAS = [v1; v2; … ; vmax]

R = [1 0 1 2];
V = [1 0 1 2];

поэлементное задание массива в Scilab

Обращение к элементу массива происходит через указание номера элемента в круглых скобках у имени массива. Чтобы выбрать 2-й элемент одномерного массива MAS, необходимо ввести команду:

x = MAS(2);
disp(x); // выведет v2

Создадим вектор-строку row из 11 элементов, начиная с 0 с шагом 0.1. Это делается следующим образом:

row = 0:0.1:1;

Сейчас row - это вектор-строка вида

Получим 5-й эелемент вектор-строки row и выведем этот элемент:

x = row(5); // присвоили переменной х значение, записанное в 5-й столбец строки row
disp(x); // выведет 0.4
R = 0:0.1:1;
r2 = R(2);
r10 = R(10);

обращение к элементам массива в Scilab

2.2 Двумерные массивы (матрицы)

Двумерные массивы, или матрицы, также задаются при помощи квадратных скобок, при этом строки матрицы разделяются точкой с запятой «;», а столбцы - запятой или пробелом (листинг 5).

Листинг 5. Задание матрицы поэлементно
Листинг 5. Задание матрицы поэлементно

Листинг 5. Задание матрицы поэлементно.

Кроме того, матрица может быть сформирована из векторов-строк или векторов-столбцов, заданных ранее (листинг 6).

Листинг 6. Задание матрицы из сформированных строк V1, V2, V3
Листинг 6. Задание матрицы из сформированных строк V1, V2, V3

Листинг 6. Задание матрицы из сформированных строк V1, V2, V3.

Обращение к элементу матрицы происходит через указание номера строки и столбца в круглых скобках у имени матрицы. Например, чтобы выбрать 3-й элемент из второй строки матрицы M, необходимо ввести команду:

M(2,3) // элемент из 2-й строки 3-го столбца  1

Отметим, что значения элементов матрицы можно использовать, присвоив их значения некоторым переменным, например:

x = M(2,3);
y = M(2,1)*M(1,1);

Важную роль в работе с матрицами играет знак двоеточия «:». Указывая его, можно получить целую строку или целый столбец. Например, чтобы выбрать третий столбец матрицы, нужно записать M(:,3). А чтобы получить все элементы второй строки, нужно записать M(2,:). Смотри (листинг 7).

Листинг 7. Выбор элементов m23, m12 матрицы М; 2-й строки и 3-го столбца матрицы М
Листинг 7. Выбор элементов m23, m12 матрицы М; 2-й строки и 3-го столбца матрицы М

Листинг 7. Выбор элементов m23, m12 матрицы М; 2-й строки и 3-го столбца матрицы М.

Отметим, что для работы с матрицами и векторами предусмотрены стандартные операции сложения «+», матричного умножения и умножения на число «*», вычитания «-», возведения в степень «^», деления « / ».

Отдельно стоит выделить операции транспонирования «'» и поэлементного умножения « .* ».

Результаты операций с матрицами продемонстрированы ниже на Листинге 8.

Листинг 8. Операции матричного умножения, поэлементного умножения и транспонирования
Листинг 8. Операции матричного умножения, поэлементного умножения и транспонирования

Листинг 8. Операции матричного умножения, поэлементного умножения и транспонирования.

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

В Scilab предусмотрены специальные функции для работы с матрицами. Эти функции обеспечивают быстрое создание распространенных типов матриц. Такими функциями являются следующие:

ones(m, n) – создание матрицы единиц из m строк и n столбцов;

zeros(m, n) – создание нулевой матрицы из m строк и n столбцов;

eye(m, n) - создание единичной матрицы из m строк и n столбцов.

Подробнее про них написано в статье Специальные матричные функции в Scilab

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

det(M) – вычисление определителя квадратной матрицы;

inv(M) – вычисление матрицы, обратной к М, такой что ;

spec(M) – находит собственные числа матрицы М;

linsolve(M, b) – решает систему линейных уравнений Mx - b = 0.

Подробнее про них написано в статье Функции для решения задач линейной алгебры в Scilab