- •Часть 1
- •Часть 1
- •Введение
- •Лабораторная работа № 1 разработка схем алгоритмов
- •Краткая теория Этапы решения задач на эвм
- •Определение алгоритма и способы его описания
- •Правила оформления схем алгоритмов
- •Типы алгоритмов
- •Задания
- •Построение схем алгоритмов с помощью текстового редактора word
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 2 работа в среде netbeans. Создание простейших программ с линейным алгоритмом
- •Краткая теория Установка ide NetBeans
- •Общие правила создания приложений
- •Работа с проектом NetBeans
- •Пример создания простейшего приложения
- •Общие правила построения класса
- •Типы данных
- •Объявление переменных
- •Оператор присваивания
- •Приведение типов
- •Организация ввода данных
- •Организация вывода данных
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 3 разработка простейших приложений на базе разветвляющихся алгоритмов
- •Краткая теория Средства переименования в среде NetBeans
- •Отладка кода в среде NetBeans
- •Условный оператор if-else
- •Условный оператор switch
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 4 разработка программ с циклами со счетчиком
- •Краткая теория Циклы со счетчиком
- •Особенности алгоритмов и программ с накапливанием
- •Методы класса Math
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 5 работа с итерационными циклами. Одномерные массивы
- •Краткая теория Итерационные циклы
- •Цикл while
- •Цикл do-while
- •Одномерные массивы
- •Подсчет суммы, количества и среднего значения в одномерных массивах
- •Нахождение минимума и максимума
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 6 алгоритмы сортировки и разбиения одномерных массивов
- •Краткая теория Сортировка одномерных массивов
- •Разбиение одномерных массивов
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 7 обработка двумерных массивов
- •Краткая теория Понятие многомерных массивов. Ввод и вывод матриц
- •Типовые алгоритмы обработки матриц
- •Алгоритмы обработки матриц в целом
- •Алгоритмы обработки матриц по строкам и столбцам
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 8 диагонали матрицы, умножение матриц
- •Краткая теория Обработка главной и побочной диагоналей матриц
- •Работа с диагоналями матриц выше и ниже главной/побочной
- •Умножение матриц
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 9 обработка строк класса string
- •Краткая теория Создание объектов класса String
- •Методы класса String
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 10 алгоритмы и программы обработки фрагментов строк класса string
- •Краткая теория Сравнение символов строк класса String
- •Типовые задачи обработки массивов строк (слов из текста)
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 11 разработка алгоритмов и программ с использованием классов StringBuffer/StringBuilder
- •Краткая теория Создание и обработка объектов классов stringbuffer и stringbuilder
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 12 разработка собственных методов
- •Краткая теория Общие правила создания методов класса
- •Описание методов класса
- •Вызов методов класса
- •Передача параметров
- •Содержание
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Библиографический список
- •Программирование на Java
- •443100, Г. Самара, ул. Молодогвардейская, 244. Главный корпус
- •443100, Г. Самара, ул. Молодогвардейская, 244. Корпус № 8
Умножение матриц
Произведением матрицы 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)+26+3(-2)+45=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.
Ниже представлен рекомендуемый вид экрана во время работы программы.
