Автор работы: Пользователь скрыл имя, 21 Января 2011 в 22:26, курсовая работа
Цель курсовой работы: создание именно такой программы, которая могла бы выполнять основные операции над матрицами.
Значит, предполагаемый проект должен обладать рядом качеств, которые бы выделили его среди остальных программ с той же функцией.
Во-первых, функциональность, то есть программа должна включать основной и дополнительный набор операций с матрицами.
Во-вторых, простота интерфейса, рассчитанного практически на любого пользователя, имеющего хотя бы первоначальное понятие о матрицах.
В-третьих, удобство в использовании программы.
ВВЕДЕНИЕ 3
1.ТЕХНИЧЕСКОЕ ЗАДАНИЕ 4
1.1.Анализ предметной области. 4
1.1.1 Матрицы 4
1.2.Проектирование программного продукта 12
1.2.1. Функциональные требования 12
1.2.2. Требования к интерфейсу 12
2.РАБОЧИЙ ПРОЕКТ 14
2.1.Общие сведения (среда функционирования (ОС), способ загрузки, способ инсталляции, требования к ПО, требования к ТО) 14
2.2. Укрупненный алгоритм 15
2.2.1.КЛАССЫ 15
2.2.3.СХЕМА АЛГОРИТМА 17
3.РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ 18
ЗАКЛЮЧЕНИЕ 23
ЛИТЕРАТУРА 24
СОДЕРЖАНИЕ ВВЕДЕНИЕ 3 1.ТЕХНИЧЕСКОЕ ЗАДАНИЕ 4 1.1.Анализ предметной области. 4 1.1.1 Матрицы 4 1.2.Проектирование программного продукта 12 1.2.1. Функциональные требования 12 1.2.2. Требования к интерфейсу 12 2.РАБОЧИЙ ПРОЕКТ 14 2.1.Общие сведения (среда функционирования (ОС), способ загрузки, способ инсталляции, требования к ПО, требования к ТО) 14 2.2. Укрупненный алгоритм 15 2.2.1.КЛАССЫ 15 2.2.3.СХЕМА АЛГОРИТМА 17 3.РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ 18 ЗАКЛЮЧЕНИЕ 23 ЛИТЕРАТУРА 24 ПРИЛОЖЕНИЕ 25 | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 2 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
ВВЕДЕНИЕДля многих операций в офисах, лабораториях и прочих рабочих местах, связанных с какими-либо расчетами, требуются какие-то вычисления с нестандартными типами данных. Примером могут служить комплексные числа, числа в какой-либо (отличающейся от десятичной) системе исчисления, вектора, матрицы и так далее. Для быстрого выполнения всех этих операции очень удобно использовать компьютер, если в нем есть пригодная для конкретной задачи программа. Практически на любом современном компьютере сейчас установлена программа Excel из популярного пакета Microsoft Office. В этой программе можно выполнять все основные и дополнительные операции над матрицами. Но для выполнения всех этих операции необходимо иметь довольно обширную математическую базу и немалые навыки работы в Excel. Цель курсовой работы: создание именно такой программы, которая могла бы выполнять основные операции над матрицами. Значит, предполагаемый проект должен обладать рядом качеств, которые бы выделили его среди остальных программ с той же функцией. Во-первых, функциональность, то есть программа должна включать основной и дополнительный набор операций с матрицами. Во-вторых, простота интерфейса, рассчитанного практически на любого пользователя, имеющего хотя бы первоначальное понятие о матрицах. В-третьих, удобство в использовании программы. | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 3 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
1.ТЕХНИЧЕСКОЕ ЗАДАНИЕ1.1.Анализ предметной области.Предлагается разработать калькулятор для матричных вычислений, следовательно предметной областью будет являться теория матриц. Теория матриц нашла огромное применение в решении систем линейных уравнений и не только, поэтому целесообразно было бы создать такой калькулятор. 1.1.1 МатрицыМатрицей называется прямоугольная таблица, заполненная некоторыми математическими объектами, например, числами, векторами, функциями, производными, интегралами, операторами и т.д. Будем рассматривать матрицы с элементами из поля действительных чисел, хотя все рассуждения сохраняются и для матриц с другими элементами. Чаще всего элементы матрицы обозначаются одной буквой с двумя индексами, указывающими "адрес" элемента - первый индекс дает номер строки, содержащий элемент, второй - номер столбца. Если матрица имеет m строк и n столбцов, то говорят, что матрица имеет размеры . Принято обозначать матрицы заглавными латинскими буквами, часто - полужирными, а ее элементы - такими же буквами, но строчными. Таким образом, матрица (размеров ) записывается в виде . Для
краткости допускается | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 4 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
этим подразумеваются
квадратные матрицы, имеющие все
элементы равные нулю, кроме элементов
главной диагонали, т.е. элементов в позициях
(1,1), (2,2), ..., (n,n). Диагональная матрица D
с диагональными элементами d1, d2,
..., dn обозначается diag(d1, d2,
..., dn). Диагональная матрица diag(1,
1, ..., 1) называется единичной и
обозначается E (или En) или же I (или
In). Матрица, состоящая из одних нулей,
называется нулевой.Матрица, состоящая
из одной строки, часто называется
вектором (строкой, вектор-строкой,
строчной матрицей), а из одного столбца
- вектор-столбцом (столбцом, столбцовой
матрицей).Две матрицы считаются равными,
если они одного размера и у них совпадают
элементы, стоящие на одинаковых местах.Матрицу
A={ai j} можно транспонировать,
т.е. заменить строки столбцами, в результате
чего получится транспонированная
матрица AT={aj
i}.Две матрицы A={ai
j} и B={bi j} одного и того же размера
можно складывать, их суммой
будет матрица того же размера C={ci
j},
, т.е. чтобы получить сумму двух матрицы
достаточно сложить соответствующие элементы
этих матриц, находящихся на одних и тех
же позициях. Поскольку мы рассматриваем
здесь матрицы с элементами из поля P действительных
чисел, то очевидна ассоциативность
операции сложения матриц, вытекающая
из ассоциативности сложения элементов
поля P. Аналогично имеет место коммутативность
сложения. Таким образом, справедливы
действия:
В качестве матрицы -A, очевидно, следует взять матрицу (-1)A, элементы которой отличаются от элементов A знаком. | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 5 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
"чтобы получить элемент произведения ci j двух матриц нужно элементы i-ой строки первой матрицы умножить на соответствующие элементы j-го столбца второй матрицы и все произведения сложить". Это правило называют "правилом строка на столбец". Пример:
Пусть A={ai j} размером и B={bi j} размером , а также введем векторы , и . Рассмотрим линейные подстановки с этими матрицами: | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 6 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
и . Эти подстановки,
используя определение Действительно, пусть . Тогда коэффициент ci j есть коэффициент при tj в yi. Выпишем все необходимое для вычисления этого коэффициента: . При подстановке x1, x2, ..., xk в yi, получим | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 7 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
.
Таким
образом,
, так что матрица коэффициентов в выражениях
y1, ..., ym через t1, ..., tk
действительно равна AB. A(BT)=(AB)T, где T - столбец. Рассмотрим теперь свойства действия умножения матриц:
Эти свойства непосредственно вытекают из того, что элементы произведения выражаются как через элементы A, так и через элементы B в виде линейных однородных многочленов. Это можно проверить, используя правило умножения и сложения матриц, группируя необходимые слагаемые).
Это свойство трактуется таким образом, что если одна из частей равенства имеет смысл, то имеет смысл и другая, и они равны. Это равенство можно доказать, воспользовавшись следующим простым замечанием. Пусть P и Q - две матрицы такие, что PQ имеет смысл. Пусть Q1, Q2, ..., Qk - столбцы матрицы Q. Тогда столбцами матрицы PQ являются PQ1, PQ2, ..., PQk, что непосредственно следует из определения. Это обстоятельство можно записать в виде P(Q1, Q2, ..., Qk) = (PQ1, PQ2, ..., PQk). | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 8 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
Обозначим через
C1, C2, ..., Cl столбцы матрицы
C. Тогда (AB)C = ((AB)C1, (AB)C2, ..., (AB)Cl).
Далее, BC = (BC1, BC2, ..., BCl)
и A(BC) = (A(BC1), A(BC2), ..., A(BCl)).
Но как было установлено выше, (AB)C1
= A(BC1), (AB)C2 = A(BC2), ..., ибо
C1, C2, ... - столбцы. Таким образом,
(AB)C = A(BC).
Особую роль при умножении матриц играют единичные матрицы En (если нужно буквой n указать порядок) или просто E. Из правила умножения матриц непосредственно следует, что AE=A и EA=A, если эти произведения определены.
Докажем это. Пусть , . Положим , , так что , . Пусть, далее, , . Тогда , . | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 9 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
Итак,
при всех i = 1, 2, ..., m и j = 1, 2, ..., n, а это и означает,
что G=FT, т.е.
, что и требовалось доказать.Таким образом,
матрицы можно складывать, умножать их
на число, а также умножать матрицы друг
на друга. Эти действия обладают свойствами:
Если для некоторых объектов (в нашем случае, это матрицы) выполняются эти восемь свойств, то говорят, что эти объекты образуют векторное пространство, так что матрицы фиксированных размеров образуют векторное пространство.
| ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 10 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
Для квадратных матриц фиксированного порядка n действия сложения и умножения определены всегда, и их результатами являются квадратные матрицы того же порядка. Об этом обстоятельстве говорят таким образом: квадратные матрицы фиксированного порядка образуют кольцо. Кольцо, наделенное структурой векторного пространства, т.е. система объектов, обладающих свойствами 1-12, называется алгеброй над основным полем. Таким образом, квадратные матрицы с элементами из поля K составляют алгебру над этим полем. | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 11 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
1.2.Проектирование программного продуктаЛюбая
матрица представляется в виде двухмерного
массива целых десятичных чисел
типа int. Кроме того, каждой таблице
соответствует еще 2 положительных целых
числа типа unsigned char хранящие размеры
матрицы. 1.2.1.
Функциональные требования
| ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 12 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
у рис. 1- показан интерфейс программы. | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 13 | |||||
Изм | Лист | Подпись | Дата | |||
2.РАБОЧИЙ
ПРОЕКТ
2.1.Общие
сведения (среда функционирования (ОС),
способ загрузки, способ
инсталляции, требования
к ПО, требования к ТО)
Среда функционирования: Borland C++ Builder – это среда быстрой разработки, в которой в качестве языка программирования используется язык C++ Builder (C++ Builder Language). Можно сказать, что язык C++ Builder – это расширенный С++. Например, в С++ Builder есть строковый (AnsiString) и логический (Bool) типы, которых нет в классическом С++. К тому же несомненным преимуществом языка C++ Builder является встроенная RAD (rapid application development) которая обеспечивает быструю разработку приложений. Запуск программы: Стандартный, т.е. двойной клик на иконке программы. Способ инсталляции: Копирование исполняемого файла программы на нужный носитель. Требования к ПО и к ТО:
| ||||||
Разработка программ матричных вычислений | Лист | |||||
Пров. | 14 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
2.2.
Укрупненный алгоритм
2.2.1.КЛАССЫ
| ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 15 | |||||
Изм | Лист | № докум. | Дата | |||
2) __fastcall TForm1::CSE2Change(TObject *Sender)
Опреде 3)__fastcall
TForm1::RB(1-8,14)Click( Выбира Функции вывода значений в интерфейс: void __fastcall TForm1::Button1Click(TObject *Sender) В зависимости от выбранных RadioButton(1-7,14), выполняются расчеты и конечный результат выводится в:
Функция заполнения активной StringGrid(1,2) значениями: void __fastcall TForm1::Button3Click(TObject *Sender) В зависимости от активного RadioButton(12-13) и RadioButton(8-11), заполняется матрица элементами соответствующие выбранным; | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 16 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
2.2.3.СХЕМА
АЛГОРИТМА
Любая функция нажатия функциональной кнопки главного окна использует одну из функций чтения формы и/или одну из функций вывода в форму. Сначала происходит чтение одной или двух таблиц строк StringGrid. Затем с помощью методов класса TForm1 данные обрабатываются и выводятся по необходимости в результирующую или одну из рабочих StringGrid. Рассмотрим на примере функции нажатия кнопки сложения.
| ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 17 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
3.РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯИнтерфейс любой программы должен отличаться легкой восприимчивостью пользователем. Если пользователь сможет разобраться в программе без руководства, то работа программиста будет считаться выполненной великолепно. В этой работе тоже были приложены усилия для создания простого, понятного и удобного интерфейса.(рис. 1) рис. 1- показан
интерфейс программы. В верхней части окна(посередине) находится одна основная таблица. Которая представляет собой панель, включающую рабочую таблицу строк (рис. 2а) и два объекта (рис. 2б,в) изменения размера таблицы. Каждый объект представляет собой числовое поле и две кнопки «↑» и «↓». Верхние объекты изменения размера таблицы (рис2.б) служит для изменения высоты таблицы, (рис. 2в) – ширины. | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 18 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
рис. 2- Одна
из двух верхних панелей. Каждая такая панель представляет собой матрицу. Для ввода данных необходимо:
рис. 3- Результирующая
панель. В правом нижнем углу окна находится результирующая панель. Она представляет собой
панель, включающую результирующую таблицу
(рис. 3а) и одна кнопки (рис. 3в) для переноса
данных из результирующей таблицы в рабочую
таблицу А. | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 19 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
В правом нижнем углу
отображаются краткие теоретические сведения
о производимых действиях над матрицами
(рис. 3б). Панель основных операций. Над матрицами можно выполнять операции сложение, вычитание, умножения, деления и т.д. с помощью выбора соответствующих пунктов на панели основных операций «Действия»(рис. 4). «Сложение матрицы А и В» -сложение матриц(рис. 4а); «Вычитание из матрицы А матрицу В» - вычитание матриц(рис. 4б); «Умножение матрицы А на число» - умножение матрицы(рис. 4в); «Деление матрицы А на число» - деление матрицы(рис. 4г); «Поиск max элемента в матрице А» - (рис. 4д); «Поиск min элемента в матрице А» - (рис. 4е); «Среднее значение матрицы А» - (рис. 4ж); «Транспонирование матрицы А» - (рис. 4з); рис. 4- Панель
основных операций. | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 20 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
Операции преобразования
матрицы.
Во время работы матрицу можно преобразовать с помощью выбора соответствующего варианта на панели дополнительных операций (рис. 5). В разделе «Выбор матрицы» выбирается матрица которую следует заполнить (рис. 5а); «Заполнить случайным числом до 100» - инициализация матрицы случайным числом в диапазоне от 0 до 100 (рис. 5б); «Диагональная матрица» - инициализация нулевой матрицы, кроме диагональной, ячейки главной диагонали остаются пустыми для дальнейшего заполнения с клавиатуры (рис. 5в); «Единичная матрица» - инициализация единичной матрицы (рис. 5г); «Нулевая матрица» -
инициализация нулевой матрицы (рис. 5д); рис. 5- Панели
дополнительных операций Все эти операции производятся над активной матрицей. Чтобы сделать матрицу активной необходимо сначала выделить соответствующую ей таблицу, а затем нажать соответствующую операции кнопку. Для операций умножения или деления на скаляр используется целое число. Это число вводится в числовое поле (рис. 6) находящееся в верхней правой части окна. | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 21 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
рис. 6 - числовое
поле Для очистки всей формы (обнуления всех матриц формы) используется кнопка «Очистить»(рис. 7), находящаяся в правом нижнем углу окна. рис. 7 - кнопка
«обнуления всех матриц формы» Для получения информации
о программе нажмите кнопку «Справка»,
находящуюся в левом верхнем углу окна. рис. 8 - кнопка «Справка» | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 22 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
ЗАКЛЮЧЕНИЕ
| ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 23 | |||||
Изм | Лист | № докум. | Подпись | |||
ЛИТЕРАТУРА
| ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 24 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
ПРИЛОЖЕНИЕИСХОДНЫЙ ТЕКСТ ПРОГРАММЫ. //---------------------------- #include <vcl.h> #include <math.h> #pragma hdrstop #include "Unit1.h" //---------------------------- #pragma package(smart_init) #pragma link "CSPIN" #pragma resource "*.dfm" TForm1 *Form1; //---------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } int i_1,j_1,i_g_1,j_g_1, SG3_i,SG3_j; //переменная для закрашивания ячеек //---------------------------- //Выход из программы void __fastcall TForm1::N2Click(TObject *Sender) { Close(); } //---------------------------- | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 25 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
//Размерность
матрицы А
void __fastcall TForm1::CSE1Change(TObject *Sender) { SG1-> ColCount=CSE1->Value; SG2->ColCount=CSE1->Value; int x; //Колличество столбцов в А x=CSE1->Value; } //---------------------------- void __fastcall TForm1::CSE2Change(TObject *Sender) { SG1->RowCount=CSE2->Value; SG2->RowCount=CSE2->Value; int y; //Колличество строк в матрице А y=CSE2->Value; } //---------------------------- //Сложение матриц А и В void __fastcall TForm1::RB1Click(TObject *Sender) { if(RB1->Checked) { SG2->Visible=true; Label3->Visible=True; Edit1->Visible=False; SG3->Visible=true; | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 26 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
Button1->Enabled=true;
Button2->Enabled=true; GB3->Enabled=true; Memo1->Visible=true; Memo1->Text="Сложение матриц относится к линейным действиям над матрицами. Определяются только для матриц одинаковой размерности."; } } //---------------------------- //Разница матриц А и В void __fastcall TForm1::RB2Click(TObject *Sender) { if (RB2->Checked){ SG2->Visible=True; Label3->Visible=True; Edit1->Visible=False; SG3->Visible=true; Button1->Enabled=true; Button2->Enabled=true; GB3->Enabled=true; Memo1->Visible=true; Memo1->Text="Вычитание матриц относится к линейным действиям над матрицами. Определяются только для матриц одинаковой размерности."; } } //---------------------------- //Умножение матрицы а на число void __fastcall TForm1::RB3Click(TObject *Sender) { if (RB3->Checked) { | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 27 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
SG2->Visible=False;
Label3->Visible=False; CSE3->Visible=False; CSE4->Visible=False; Edit1->Visible=True; SG3->Visible=true; Button1->Enabled=true; Button2->Enabled=true; GB3->Enabled=true; Memo1->Visible=true; Memo1->Text="Умножение матриц на число относится к линейным действиям над матрицами. Определяются только для матриц одинаковой размерности."; } } //---------------------------- //Деление матрицы на число void __fastcall TForm1::RB4Click(TObject *Sender) { if (RB4->Checked) { SG2->Visible=False; Label3->Visible=False; CSE3->Visible=False; CSE4->Visible=False; Edit1->Visible=True; SG3->Visible=true; Button1->Enabled=true; Button2->Enabled=true; GB3->Enabled=true; Memo1->Visible=true; | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 28 | |||||
Изм | Лист | № докум. | Подпись | Дата |
Memo1->Text="Деление
матриц на число относится к линейным
действиям над матрицами. Определяются
только для матриц одинаковой размерности.";
} //---------------------------- } //---------------------------- //Поиск минимального элимента в матрице void __fastcall TForm1::RB6Click(TObject *Sender) { if (RB6->Checked) { SG2->Visible=False; Label3->Visible=False; CSE3->Visible=False; CSE4->Visible=False; Edit1->Visible=False; SG3->Visible=true; Button1->Enabled=true; Button2->Enabled=true; GB3->Enabled=true; Memo1->Visible=false; } } //---------------------------- //Поиск среднего значения матрицы А void __fastcall TForm1::RB7Click(TObject *Sender) { if (RB7->Checked) { | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 29 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
SG2->Visible=False;
Label3->Visible=False; CSE3->Visible=False; CSE4->Visible=False; Edit1->Visible=False; SG3->Visible=false; Button1->Enabled=true; Button2->Enabled=true; GB3->Enabled=true; Memo1->Visible=true; Memo1->Text=" "; } } //---------------------------- //Размерность матрицы В void __fastcall TForm1::CSE4Change(TObject *Sender) { SG2->ColCount=CSE1->Value; int x; //Колличество столбцов в B x=CSE2->Value; } //---------------------------- void __fastcall TForm1::CSE3Change(TObject *Sender) { SG2->RowCount=CSE2->Value; int y; //Колличество строк в матрице B y=CSE2->Value; } //---------------------------- | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 30 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
//Поиск максимального
элимента в матрице
void __fastcall TForm1::RB5Click(TObject *Sender) { if (RB5->Checked) { SG2->Visible=False; Label3->Visible=False; CSE3->Visible=False; CSE4->Visible=False; Edit1->Visible=False; SG3->Visible=true; Button1->Enabled=true; Button2->Enabled=true; GB3->Enabled=true; Memo1->Visible=false; } } //---------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int i,j; i_g_1=CSE1->Value; j_g_1=CSE2->Value; i_1=-1; j_1=-1; //Сложение матриц А и В if (RB1->Checked){ int i,j,x,y; SG3->ColCount=CSE1->Value; | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 31 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
SG3->RowCount=CSE2->Value;
for (i=0;i<CSE1->Value;i++) for (j=0;j<CSE2->Value;j++){ x=StrToInt(SG1->Cells[i][j]); y=StrToInt(SG2->Cells[i][j]); SG3->Cells[i][j]=IntToStr(x+y) SG3_i=i; SG3_j=j; } } //Разность матриц А и В i_g_1=CSE1->Value; j_g_1=CSE2->Value; if (RB2->Checked){ {int i,j,x,y; SG3->ColCount=CSE1->Value; SG3->RowCount=CSE2->Value; for (i=0;i<CSE1->Value;i++) for (j=0;j<CSE2->Value;j++){ x=StrToInt(SG1->Cells[i][j]); y=StrToInt(SG2->Cells[i][j]);
SG3->Cells[i][j]=IntToStr(x-y) SG3_i=i; SG3_j=j; } } } | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 32 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
//Умножение матрицы
А на число
i_g_1=CSE1->Value; j_g_1=CSE2->Value; if (RB3->Checked) { if (Edit1->Text==" ")MessageBox(NULL,"Введите число на которое необходимо умножить матрицу А","Error",MB_OK); else { int i,n,j; n=StrToInt(Edit1->Text); SG3->ColCount=CSE1->Value; SG3->RowCount=CSE2->Value; for (i=0;i<CSE1->Value;i++) for (j=0;j<CSE2->Value;j++)
SG3->Cells[i][j]=FloatToStr( SG3_i=i; SG3_j=j; } } //Деление матрицы А на число i_g_1=CSE1->Value; j_g_1=CSE2->Value; if (RB4->Checked) { int i,n,j; n=StrToInt(Edit1->Text); SG3->ColCount=CSE1->Value; SG3->RowCount=CSE2->Value; for (i=0;i<CSE1->Value;i++) | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 33 | |||||
Изм | Лист | № докум. | Подпись | Дата |
for
(j=0;j<CSE2->Value;j++)
SG3->Cells[i][j]=FloatToStr( SG3_i=i; SG3_j=j; } //Поиск максимального значения в матрице А i_g_1=CSE1->Value; j_g_1=CSE2->Value; if (RB5->Checked) { int i,j,max; max=StrToInt(SG1->Cells[0][0]) i_1=0; j_1=0; for (i=0;i<CSE1->Value;i++) for (j=0;j<CSE2->Value;j++) { if (max<StrToInt(SG1->Cells[i][j] {
max=StrToInt(SG1->Cells[i][j]) i_1=i; j_1=j; } } SG1->Refresh();} //Поиск минимального значения в матрице А i_g_1=CSE1->Value; j_g_1=CSE2->Value; | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 34 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
if (RB6->Checked)
{ int i,j,min; min=StrToInt(SG1->Cells[0][0]) i_1=0; j_1=0; for (i=0;i<CSE1->Value;i++) for (j=0;j<CSE2->Value;j++) { if (min>StrToInt(SG1->Cells[i][j] {
min=StrToInt(SG1->Cells[i][j]) i_1=i; j_1=j; } } SG1->Refresh(); } //Расчет среднего значения матрицы А i_g_1=CSE1->Value; j_g_1=CSE2->Value; if (RB7->Checked) { int i,j,x,y; float sredn; x=CSE1->Value; y=CSE2->Value; sredn=0.; | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 35 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
for (i=0;i<x;i++)
for (j=0;j<y;j++)
sredn+=StrToInt(SG1->Cells[i][ sredn=sredn/((x)*(y)); Memo1->Text="Среднее значение матрицы А "+FloatToStr(sredn); } //Транспонирование матрицы А if (RB14->Checked){ int i,j; SG3->ColCount=CSE2->Value; SG3->RowCount=CSE1->Value; for (i=0;i<CSE1->Value;i++) for (j=0;j<CSE2->Value;j++){ SG3->Cells[j][i]=SG1->Cells[i] SG3_i=i; SG3_j=j; } } SG1->Repaint(); } //---------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { i_1=-1; j_1=-1; Memo1->Text=" "; SG3_i=0; SG3_j=0; | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 36 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
}
//---------------------------- void __fastcall TForm1::SG1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { if (ACol==i_1&&j_1==ARow){
SG1->Canvas->Brush->Color= SG1->Canvas->Rectangle(Rect);
SG1->Canvas->TextOutA(Rect. } } //---------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { //Очистить SG2->Visible=true; Label3->Visible=false; CSE3->Visible=false; CSE4->Visible=false; SG2->Visible=false; Edit1->Visible=false; SG3->Visible=true; i_1=-1; j_1=-1; Edit1->Text=" "; int i,j; | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 37 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
for (i=0;i<CSE1->Value;i++)
for (j=0;j<CSE2->Value;j++){ SG1->Cells[i][j]=" "; SG2->Cells[i][j]=" "; SG3->Cells[i][j]=" "; } CSE1->Value=1; CSE2->Value=1; CSE3->Value=1; CSE4->Value=1; } //---------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { int i,j,n,m; //Заполнить случайным числом до 100 if (RB8->Checked) { for (i=0;i<CSE1->Value;i++) for (j=0;j<CSE2->Value;j++){ if (RB12->Checked) SG1->Cells[i][j]=rand()%100; if (RB13->Checked) SG2->Cells[i][j]=rand()%100; } } //Диогональная матрица if (RB9->Checked) { if (CSE1->Value!=CSE2->Value) else | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 38 | |||||
Изм | Лист | № докум. | Подпись | Дата |
{
for (i=0;i<CSE1->Value;i++) for (j=0;j<CSE2->Value;j++){ //A if (RB12->Checked){ if (i==j)SG1->Cells[i][j]=" "; else SG1->Cells[i][j]=IntToStr(0); } //B if (RB13->Checked){ if (i==j)SG2->Cells[i][j]=" "; else SG2->Cells[i][j]=IntToStr(0); } } } } //Единичная матрица if (RB10->Checked) {
if (CSE1->Value!=CSE2->Value) else { for (i=0;i<CSE1->Value;i++) for (j=0;j<CSE2->Value;j++){ //A if (RB12->Checked) { | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 39 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
if (i==j) SG1->Cells[i][j]=IntToStr(1);
else SG1->Cells[i][j]=IntToStr(0); } //B if (RB13->Checked){ if (i==j) SG2->Cells[i][j]=IntToStr(1); else SG2->Cells[i][j]=IntToStr(0); } } } } //Нулевая матрица if (RB11->Checked) { for (i=0;i<CSE1->Value;i++) for (j=0;j<CSE2->Value;j++) SG1->Cells[i][j]=IntToStr(0); } } //---------------------------- void __fastcall TForm1::RB14Click(TObject *Sender) { //Транспонирование матрицы А if (RB14->Checked) { SG2->Visible=False; Label3->Visible=False; CSE3->Visible=False; | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 40 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
CSE4->Visible=False;
Edit1->Visible=False; SG3->Visible=true; Button1->Enabled=true; Button2->Enabled=true; GB3->Enabled=true; Memo1->Visible=false; } } //---------------------------- void __fastcall TForm1::Help1Click(TObject *Sender) { Application->HelpContext(2); } //---------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { int i,j; SG1->ColCount=SG3_i+1; SG2->RowCount=SG3_j+1; for(i=0;i<=SG3_i;i++) for(j=0;j<=SG3_j;j++) SG1->Cells[i][j]=SG3->Cells[i] } //---------------------------- | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 41 | |||||
Изм | Лист | № докум. | Подпись | Дата | ||
Руководство
программиста Системное и техническое обеспечение
Процесс установки Чтобы
воспользоваться данной программой
на своем персональном компьютере,
достаточно скопировать используемый
файл программы на ПК, на котором
вы хотите воспользоваться данным программным
средством. Сохранение данных При
использовании данного Описание процедур и глобальных переменных В данном программном средстве используются шесть глобальных переменных: int i_1, j_1, i_g_1, j_g_1- данные переменные используются для закрашивания ячеек максимального либо минимального значения, в зависимости от выбранного варианта; SG3_i, SG3_j – переменные используются в процессе экспонирования данных из результатирующей матрицы в матрицу А; | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | ||||||
Изм | Лист | № докум. | Подпись | Дата | ||
В данном
программном средстве используются
следующие процедуры:
void __fastcall TForm1::N2Click(TObject *Sender) - выход из программы; void __fastcall TForm1::CSE1Change(TObject *Sender)- Размерность матрицы А, колличество строк; void __fastcall TForm1::CSE2Change(TObject *Sender)- Размерность матрицы А, колличество столбцов; void __fastcall
TForm1::RB1Click(TObject *Sender)- настройка интерфейса
программы для сложения матриц А и В; void __fastcall
TForm1::RB2Click(TObject *Sender) - настройка интерфейса
программы для вычитания матриц А и В; void __fastcall
TForm1::RB3Click(TObject *Sender) - настройка интерфейса
программы для умножения матрицы А на
число; void __fastcall
TForm1::RB4Click(TObject *Sender)- настройка интерфейса
программы для деления матрицы А на число; void __fastcall TForm1::RB6Click(TObject
*Sender)- настройка интерфейса программы
поиска минимального элимента в матрице; void __fastcall TForm1::RB7Click(TObject
*Sender)- настройка интерфейса программы
поиска среднего значения матрицы А; void __fastcall TForm1::CSE4Change(TObject *Sender) - Размерность матрицы А, колличество столбцов; void __fastcall TForm1::CSE3Change(TObject
*Sender) - Размерность матрицы В, колличество
строк; void __fastcall TForm1::RB5Click(TObject
*Sender) - настройка интерфейса программы
поиска максимального элимента в матрице; void __fastcall TForm1::Button1Click(TObject
*Sender) – в связи с выбранным элиментом
из раздела «Действия» выполняются засчеты
над матрицей (матрицами); void __fastcall TForm1::FormCreate(TObject
*Sender) - присваивание изначальных значений
глобальным переменным при инициализации
программы; void __fastcall TForm1::SG1DrawCell(TObject *Sender, int ACol, int ARow,
TRect &Rect, TGridDrawState State) – процедура закрашивания
ячеек; | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | ||||||
Изм | Лист | № докум. | Подпись | Дата |
void
__fastcall TForm1::Button2Click(TObject *Sender) – процедура
обнуления всех значений; void __fastcall TForm1::Button3Click(TObject *Sender) – процедура заполнения матрицы (матриц) в зависимости от выбранного варианта; void __fastcall TForm1::RB14Click(TObject *Sender) - настройка интерфейса программы для транспонированной матрицы; void __fastcall TForm1::Help1Click(TObject
*Sender) – вызов справки Help; void __fastcall TForm1::Button4Click(TObject
*Sender) – экспорт результатирующей матрицы
в матрицу А; | ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | ||||||
Изм | Лист | № докум. | Подпись | Дата | ||
Блок-схема
| ||||||
Разраб. | Разработка программ матричных вычислений | Лист | ||||
Пров. | 42 | |||||
Изм | Лист | № докум. | Подпись | Дата |
Информация о работе Разработка программ матричных вычислений