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

Массивы и матрицы в SciLab. Лаб раб 2 Массивы и матрицы в SciLab NEW. Лабораторная работа 2 Массивы и матрицы в SciLab Цель работы изучить основы работы с множеством данных к работе допущен


Скачать 34.82 Kb.
НазваниеЛабораторная работа 2 Массивы и матрицы в SciLab Цель работы изучить основы работы с множеством данных к работе допущен
АнкорМассивы и матрицы в SciLab
Дата03.05.2022
Размер34.82 Kb.
Формат файлаdocx
Имя файлаЛаб раб 2 Массивы и матрицы в SciLab NEW.docx
ТипЛабораторная работа
#508567

Лабораторная работа №2

Массивы и матрицы в SciLab

Цель работы: изучить основы работы с множеством данных

К работе допущен:

Работу выполнил:

Работу защитил:

ВВЕДЕНИЕ


Для работы с множеством данных удобно использовать массивы. Например, можно создать массив для хранения числовых или символьных данных. В этом случае вместо создания переменной для хранения каждого данного достаточно создать один массив, где каждому элементу будет присвоен порядковый номер.

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

Переменную, представляющую собой просто список данных, называют одномерным массивом, или вектором. Для доступа к данным, хранящимся в определенном элементе массива, необходимо указать имя массива и порядковый номер этого элемента, называемый индексом.

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

Значение нижней границы индексации в Scilab равно единице. Индексы могут быть только целыми положительными числами.

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

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

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

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

Пример ввода вектора-строки:

Листинг 1. Определение вектора-строки

--> V=[1 2 3 4 5]

V =

1 2 3 4 5

--> W=[1.1,2.3,-0.1,5.88]

W =

1.1000 2.3000 -0.1000 5.8800

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

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

Пример ввода вектора-столбца:

Листинг 2. Определение вектора-столбца

--> X=[1;2;3]

X =

1

2

3

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

name(индекс)

Например:

Листинг 3. Пример обращения к элементу массива

--> W=[1.1,2.3,-0.1,5.88];

--> W(1)+2*W(3)

ans = 0.9000

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

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

name=[x11, x12, ..., x1n; x21, x22, ..., x2n; ...; xm1, xm2, ..., xmn;]

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

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

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

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

+ — сложение;

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

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

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

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

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

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

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

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

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

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

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

Если к некоторому заданному вектору или матрице применить математическую функцию, то результатом будет новый вектор или матрица той же размерности, но элементы будут преобразованы в соответствии с заданной функцией.


Практическая часть


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



использовав программу SciLab.

Выполнение:

Для создания кода программы используем редактор SciNotes. Запускаем пр. SciLab → Инструменты → Текстовый редактор SciNotes.

Для решения будем использовать функцию LINSOLVE (linsolve(A,b) — решает систему линейных алгебраических уравнений вида .) Так как вектор столбец свободных членов в нашей системе находится справа, а вектор столбец свободных членов функции LINSOLVE находится слева, => свободные члены в нашей системе переносим влево сменив знак.

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

Листинг 4. Определение матрицы

A = (-1,-1,-2,-3;3,-1,-1,-2;2,3,-1,-1;1,2,3,-1)

b = -(2;-8;-12;8)

Получаем решение с помощью функции LINSOLVE.

Листинг 5. Решение

A = (-1,-1,-2,-3;3,-1,-1,-2;2,3,-1,-1;1,2,3,-1)

b = (2;-8;-12;8)

x = linsolve(A,b)

Выполним проверку, получив решение другим способом. Выводим решение в консоль.

Функция «inv(A)» — вычисляет матрицу, обратную к «A».

Обратной матрицей по отношению к данной называется матрица того же типа, которая будучи умноженной как слева, так и справа на данную матрицу, в результате даст единичную матрицу. Т.е. при умножении А на inv(A) слева должна получиться единичная матрица.

Листинг 6. Проверка и вывод

A = [-1,-1,-2,-3;3,-1,-1,-2;2,3,-1,-1;1,2,3,-1]

b = [2;-8;-12;8]

x = linsolve(A,-b)

x_inv = inv(A)*b

disp(x,"Решение системы: ")

disp(x_inv,"Проверка решения системы: ")

Листинг 7. Результат выполнения кода программы в SciLab

Решение системы:

- 3.0196078

- 1.2941176

3.9215686

- 1.8431373

Проверка решения системы:

- 3.0196078

- 1.2941176

3.9215686

- 1.8431373

Задание 1.2 (вариант 1). Если возможно, вычислить матрицу, обратную к матрице D.

, где

, B=

использовав программу SciLab.

Выполнение:

Для создания кода программы используем редактор SciNotes. Запускаем пр. SciLab → Инструменты → Текстовый редактор SciNotes.

Для того, чтобы посчитать матрицу «D» определяем матрицы «A» и «B»

Листинг 8. Определение матриц «A» и «B»

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

B=[-1,0,5;0,1,3;2,-2,4]

Считаем матрицу «D»

Листинг 9. Ввод формулы матрицы «D»

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

B=[-1,0,5;0,1,3;2,-2,4]

D=2*(A^2+B)*(2*B-A)

Листинг 10. Посчитаем матрицу обратную к матрице «D»

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

B=[-1,0,5;0,1,3;2,-2,4]

D=2*(A^2+B)*(2*B-A)

invD = inv(D)

Листинг 11. Выводим на экран матрицу «D» и матрицу обратную к матрице «D»

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

B=[-1,0,5;0,1,3;2,-2,4]

D=2*(A^2+B)*(2*B-A)

invD = inv(D)

disp(D,"Матрица D:")

disp(invD,"Матрица, обратная к D:")

Листинг 12. Результат выполнения кода программы в SciLab

Матрица D:

- 276. - 238. 524.

- 282. - 568. 922.

636. - 360. - 86.

Матрица, обратная к D:

0.1055009 - 0.0579384 0.0216661

0.1557544 - 0.0857622 0.0295649

0.1282210 - 0.0694702 0.0248402

ВЫВОД


В ходе лабораторной работы познакомились с возможностью работы с массивами и матрицами в программе SciLab. Для необходимых вычислений использовали функции «LINSOLVE» (решает систему линейных алгебраических уравнений вида ) и «inv(A)» (вычисляет матрицу, обратную к матрице «A»).


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