Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Основные теоретические сведения.




 

Основные теоретические сведения о массивах были изложены в лабораторной работе №3. Данная лабораторная работа (№4) является логическим продолжением предыдущей и призвана закрепить навыки работы со статическими массивами на примере решения конкретных задач матричной алгебры.

Напомним основные моменты работы со статическими массивами.

1) Как и переменные, массивы необходимо объявлять. Запись double dArray[13][12] означает объявление двумерного массива dArray типа double размером 13×12 элементов, т.е. 13 строк и 12 столбцов.

2) Размер статических массивов определяется заранее и его нельзя менять. Если в задаче необходимо использовать массив переменного размера, то можно объявить массив заведомо большего размера и использовать в ходе решения только необходимую его часть. Например, в задаче требуется определить матрицу порядка n. Можно принять, что n <= 20 и объявить двумерный массив размером 20×20. Этого хватит для решения задачи для любого n <= 20.

3) Индексация в массивах начинается с нуля. Это означает, что для массива dArray индексы изменяются от 0 до 12 по строкам и от 0 до 11 по столбцам.

4) При работе с массивами широко используются циклы for. Следующий участок кода показывает пример обнуления двумерного массива dArray:

 

int i, j;

for (i = 0; i < 13; i++)

{

for (j = 0; j < 12; j++)

{

dArray[i][j] = 0;

}

}

 

5) Для инициализации больших массивов целесообразно использовать генератор случайных чисел.

Предположим, что по условию задачи массив dArray необходимо заполнить действительными числами, а затем определить количество положительных и отрицательных элементов массива. Примем следующее допущение: элементы массива будут иметь значения от –100 до +200. Тогда инициализацию массива можно провести следующим образом:

 

srand((unsigned)time(NULL));

int i, j;

for (i = 0; i < 13; i++)

{

for (j = 0; j < 12; j++)

{

dArray[i][j] = (300. * rand() / RAND_MAX) - 100;

}

}

 

6) В ряде случаев условие задач может быть неполным и для решения целесообразно принимать дополнительные ограничения, например, задать диапазоны изменения входных данных и т.п.

Теперь вы обладаете достаточными знаниями для самостоятельного решения следующих задач.

 

Транспонирование матриц

 

Транспонированной называется матрица (АТ), в которой столбцы исходной матрицы (А) заменяются строками с соответствующими номерами.

Если А = (аij), то АТ = (аji).

Из определения следует, что если исходная матрица А имеет размер m × n, то транспонированная матрица АТ имеет размер n × m.

АЛГОРИТМ 3

Алгоритм операции транспонирования.

Исходные данные:

А [ m × n ] — исходная матрица.

Выходные данные:

M [ n × m ] — транспонированная матрица.

Вспомогательные переменные:

i, j — переменные для организации циклов.

 

Шаг 1. [Цикл по i ]. Выполнить шаг 2 при i = 0,…, n – 1 и после этого завершить алгоритм.

Шаг 2. [Цикл по j ]. Выполнить шаг 3 при j = 0,…, m – 1.

Шаг 3. [Установить М[ i,j ]]. М [ i, j ] = А [ j, i ]. (Формируем элементы транспонированной матрицы)

 

Сложение матриц

 

Складывать (вычитать) можно матрицы одного размера. Суммой матриц А = (аij) и В = (bij) размера m × n называется матрица С = А + В, элементы которой сij = aij + bij для i = 1,2,..., m; j = 1,2,…, n (т.е. матрицы складываются поэлементно).

АЛГОРИТМ 4

Алгоритм сложения двух матриц.

Исходные данные:

А [ m × n ], В [ m × n ] — исходные матрицы.

Выходные данные:

С [ m × n ] — результат суммирования.

Вспомогательные переменные:

i, j — переменные для организации циклов.

 

Шаг 1. [Цикл по i ]. Выполнить шаг 2 при i = 0,…, m – 1 и после этого завершить алгоритм.

Шаг 2. [Цикл по j ]. Выполнить шаг 3 при j = 0,…, n – 1.

Шаг 3. [Установить С [ i,j ]]. С [ i,j ] = А [ i, j ] + В [ i, j ].

 

Умножение матриц

 

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

