Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Леднева_программирование_на_JAVA.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
11 Мб
Скачать
☆

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

Произведением матрицы A=[aij] размером m*n на матрицу B=[bij] размером n*p называют матрицу C=[cij] размером m*p, в которой каждый элемент cij является результатом скалярного произведения вектора Аi, задаваемого i-той строкой матрицы A на вектор Bj, задаваемый j-тым столбцом матрицы B:

Аi = [ai1 ai2 … ain], Bj = [b1j b2j … bnj]T .

Символ T в […]T обозначает транспонирование матрицы […]: матрица-строка становится матрицей-столбцом.

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

C= AB;

Другими словами, чтобы умножить две матрицы, нужно все векторы, задаваемые строками первой матрицы, умножить скалярно на все векторы, задаваемые столбцами второй матрицы. Например, произведение вектора А1 (1-й строки матрицы A) на вектор B1 (1-й столбец матрицы B) даст значение элемента c11 матрицы C:

Для конкретных значений:

[1 2 3 4]  [-1 6 -2 5]T = 1(-1)+26+3(-2)+45=25.

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

Пример умножения матриц:

.

Задания

Задание 8.1. Создать приложение для задачи 8.1, описанной в лабораторной работе.

Задание 8.2. Создать квадратную матрицу a. Заполнить ее нулями и единицами по следующим правилам:

1) нули на главной диагонали (aij=0; где i=j);

2) остальные элементы – нули и единицы, размещенные случайным образом, но с условием симметрии относительно главной диагонали (aij =aji).

П одсчитать количество единиц ниже главной диагонали.

0

0

1

0

0

1

1

1

0

1

0

0

0

0

i

1

0

1

1

0

0

0

1

0

1

1

1

0

1

1

0

0

1

m

0

0

1

0

0

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

Задание 8.3. Создать квадратную матрицу a. Заполнить ее значениями в интервале от 0 до 20, сгенерированными случайным образом (использовать объект класса Random). Далее заменить элементы матрицы ниже главной диагонали на нули, а выше – на единицы.

Задание 8.4. Создать квадратную матрицу x. Поочередно вывести:

– главную диагональ и диагонали ниже;

– главную диагональ и диагонали выше;

– побочную диагональ и диагонали ниже;

– побочную диагональ и диагонали выше.

Задание 8.5. Создать приложение для демонстрации формирования элементов матрицы, полученной в результате умножения двух исходных матриц. Для заполнения исходных матриц элементами использовать объект класса Random.

Ниже представлен рекомендуемый вид экрана во время работы программы.