Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.О.П / 3_кол / Лекції / лекция_С++(12_1)_у.doc
Скачиваний:
15
Добавлен:
30.05.2020
Размер:
202.75 Кб
Скачать

Множення матриць

Матриця – математичний об'єкт, еквівалентний двовимірному масиву. Числа розташовуються в матриці по рядках і стовпцях. Дві матриці однакового розміру можна поелементно скласти або відняти один з одного.

Якщо число стовпців в першій матриці збігається з числом рядків в другій, то ці дві матриці можна перемножити. В твору буде стільки ж рядків, скільки в першій матриці, і стільки ж стовпців, скільки в другій. При множенні матриці розміром 3х4 на матрицю розміром 4x7 ми отримуємо матрицю розміром 3x7. Множення матриць некомутативне: обоє твору АВ і ВА двох квадратних матриць однакового розміру можна обчислити, проте результати, взагалі кажучи, відрізнятимуться один від одного. (Відзначимо, що множення чисел комутативне, і твори АВ і ВА двох чисел A і В рівні.)

Для обчислення добутку двох матриць кожен рядок першої поелементно умножається на кожен стовпець другої. Потім підраховується сума таких творів і записується у відповідну клітку результату. Нижче наведений приклад множення двох матриць, яке в цьому випадку вимагає 24-х множень і 16-і складань. Взагалі, стандартний алгоритм множення матриці розміром ахb на матрицю розміром bхс виконує abc множень і а(b-1) із складань.

Розглянемо стандартний алгоритм множення матриці G розміром ахb на матрицю Н розміром bxс. Результат записується в матрицю R розміром ахс. Алгоритм обчислення елементів матриці R містить три вкладені цикли.

Зверніть увагу, що перші два цикли мають як верхні значення параметрів циклу значення а і з (як значення розмірів нової матриці). Третій цикл має як верхнє значення параметра циклу значення b (кількість елементів в рядку першої матриці і стовпці другої матриці):

for (int i=1; i< а ; i++) for (int j=1; i< з ; j++) { R[i][j]=0; for (int k=1; до< b ; k++) R[i][j]=R[i][j]+G[i][k]*H[k][j]; } // for j

Контрольні питання:

  1. Яким чином у пам'яті розташовується багатовимірний масив?

  2. Властивості квадратних матриць

  3. Яким чином здійснюється введення значень двовимірного массиву?

  4. Яким чином здійснюється виведення елементів двовимірного массиву?

  5. Яким чином виконується перебір елементів матриці?

Література:

  1. П. Франка. C++. Учебный курс. 2003 год., 528 стр.

  2. С. В. Глушаков, А. В. Коваль, С. В. Смирнов. Язык программирования C++. Учебный курс. 2002 год., 505 стр.

  3. Х. Дейтл, П. Дейтл. Как программировать С++. 2001 год., 1006 стр.

  4. С.Х. Дьюхэрст. Скользкие места С++. Как избежать проблем при проектировании и компиляции ваших программ. 2006 год., 265 стр.

  5. М. Динман. С++. Освой на примерах. 2006 год. 384стр.

  6. Лаптев и др. С++. Объектно-ориентированное программирование. Задачи и упражнения. 2007 год. 288 стр.

  7. Дж. Либерти. Освой самостоятельно C++. 3-изд. 2009 год. 820 стр.

  8. Стенли Б. Липпман, Жози Лажойе. С++ для начинающих. 2001 год.

14

Соседние файлы в папке Лекції