Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМП Основы алгоритмизации_new.DOC
Скачиваний:
6
Добавлен:
21.11.2018
Размер:
687.1 Кб
Скачать

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

Транспонирование матрицы A={}N*N предполагает перестановку в ней элементов строк и столбцов.

Например, A=, тогда AT = . ( 16 )

Существуют два способа решения данной задачи:

  1. с использованием новой матрицы AT={}N*N ,

в этом случае для ;

  1. путем перестановки в три шага соответствующих элементов в исходной матрице A (рис.18).

2-ой шаг

1-ый шаг 3-ий шаг

Aij пустая ячейка b aji

Рис.18

Схемы алгоритмов транспонирования элементов матрицы для обоих способов показаны на рис. 19.

1) 2)

Рис. 19

9. Инвертирование элементов вектора

Инвертирование вектора X={}N означает перечисление элементов вектора в обратном порядке. Например, если X=(0, -3, 2, 6), тогда XIN = (6, 2, -3, 0) .

Аналогично, существуют два способа решения данной задачи:

1) с использованием нового вектора XIN={}N ,

в этом случае = для ;

2) путем перестановки в три шага соответствующих элементов в исходном векторе X .

Схемы алгоритмов способов инвертирования элементов вектора пред-ставлены на рис. 20.

1) 2)

Рис. 20

Рассмотрим более сложную задачу.

Пример 7

Необходимо вычислить значение параметра Z в соответствии со следующим выражением:

Z = ( A - E ) * C1IN * ( C22 - 1 ) , ( 17 )

где A - исходная матрица, все элементы и размерность которой известны;

E – единичная матрица;

C1 – главная диагональ матрицы A;

C2 – побочная диагональ матрицы A.

Рассмотрим поэтапный процесс решения данной задачи.

  1. Ввод размерности N и всех элементов матрицы ().

  2. Вычисление единичной матрицы E={}N*N.

  3. Вычисление главной диагонали (вектор) ().

  4. Вычисление побочной диагонали (вектор) ().

  5. Инвертирование вектора C1: ().

  6. Вычисление квадратной матрицы B=A-E.

  7. Вычисление вектора D=B*C1IN.

  8. Вычисление значения F=C2*C2.

  9. Вычисление значения K=F-1.

  1. Вычисление вектора Z=D*K.

  2. Вывод вектора Z={}N.

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

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

1) предусмотреть комментарии к каждому пункту задачи;

2) организовать вывод значений рассчитанных параметров при выпол-нении каждого пункта задачи.

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

10. Алгоритм поиска максимального ( или минималь-ного ) элемента вектора

Дан вектор X={}N .

Необходимо найти элемент вектора Х , имеющий максимальное значение. Например, пусть X = (3, 4, 2, -1, 6, 0). Очевидно, что M(max) == 6; L (порядковый номер максимального элемента)=5.

Процедура поиска максимального элемента вектора следующая: предположим, что максимальным является первый элемент, т.e. M=Х1, L=1.

Затем каждый элемент , сравнивается со значением M, и если значение некоторого текущего элемента больше M, тогда M принимает новое значение с запоминанием его порядкового номе-ра L = i.

Алгоритм поиска максимального элемента вектора показан на рис. 21.

Данный алгоритм пригоден для поиска минимального элемента вектора при очевидной замене знака "<" на знак ">" в блоке проверки условия (рис. 21).

Рис. 21