10Л ТА
.docxМіністерство освіти і науки України
Національний авіаційний університет
Кафедра прикладної інформатики
Лабораторна робота № 10
З дисципліни: «Теорія алгоритмів»
Виконав
Студент ІКІТ - 112
Односумов Микола
Київ 2015
Тема: «Алгоритми для роботи з матрицями»
Теоретичні відомості
Робота з матрицями - серце наукових розрахунків, тому ефективні алгоритми для роботи з матрицями представляють значний практичний інтерес.
Властивості матриць. Матриці і вектори
Матриця (matrix) є прямокутним масивом чисел. Наприклад,
(2.1)
є матрицею розміру 2 x 3 А = (aij), де i = 1,2 і j = 1,2,3. Елемент на перетині i-го рядка і j-гo стовпця матриці - aij. Ми використовуємо заголовні букви для позначення матриць, а їх елементи позначаються відповідними маленькими буквами з нижніми індексами. Безліч усіх матриць розміром m x n, елементами яких є дійсні числа, позначається як Rm х n. У загальному випадку безліч матриць розміром m x n, елементи яких належать множині S, позначається як Smxn.
Транспонована (transpose) матриця АТ виходить з матриці А шляхом обміну місцями її рядків і стовпців. Так, для матриці А з (2.1)
Одиничним вектором (unit vector) еі називається вектор, і-й елемент якого дорівнює 1, а усі інші елементи дорівнюють 0. Зазвичай розмір одиничного вектору ясний з контексту.
Нульова матриця (zero matrix) - це матриця, усі елементи якої дорівнюють 0. Така матриця часто записується просто як 0, оскільки неоднозначність меж числом 0 і нульовою матрицею легко вирішується за допомогою контексту. Якщо розмір нульової матриці не вказаний, то він також виводиться з контексту.
Часто доводиться мати справу з квадратними (square) матрицями розміром n х n. Деякі з квадратних матриць представляють особливий інтерес.
1. Діагональна матриця (diagonal matrix) має ту властивість, що аij = 0 при i ≠ j. Оскільки усі недіагональні елементи такої матриці дорівнюють 0, діагональну матрицю можна визначити шляхом перерахування її елементів уздовж діагоналі:
2. Одинична матриця (identity matrix) In розміром n х n є діагональною матрицею, усі діагональні елементи якої рівні 1:
Якщо використовується позначення I без індексу, розмір одиничної матриці визначається з контексту. Помітимо, що i-м стовпцем одиничної матриці є одиничний вектор еi.
3. Верхньо-трикутною матрицею (upper - triangular matrix) U називається матриця, у якої усі елементи нижче діагоналі дорівнюють 0 (uij = 0 при і > j) :
Верхньо-трикутна матриця є одиничною верхне-трикутною матрицею (unit upper - triangular), якщо усі її діагональні елементи дорівнюють 1.
4. Нижньо-трикутною матрицею (lower - triangular matrix) L називається матриця, у якої усі елементи вище за діагональ дорівнюють 0 (lij = 0 при i < j) :
5. Матриця перестановки (permutation matrix) Р має в кожному рядку і стовпці рівно по одній одиниці, а на усіх інших місцях розташовуються нулі. Прикладом матриці перестановки може служити матриця
Така матриця називається матрицею перестановки, тому що множення вектору х на матрицю перестановки призводить до перестановки елементів вектору.
6. Симетрична матриця (symmetric matrix) А задовольняє умові А = АТ. Наприклад, матриця
является симетричною.
Операції над матрицями
Елементами матриць і векторів служать елементи деякої числової системи, такі як дійсні числа, комплексні числа або, наприклад, цілі числа по модулю простого числа. Числова система визначає, яким чином повинні складатися і перемножуватися числа. Ці визначення можна розповсюдити і на матриці.
Визначимо додавання матриць (matrix addition) таким чином. Якщо А = (аij) і В = (bij) - матриці розміром m х n, то їх сумою є матриця C = (cij) = А+В розміром m х n, яка визначається співвідношенням cij = аij + bij для і = 1,2,.., m і j = 1,2,.., n. Іншими словами, складання матриць виконується поелементно. Нульова матриця нейтральна по відношенню до складання матриць: А + 0 = А = 0 + А.
Якщо λ — число, a А = (aij) — матриця, то співвідношення λА = (λ aij) визначає скалярний добуток (scalar multiple) матриці на число, яке також виконується поелементно. Частковим випадком скалярного добутку є множення на -1, яке дає протилежну (negative) матрицю -1 ∙ А = -А, що має ту ж властивість, що: А + (-А) = 0=(-А)+А.
Відповідно, можна визначити віднімання матриць (matrix subtraction) як складання з протилежною матрицею: А - В = А + (- В).
Матричне множення (matrix multiplication) визначається наступним чином. Матриці А і В можуть бути перемножені, якщо вони сумісні (compatible) в тому сенсі, що число стовпців А дорівнює числу рядків В (у загальному випадку вираження, що містить матричний добуток АВ, завжди подразумевает сумісність матриць А і В). Якщо А = (аij) - матриця розміром m х n, а В = (bij) - матриця розміром n х р, то їх добуток C = АВ представляє собою матрицю C = (Cij) розміром m х р, елементи якої визначаються рівнянням:
Матриці мають багато (але не усі) властивостей алгебри, притаманні звичайним числам. Одинична матриця є нейтральним елементом по відношенню до множення:
Множення матриць асоціативне: А (ВС) = (АВ) С, для будь-яких сумісних матриць А, В і С. Множення матриць дистрибутивне відносно складання: А(В + С) = АВ + АС, (В + С)D = BD + СD.
Для n > 1 множення матриць розміром n х n не комутативна. Наприклад, якщо
Множення матриць
перемножать можно те матрицы, у которых совпадают средние индексы. Крайние индексы определяют размерность получаемого результата
Элемент ci,j матрицы – ответа принадлежащий i-ой строке и j-му столбцу, вычисляется как произведение i-ой строки первого сомножителя An,m на j-ый столбец второго сомножителя Bm,k.
В результате получается число, равное сумме произведений соответствующих элементов (первый элемент строки на первый элемент столбца плюс второй элемент строки на второй элемент столбца и т. д. и, наконец, плюс произведение последних элементов).
Рассмотрим умножение матриц на примере :
где
некоторые свойства матриц (см. рис.):
● если номер строки элемента совпадает с номером столбца (i = j), это означает что элемент лежит на главной диагонали матрицы;
● если номер строки превышает номер столбца (i > j), то элемент находится ниже главной диагонали;
● если номер столбца больше номера строки (i < j), то элемент находится выше главной диагонали.
● элемент лежит на побочной диагонали квадратной матрицы , если его индексы удовлетворяют равенству i + j +1 = n;
● неравенство i + j + 1 < n характерно для элемента находящегося выше побочной диагонали квадратной матрицы;
● соответственно, элементу квадратной матрицы, лежащему ниже побочной диагонали соответствует выражение i + j + 1 > n.
N-размер матрицы.
Завдання
Варіант №15
Зміст завдання |
Ілюстрація |
Заповнити сектори матриці, які лежать вліво і вправо від головної і побічної діагоналей, від лівого верхнього кута вправо - вниз. Залишок матриці заповнити нулями. |
Блок-схема:
Код программи:
#include <iostream>
using namespace std;
int main()
{
int i,j,o=1,n;
cout << "Vvedite razmer matrizi: "<< endl;
cout << "n= ";
cin >> n;
int mas[n][n];
for (i=0;i<n;i++)
for (j=0;j<n;j++)
mas[i][j]=0;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
if (((i>j)&&(i+j+1<n))||((i<j)&&(i+j+1>n)))
{
mas[i][j]=o;
o++;
}
}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
cout << mas[i][j]<< "\t";
cout << "\n";
}
}
Скрiншоти:
Висновок:
Я зрозумiв поняття матрицi та як вони влаштованi, а ще я навчився працювати з двомiрними масивами(матрицями).