Пусть А = (аij) матрица размера m × n и В = (bij) матрица размера n × p, тогда размерность произведения А × В равна m × p. При этом матрица С (размера m × p) называется произведением матриц А и В, если каждый ее элемент равен сумме произведений элементов i –й строки матрицы А на соответствующие элементы j –го столбца матрицы В:

АЛГОРИТМ 5

Алгоритм умножения двух матриц.

Исходные данные:

А [ m × n ], В [ n × p ] — исходные матрицы.

Выходные данные:

С [ m × p ] — результат умножения.

Вспомогательные переменные:

i, j, k — переменные для организации циклов.

 

Шаг 1. [Цикл по i ]. Выполнить шаг 2 при i = 0,…, m – 1 и после этого завершить алгоритм.

Шаг 2. [Цикл по j ]. Выполнить шаги от 3 до 4 при j = 0,…, p – 1.

Шаг 3. [Установить С [ i,j ]]. С [ i,j ] = 0.

Шаг 4. [Цикл по k ]. Выполнить шаг 5 при k = 0,…, n – 1.

Шаг 5. [Установить С [ i,j ]]. С [ i,j ] = С [ i,j ] + А [ i, k ] * В [ k, j ].

 


Задание на лабораторную работу №4

 

Задача 1. Разработать алгоритм и написать по нему программу транспонирования матрицы А размера m × n. Значение величин m и n выбрать из табл. 4.1 в соответствии с вариантом задания.

Задача 2. Разработать алгоритм и написать по нему программу сложения матриц А и В размера m × n. Значение величин m и n выбрать из табл. 4.1 в соответствии с вариантом задания.

Задача 3. Разработать алгоритм и написать по нему программу умножения матрицы А размера m × n на матрицу В размера n × p. Значение величин m, n, р выбрать из табл. 4.2 в соответствии с вариантом задания.

 

Оформить протокол лабораторной работы.

 

Примечание! Алгоритмы решения задач должны содержать не только расчетную часть, но и блоки формирования входных и выходных данных.

 


Варианты заданий

 

Таблица 4.1. Варианты заданий к задачам 1 и 2

  № m, n     № m, n     № m, n  
  m = 2; n = 3   m = 3; n = 5   m = 5; n = 2
  m = 2; n = 4   m = 3; n = 6   m = 5; n = 3
  m = 2; n = 5   m = 4; n = 2   m = 5; n = 4
  m = 2; n = 6   m = 4; n = 3   m = 5; n = 5
  m = 3; n = 2   m = 4; n = 4   m = 5; n = 6
  m = 3; n = 3   m = 4; n = 5   m = 6; n = 2
  m = 3; n = 4   m = 4; n = 6    

 

Таблица 4.2. Варианты заданий к задаче 3

  № m, n, p     m, n, p  
  m = 2; n = 2; р = 2   m = 4; n = 4; р = 4
  m = 3; n = 2; р = 2   m = 5; n = 4; р = 4
  m = 4; n = 2; р = 2   m = 2; n = 4; р = 5
  m = 5; n = 2; р = 2   m = 3; n = 4; р = 5
  m = 2; n = 3; р = 3   m = 4; n = 4; р = 5
  m = 3; n = 3; р = 3   m = 5; n = 4; р = 5
  m = 4; n = 3; р = 3   m = 2; n = 4; р = 6
  m = 5; n = 3; р = 3   m = 3; n = 4; р = 6
  m = 2; n = 4; р = 4   m = 4; n = 4; р = 6
  m = 3; n = 4; р = 4   m = 5; n = 4; р = 6

 

Контрольные вопросы

 

Приведите алгоритм решения следующей задачи:

 

А = В * С + D

 

где A, B, C, D матрицы.

Какие следует принять дополнительные условия и ограничения для решения данной задачи?

 


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

 

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

 

Задачи:

1) Повторить теоретические сведения о создании и использовании диннамических массивов в языке Си++.

2) Разработать программу решающую одну из задач матричной алгебры.

 

 





Поделиться с друзьями:


Дата добавления: 2016-11-18; Мы поможем в написании ваших работ!; просмотров: 412 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Человек, которым вам суждено стать – это только тот человек, которым вы сами решите стать. © Ральф Уолдо Эмерсон
==> читать все изречения...

2316 - | 2171 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.