Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
икт.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
137.22 Кб
Скачать
  1. Транспонирование матрицы.

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

Транспонирование матрицы заключается в получении другой матрицы,

столбцы которой равны строкам исходной. Транспонирование необходимо в

некоторых численных методах. Например, при решении системы линейных

уравнений.

Пример 03. Транспонировать матрицу M(3, 4)

DimM(3, 4) AsDouble

Dim MT(4, 3) As Double

For iAs Integer = 1 To 3

For j As Integer = 1 To 4

MT(i, j) = M(j, i)

Next j

Nexti

Результат:

Исходная матрица Транспонированная матрица

1 1 1 1 123

2 2 2 2 123

3 3 3 3 123

123

Работа программы. Работа алгоритма основана на заполнении строк матрицы

МТ элементами столбцов матрицы М.

Такой порядок достигается организацией циклов на работу по строкам

матрицы МТ и заменой привычного положения счетчиков в строке

MT(i, j) = M( j , i )

В i-ю строку матрицы МТ записывается j-й столбец матрицы М, этим и

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

  1. Перемещение, вставка и удаление элементов матрицы.

Перемещение, вставка и удаление элементов матрицы

Задачи, связанные с перемещением элементов внутри матрицы, очень полезны

для создания навыков работы со счетчиками циклов.

Пример 09. Поменять местами 1-ю и 3-ю строки матрицы B(m, n)

Forj AsInteger= 1 Ton 'n – Число элементов в строке

tmp = B(1, j) 'Шаг 1

B(1, j) = B(3, j) 'Шаг 2

B(3, j) = tmp'Шаг 3

Next j

Работа программы. Замена строк, как и столбцов, производится в одномерном

цикле с использованием временной переменной.

Пример 10. Поменять местами 1-й и 3-й столбцы матрицы B(m, n)

For iAs Integer = 1 Tom 'm – Количествострок

tmp = B(i, 1) 'Шаг 1

B(i, 1) = B(i, 3) 'Шаг 2

B(i, 3) = tmp'Шаг 3

Next i

Наиболее распространенной ошибкой в ходе создания подобных программ

является использование вложенных циклов. При этом происходит многократная

замена, и если число строк или столбцов четное, то матрица остается

неизменной, если нечетное, то задача решается, но это решение не может быть

признано оптимальным, потому что программа выполняет «лишние» операции,

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

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

Рассчитать сумму элементов каждой строки и произведение

элементов каждого столбца матрицы B(m, n)

Dim m As Integer = 3 'Числострок

Dim n As Integer = 4 'Числостолбцов

Dim B(m, n) As Double

Dim SumRow(m) As Double

Dim MultiplyCol(n) As Double

For iAs Integer = 1 To 3

For j As Integer = 1 To 4

Console.WriteLine("Введитеэлемент B{" &i&"," & j &")")

B(i, j) = Console.ReadLine()

Nextj

Nexti

'Вывод сформированного массива на экран

For iAs Integer = 1 To 3

For j As Integer = 1 To 4

Console.Write(B(i, j) &" ") 'Write выводит элементы в одну строку

Nextj

Console.WriteLine() 'перевод курсора на следующую строку

Nexti

Console.WriteLine() 'Выводим пустую строку

'Сумма элементов строк

For iAs Integer = 1 To 3

SumRow(i) = 0

For j As Integer = 1 To 4

SumRow(i) = SumRow(i) + B(i, j)

Next j

Console.WriteLine("Сумма {0} строки = {1}", i, SumRow(i))

Nexti

Console.WriteLine() 'Выводим пустую строку

'Произведение элементов столбцов

For j As Integer = 1 To 4

MultiplyCol(j) = 1

For iAs Integer = 1 To 3

MultiplyCol(j) = MultiplyCol(j) * B(i, j)

Next i

Console.WriteLine("Произведение {0} столбыа = {1}", j, MultiplyCol(j))

Nextj

При исходной матрице: Сумма строк Произведение столбцов

5 4 -2 7

4 -7 -3 4

-3 3 3 6

Сумма 1 строки = 14

Сумма 2 строки = -2

Сумма 3 строки = 9

Произведение 1 столбца = -60

Произведение 2 столбца = -84

Произведение 3 столбца = 18

Произведение 4 столбца = 168

Работа программы. Задача решается в блоках Сумма элементов строки и

Произведение элементов столбца с помощью вложенных циклов. Непосредственно

сумма и произведение рассчитываются во внутренних циклах. Внешние циклы

задают изменение строк (сумма) и столбцов (произведение).

Между внутренним и внешним циклами введена строка обновления

переменной. Это сделано для того, чтобы избежать накапливания

рассчитываемого значения. Если эти строки исключить из программы, то мы

получим сумму и произведение всех элементов матрицы.