- •Лабораторная работа №2 «Массивы и матрицы» Теоретические сведения
- •Формирование одномерных массивов
- •Формирование матрицы
- •Действия над векторами
- •Действия над матрицами
- •Специальные матричные функции
- •Решение слау методом обратной матрицы
- •Решение слау методом Крамера
- •Решение слау методом Гаусса
- •Последовательность выполнения
- •Открыть программу.
- •Выполните матричные вычисления задание 1.
- •Варианты заданий 2
- •Варианты заданиий 3
Действия над векторами
При работе со строками и столбцами в Scilab допустимы следующие математические действия:
+ – сложение
- – вычитание
* – умножение на число
/ – деление на число
^ – возведение в степень
.* – поэлементное умножение
./ – поэлементное деление
.^ – поэлементное возведение в степень
Правила действий над массивами
В
о-первых,
операции сложения/вычитания справедливы
только для столбцов или только для строк
одинаковой длины. В случае сложения/вычитания
вектора с числом действие будет
произведено с каждым элементом массива.
Во-вторых, поэлементное умножение означает, что каждый элемент одной строки (столбца) умножается на элемент с таким же номером другой строки (столбца). Естественно, при этом строки (столбцы) должны быть одного размера. Причем, не допускается поэлементное умножение строки на столбец и наоборот. То же справедливо и для других поэлементных действий: деления и возведения в степень.
В-третьих, отметим еще два действия, принципиально отличающихся от перечисленных тем, что меняют тип массива:
транспонирование ('), в результате которого строка становится столбцом и наоборот;
у
множение
строки на столбец той же длины, при
котором получается просто число;умножение столбца на строку, дающее матрицу.
Если к некоторому заданному вектору применить математическую функцию, то результатом будет новый вектор той же размерности с элементами, преобразованными в соответствии с заданной функцией.
Действия над матрицами
' – транспонирование, в результате которого строки матрицы становятся столбцами и наоборот;
+ – прибавление числа ко всем элементам матрицы и матричное сложение, определенное для матриц одной размерности;
- – вычитание числа от всех элементов матрицы и матричное вычитание, определенное для матриц одной размерности;
* – умножение на число и матричное умножение, выполняемое по правилу «строка на столбец» и допустимое, если количество строк во второй матрице совпадает с количеством столбцов в первой;
/ – деление на число.
^ – возведение в степень. При этом целочисленный показатель степени n может быть как положительным, так и отрицательным. В первом случае матрица умножается n раз сама на себя, во втором – подобное действие производится над матрицей, обратной к исходной
Пример.
Пример.
Здесь мы использовали оператор inv, вычисляющий обратную матрицу.
.*, ./, .^ – поэлементное умножение, деление, возведение в степень; действия, которые производятся для соответствующих элементов матриц, поэтому матрицы должны быть одинакового размера. Например, A.*B означает, что элемент A(1,1) умножается на B(1,1), элемент A(1,2) – на B(1,2), A(1,3) – на B(1,3) и так далее. Естественно, в результате получается матрица такого же размера, что и исходные.
Пример.
Если к заданной матрице применить математическую функцию, в результате получаем матрицу той же размерности, элементы которой будут преобразованы в соответствии с заданной функцией.
Пример.
Специальные матричные функции
Для работы с матрицами и векторами в Scilab предусмотрены специальные функции. Рассмотрим наиболее распространенные из них.
Функция |
Действие |
ones(m,n) |
создает матрицу единиц из m строк и n столбцов |
zeros(m,n) |
создает нулевую матрицу из m строк и n столбцов |
eye(m,n) |
создает единичную матрицу из m строк и n столбцов |
rand(m,n) |
формирует матрицу m×n случайных чисел из промежутка [0,1], rand() – случайное скалярное число из этого же промежутка |
sort(X) |
упорядочивание массива X; если Х – матрица, сортировка выполняется по столбцам |
size(V) |
определяет количество строк и столбцов матрицы V, size(V,1) – только количество строк, size(V,2) – только количество столбцов |
length(X) |
определяет количество элементов массива Х (для вектора – его длину, для матрицы – число элементов) |
sum(X) |
сумма элементов массива Х, причем sum(X,1) возвращает строку с суммой элементов в каждом столбце, а sum(X,2) наоборот – столбец с суммой элементов в строках
|
prod(X) |
произведение элементов массива Х; работает аналогично функции sum |
det(M) |
вычисляет определитель квадратной матрицы |
max(M) |
вычисляет наибольший элемент в массиве М |
min(M) |
вычисляет наименьший элемент в массиве М |
mean(M) |
вычисляет среднее значение элементов массива М |
Решение системы линейных уравнений
Система n уравнений с m неизвестными
называется системой линейных алгебраических уравнений. Здесь xj – неизвестные, aij – коэффициенты при неизвестных, bn—свободные члены уравнений, i=1,...,n, j=1,...,m.
Система может быть представлена в матричном виде
Ax=b
В случае, если количество неизвестных равно количеству уравнений, а определитель матрицы системы А и вектор свободных членов b не равны нулю, система имеет одно и только одно решение.
Задача решения СЛАУ настолько распространена в математике, технике и естественных науках, что Scilab предоставляет несколько способов ее решения.
