Реферат Нахождение произведения квадратной матрицы через функцию
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
РЯЗАНСКИЙ ГОСУДАРСТВЕННЫЙ РАДИОТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ
КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ И ПРИКЛАДНОЙ МАТЕМАТИКИ
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе по дисциплине
«АЛГОРИТМИЧЕСКИЕ ЯЗЫКИ И ПРОГРАММИРОВАНИЕ»
Выполнил: студент группы З-86
Бирюков И.В.
Проверил: доцент кафедры ВПМ
Новичков В.С.
Рязань 2008
Оглавление
Задание на курсовую работу. 3
Введение. 4
Анализ задания и математическая постановка задачи. 5
Разработка схемы алгоритма и ее описание. 7
Разработка программы и ее описание. 10
Инструкция по пользованию разработкой программы.. 11
Решение контрольных примеров и проверка правильности функционирования программы 13
Текст программы и ее описание. 15
Заключение. 19
Список литературы.. 20
ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ
Рязанский государственный радиотехнический университет
Факультет вычислительной техники
Кафедра вычислительной и прикладной математики
ЗАДАНИЕ
на курсовую работу по дисциплине
«Алгоритмические языки и программирование»
Студенту Бирюкову И.В. группы З-86
Составить подпрограмму-функцию нахождения минимального значения элемента в одномерном массиве. Используя функцию, найти сумму минимальных элементов в третьей строке матрицы B и в четвертом столбце матрицы
A = B + BT * C *B
Где A, B, C – квадратные матрицы размером 5х5
Элементы матрицы B определить по формуле
Элементы матрицы С задать произвольно.
Дополнительно рекомендуемая литература
- Волков Е.А. Численные методы: Учеб. пособ. 2-е изд., испр. М.: Наука, 1987.
Дата выдачи задания: 20.09.2008.
Дата выполнения задания: 1.12.2008.
Преподаватель: Новичков В.С.
Введение
Современные средства вычислительной техники и ЭВМ позволяют существенным образом повысить эффективность деятельности инженеров при решении различных задач. При этом наиболее существенным вопросом является организация взаимодействия пользователя со средствами ЭВМ.
В данной курсовой работе написано решение нахождения произведения элементов некоторой квадратной матрицы через написанную функцию, что существенным образом облегчает решение пользователем этой задачи. В качестве языка программирования выбран изучаемый на занятиях по дисциплине «Алгоритмические языки и программирование» язык программирования Турбо Паскаль. К достоинством языка Турбо Паскаль следует отнести такие его характеристики, как модульность, универсальность, удобство работы с массивами и т.д.
Анализ задания и математическая постановка задачи
При решении поставленной задачи необходимо выполнить следующие действия:
- Ввести значения элементов массива C.
- Ввести значения элементов массива B.
- Напечатать значения элементов исходных матриц C и B.
- Провести транспонирование матрицы B, т.е. BT := BT.
- Умножить матрицу BT на матрицу C: BtC := BT * C.
- Умножить матрицу BtC на матрицу B: BtCB := BtC * B.
- Сложить матрицу B и матрицу BtCB: A:=B + BtCB.
- Найти минимальной значение элементов в третьей строке матрицы A.
- Найти минимальной значение элементов в четвертом столбце матрицы B.
- Сложить минимальные элементы матрицы A и матрицы B: minA + minB.
- Вывод результата на экран.
При отладке с программы с целью контроля вычислений после каждого указанного пункта будем производить печать матриц. Печать целесообразно реализовать с помощью подпрограммы. Пункты 5 и 6 целесообразно также оформить в виде подпрограммы умножения квадратных матриц.
Матрицей будем называть таблицу чисел
Если m=n, то матрица называется квадратной. Квадратная матрица из n строк и n столбцов, называется матрицей n-го порядка.
Умножение матриц А и В, т.е. получение произведения этих матриц E = АВ, возможно лишь в том случае, когда число столбцов матрицы А равно числу строк матрицы В . Такие матрицы называются согласованными.
Рис. 1
Произведением двух согласованных матриц Аmk={aij}mk и Вkn={bij}kn называется такая третья матрица Сmn={cij}mn для кoторой каждый элемент cij , i=1,m, j=1,n.вычисляется по формуле (рис. 1).
Матрица АТ, полученная из данной матрицы А заменой каждой её строки столбцом с тем же номером, называется транспонированной относительно матрицы А . Если матрица А имеет размеры m x n, то матрица АТ имеет размеры n x m.
Пример:
Таким же образом транспонируется матрица B.
Суммой двух прямоугольных матриц A = [aij] и B = [bij] одинаковых размеров m x n называется матрица C = [cij] тех же размеров, элементы которой равны суммам соответствующих элементов данной матрицы.
Разработка схемы алгоритма и ее описание
По результатам анализа задания можно составить укрупненную схему алгоритма последовательной структуры (рис. 2)
Рис. 2 Укрупненная схема алгоритма
решения задачи
Проведем детализацию в последовательности, определяемой нумерации блоков на рис. 2.
Ввод элементов матрицы
C и
B. В данном блоке определен ввод значений элементов квадратных матриц C и B размером 5х5. Всего должно быть введено элементов 25 значений в матрицу C, заполнение в матрице в программе происходят с клавиатуры пользователем, структурограмма которой приведена на рис. 3.
Рис. 3 Структурограмма заполнения
массива C с клавиатуры
Матрица B заполняется по формуле:
Структурограмма, которая приведена на рис. 4.
Рис. 4 Структурограмма заполнения
массива B по формуле
Печать исходных матриц
B и
C. (а также отладочная печать матриц BT, BtC, BtCB, A) реализовано с помощью подпрограммы, структурограмма которой приведена на рис. 5.
Рис. 5 Структурограмма печати исходных матриц
Умножение матриц представлено соответствующей подпрограммой, структурограмма которой приведена на рис. 6.
Рис. 6 Структурограмма подпрограммы
умножения квадратных матриц
Транспонирование матриц
B реализуется в вспомогательные массивы BT по схеме приведенной на рис. 7.
Рис. 7 Детализация процесса транспонирования
Сложение матрицы B и BtCB представим в виде выражения над массивами следующим оператором:
A = B + BtCB
Нахождение суммы минимальных элементов в третьей строке матрицы B и в четвертом столбце матрицы A. Схема приведена на рис. 8.
Рис. 8 Детализация нахождения минимальных элементов
Полученные в результате детализации отдельные алгоритмы объединим в соответствии с общей схемой (рис. 2) вместе с целью получения полного алгоритма решения поставленной задачи.
Разработка программы и ее описание
Схема полного алгоритма программы приведена на рис. 9.
Рис. 9 Полный алгоритм программы
Инструкция по пользованию разработкой программы
Для выполнения данной программы обязательными аппаратный и программные требования:
- процессор Pentium 600 МГц;
- память ОЗУ 128Мб;
- видеоадаптер VESA- совместимый VGA;
- жесткий диск: 2Гб;
- тип клавиатуры: 101-клавиша;
- мышь;
- операционная система Windows 98
Заполнение матрицы происходит случайным образом, с помощью функции random. Числа берутся от 0 до 9, тип целый (real) рис. 10.
Рис. 10 Матрица C заполнена целыми
числами от 0 до 9
Переменные используемые в данной программе приведены в таблице 1.
Табл. 1
Переменная | Тип | Назначение |
A[5,5] | real | Массив в который помещается результат сложения матрицы B[5,5] и BtCB[5,5] |
B[5,5] | real | Массив в котором хранится 2-ая матрица |
C[5,5] | real | Массив в котором хранится 3-ая матрица |
BT[5,5] | real | Массив в который помещается результат транспонирования матрицы B |
BtC[5,5] | real | Массив в который помещается результат умножения матрицы BT [5,5] на С[5,5] |
BtCB[5,5] | real | Массив в который помещается результат умножения матрицы BtC [5,5] на B[5,5] |
minA | real | В переменную перемещается минимальный элемент 4-ого столбца матрицы A |
minB | real | В переменную перемещается минимальный элемент 3-ей строки матрицы B |
i, j | Integer | Переменные которые используются в качестве счетчиков в циклах |
Решение контрольных примеров и проверка правильности функционирования программы
Запускаем программу, она сразу же заполняет массивы C и B:
Транспонируем матрицу B:
Произведение матриц BtC := BT * C:
Произведение матриц BtCИ := BtC * B:
Сумма матриц A := B + BtCB
Сумма минимальных элементов в 3-ей строке матрицы B и в 4-ом столбце матрицы A:
Sum := minA + minB;
Текст программы и ее описание
Программа для нахождения произведения элементов некоторой квадратной матрицы написанная на языке Turbo Pascal. Программа функционирует в среде Turbo Pascal.
Исходные данные, имеющие смысл значений элементов массива, вводятся произвольным образом.
В процессе получения результирующей матрицы реализованы следующие действия с массивами:
- транспонирование квадратной матрицы во вспомогательный массив;
- умножение квадратных матриц размером 5х5 (реализовано виде соответствующей подпрограммы общего вида);
- сложение квадратной матрицы.
Каждая матричная операция сопровождается печатью соответствующего массива (печать значений элементов квадратной матрицы выполнена в виде подпрограммы).
После сложения двух квадратных матриц производиться нахождения минимального элемента в 3-ей строке матрицы B и 4-ом столбце матрицы A, после чего происходит сумма данных элементов.
Окончательный вариант программы имеет следующий вид:
program matrix;
const
Nmatr = 5;
type
MatrixType = array[1..Nmatr, 1..Nmatr] of real;
MatrixName = string[70];
{--------------начало процедур и функций программы}
{процедура вывода матрицы на экран}
{ScreenMatrix - матрица
ScreenText - имя матрицы}
procedure screen(ScreenMatrix: MatrixType; ScreenText: MatrixName);
var
i,j: integer;
begin
writeln(ScreenText);
for i:=1 to Nmatr do
begin
for j:=1 to Nmatr do
write(ScreenMatrix[i,j]:8:2);
writeln;
end;
writeln
end;
{процедура умножения матрицы}
{AMatrix, BMatrix - матрицы
CMatrix - результат}
procedure MultiplicationMatrix(AMatrix, BMatrix: MatrixType; var CMatrix: MatrixType);
var
i,j,k: integer;
s: real;
begin
for i:=1 to Nmatr do
for j:=1 to Nmatr do
begin
s:=0;
for k:=1 to Nmatr do
s:=s+AMatrix[i,k]*BMatrix[k,j];
CMatrix[i,j]:=s;
end;
end;
{функция расчета суммы минимальных элементов}
function
var
i: integer;
minA, minB,sum: real;
begin
minA:=AMatrix[1,4];
minB:=BMatrix[3,1];
for i:=1 to NMatr do
begin
if AMatrix[i,4] < minA then
minA:=AMatrix[i,4];
if BMatrix[3,i] < minB then
minB:=BMatrix[3,i];
end;
sum:= minA+minB;
writeln('Сумма минимальных элементов матрицы A и В равна: ',sum:5:3 );
end;
{--------------конец процедур и функций программы}
var
A, B, C, BT, BtC, BtCB: MatrixType;
i,j: integer;
minA, minB: real;
begin
{ввод матрицы С - произвольным методом}
writeln('Введите элементы матрицы С:');
for i:=1 to Nmatr do
for j:=1 to Nmatr do
C[i,j]:=random(9)+1;
{конец ввода матрицы С}
{заполнение матрицы В - по формуле}
for i:=1 to Nmatr do
for j:=1 to Nmatr do
B[i,j]:=(1+sin(i+j))/(i+cos(i+j));
{конец заполнения матрицы В}
{Вывод матрицы В на экран}
Screen(B,'Матрица В имеет следующий вид:');
{Вывод матрицы С на экран}
Screen(C,'Матрица C имеет следующий вид:');
{транспонирование матрицы В в матрицу ВТ}
for i:=1 to Nmatr do
for j:=1 to Nmatr do
BT[i,j]:=B[j,i];
{вывод матрицы ВТ на экран}
Screen(BT,'Транспонированная матрица ВТ имеет следующий вид:');
{умножение транспонированной матрицы ВТ на матрицу С}
MultiplicationMatrix(BT,C,BtC);
{вывод матрицы BtC на экран}
Screen(BtC,'Результат умножения матрицы ВT и C в результирующую матрицу BtC:');
{умножение матрицы BtC на матрицу В}
MultiplicationMatrix(BtC,B,BtCB);
{вывод матрицы BtCB на экран}
Screen(BtCB,'Результат умножения матрицы ВtC и B в результирующую матрицу BtCB:');
{цикл вычисляющий сложения матрицы В и матрицы BtCB}
for i:=1 to Nmatr do
for j:=1 to Nmatr do
A[i,j]:=B[i,j]+BtCB[i,j];
{вывод матрицы A на экран}
Screen(A,'Матрица A имеет следующий вид:');
{вызов функции}
end.
Заключение
Данная программа предназначена для нахождения минимальных элементов некоторых квадратных матриц и их суммирование. С помощью данной программы можно легко и просто рассчитать произведение матрицы, произвести транспонирование матрицы, суммировать матрицу, а так же найти минимальные элементы и произвести их суммирование. Данной программой довольно быстро и легко пользоваться. Это доступно даже простому пользователю ПЭВМ.
В заключение данной курсовой работе можно сказать, что все выше перечисленные задачи выполнены. В дальнейшем если производить модернизацию программы можно реализовать ввод размера квадратного массива вручную, а также реализовать ввод значений матрицы так же с клавиатуры.
Список литературы
- В. В. Фаронов «Turbo Pascal»: Питер, 2007г.
- В. С. Новичков, А.Н. Пылькин «Алгоритмические языки и программирование. Методические указания к курсовой работе»: Рязань «РГРТА», 2002г.