Файл: Отчет по лабораторной работе 1 Массивы и матрицы в Scilab. Решение задач линейной алгебры.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 02.02.2024

Просмотров: 44

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.




МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное агентство по образованию

«Санкт-Петербургский государственный университет телекоммуникаций им.проф.М.А.Бонч-Бруевича (СПбГУТ)»




Факультет Информационных систем и технологий (ИС и Т)

Кафедра: Информатики и компьютерного дизайна (ИКД)

По дисциплине «Теория информации, данные, знания»



ОТЧЕТ

ПО ЛАБОРАТОРНОЙ РАБОТЕ № «1»

«Массивы и матрицы в Scilab.

Решение задач линейной алгебры»


Автор:







(подпись)




(Ф.И.О.)

Оценка:









Дата:









Руководитель проекта:





(подпись)

/. /

(Ф.И.О.)





Санкт-Петербург 2022





Содержание

Теоретический материал: 3

Ввод и формирование массивов и матриц. 3

Действия над матрицами 5

Некоторые из специальных матричных функций. 5

Решение систем линейных алгебраических уравнений 6

Ответы на задания 7

Задание 1.1 7

Задание 1.2 9

Вывод: 10

Задание 1.1:

Решить систему линейных алгебраических уравнений, сделать проверку.
Система линейных алгебраических уравнений:



Задание 1.2:

Если возможно, вычислить матрицу, обратную к матрице D:



Теоретический материал:

Ввод и формирование массивов и матриц.


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

Name = Xn:dX:Xk

где name — имя переменной, в которую будет записан сформированный массив, Xn — значение первого элемента массива, Xk — значение последнего элемента массива, dX — шаг, с помощью которого формируется каждый следующий элемент массива, т.е. значение второго элемента составит Xn+dX, третьего Xn+ dX+dX и так далее до Xk.

Если параметр dX в конструкции отсутствует, это означает, что по умолчанию он принимает значение, равное единице, т.е. каждый следующий элемент массива равен значению предыдущего плюс один:

Name = Xn:Xk

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

Еще один способ задания векторов и матриц в Scilab — это их поэлементный

ввод. Так, для определения вектора-строки следует ввести имя массива, а затем после знака присваивания, в квадратных скобках через пробел или запятую, перечислить элементы массива:

name = [x1 x2 ... xn] или name = [x1, x2, ..., xn]

Элементы вектора-столбца вводятся через точку с запятой:

Name = [x1; x2; ...; xn]

Обратиться к элементу вектора можно, указав имя массива и порядковый номер элемента в круглых скобках:

name(индекс)

Ввод элементов матрицы также осуществляется в квадратных скобках, при этом элементы строки отделяются друг от друга пробелом или запятой, а строки разделяются между собой точкой с запятой:

Name = [x11, x12, ..., x1n; x21, x22, ..., x2n; ...;



xm1, xm2, ..., xmn;]

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

name(индекс1, индекс2)

Важную роль при работе с матрицами играет знак двоеточия «:». Указывая его вместо индекса при обращении к массиву, можно получать доступ к группам его элементов.

Действия над матрицами



Для работы с матрицами и векторами в Scilab предусмотрены следующие операции:

+ — сложение;

- — вычитание;

’ — транспонирование;

* — матричное умножение;

* — умножение на число;

ˆ — возведение в степень;

\ — левое деление;

/ — правое делениe;

.* — поэлементное умножение матриц;

.ˆ — поэлементное возведение в степень;

.\ — поэлементное левое деление;

./ — поэлементное правое деление.

Некоторые из специальных матричных функций.


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

  • matrix(A [,n,m]) — преобразует матрицу A в матрицу другого размера;

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

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

  • eye(m,n) — формирует единичную матрицу3 из m строк и n столбцов;

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

  • rank(M[,tol]) — вычисление ранга матрицы M 1 с точностью tol;

  • inv(A) — вычисляет матрицу, обратную к данной на основе LU разложения;

  • ref(A) — осуществляет приведение матрицы A к треугольной форме, используя метод исключения Гаусса;

Решение систем линейных алгебраических уравнений


Система m уравнений с n неизвестными вида:

a11x1 + a12x2 + · · · + a1nxn = b1 ,

a21x1 + a22x2 + · · · + a2nxn = b2 ,

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

am1x1 + am2x2 + · · · + amnxn = bm

называется системой линейных алгебраических уравнений (СЛАУ), причем xj — неизвестные, aij — коэффициенты при неизвестных, bi — свободные коэффициенты (i = 1 . . . m, j = 1 . . . n). Система из m линейных уравнений с n неизвестными может быть описана при помощи матриц: A · x = b, где x — вектор неизвестных, A — матрица коэффициентов при неизвестных или матрица системы, b — вектор свободных членов системы или вектор правых частей. Совокупность всех решений системы (x1, x2, . . . , xn) называется множеством решений или просто решением системы.


Правило Крамера:

Если определитель ∆ = det A матрицы системы из n уравнений с n неизвестными A · x = b отличен от нуля, то система имеет единственное решение x1, x2, . . . , xn, определяемое по формулам Крамера: xi = ∆i/∆, где ∆i — определитель матрицы, полученной из матрицы системы A заменой i-го столбца столбцом свободных членов b.

Ответы на задания

Задание 1.1




Дана система линейных уравнений, в которой число неизвестных равно числу уравнений. Составим две основные матрицы:



Проверим делитель основной матрицы А:



Так как он отличен от нуля, можно решить СЛАУ с помощью метода Крамера. В книге «Scilab. Решение инженерных и математических задач» представлен текст файла сценария с решением задачи по формулам Крамера:

Текст файла-сценария решения СЛАУ методом Крамера

//Матрица коэффициентов:

A=[2 1 -5 1;1 -3 0 -6;0 2 -1 2;1 4 -7 6];

b=[8;9;-5;0]; //Вектор свободных коэффициентов

A1=A;A1(:,1)=b; //Первая вспомогательная матрица

A2=A;A2(:,2)=b; //Вторая вспомогательная матрица

A3=A;A3(:,3)=b; //Третья вспомогательная матрица

A4=A;A4(:,4)=b; //Четвертая вспомогательная матрица

D=det(A); //Главный определитель

//Определители вспомогательных матриц:

d(1)=det(A1); d(2)=det(A2); d(3)=det(A3); d(4)=det(A4);

x=d/D //Вектор неизвестных

P=A*x-b //Проверка

Основываясь на этом сценарии, создадим функцию, которая будет решать уравнение и проверять решение.

Текст функции, реализующей решение СЛАУ методом Крамера с проверкой в конце:



Вызов функции и ее результат:



Система решена, проверка верна.

Задание 1.2


Если возможно, найти матрицу, обратную матрице D:



Объявим матрицы А и В:




Найдем матрицу D:



Обратная матрица — такая матрица A’, при умножении на которую исходная матрица A даёт в результате единичную матрицу E.

Матрица обратима тогда и только тогда, когда она невырождена, то есть её определитель не равен нулю.

Найдем определитель матрицы D:



Определитель не равен нулю, следовательно матрица невырождена.

Найдем матрицу Dx, обратную матрицe D и выполним проверку:



Результат проверки – две матрицы, близкие к единичным, следовательно – проверка верна.


Вывод:


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