Реферат: Действия над матрицами
Название: Действия над матрицами Раздел: Рефераты по информатике Тип: реферат | |||||||||
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН КОНТРОЛЬНАЯ РАБОТА по дисциплине «Инструментальные средства разработки программных средств» На тему: «Действия над матрицами» Выполнил: студент гр.08-ВТ3-3 Проверил: Преподаватель Индивидуальное задание. Задание: Реализация действий над матрицами (сложение, вычитание, умножение, обращение, транспонирование) Технология: Automation, позднее связывание. Тип (имя) сервера: MS Excel. Формулы расчёта. Сложение матриц. Результатом сложения матриц А и В является матрица С элементы которой равны попарной сумме соответствующих элементов матриц А и В. Аij +Bij = Cij
Вычитание матриц. Результатом вычитания матриц А и В является матрица С элементы которой равны попарной разности соответствующих элементов матриц А и В. Аij - Bij = Cij
Умножение матриц. Результатом умножения матриц А и В является матрица С элементы которой равны сумме произведений элементов в соответствующей строке первого множителя и столбце второго.
Но, поскольку мы для расчета используем MS Excel, то умножаем матрицы с помощью доступной нам функции «МУМНОЖ». Обращение матриц. Обратная матрица — такая матрица A-1 , при умножении на которую исходная матрица A даёт в результате единичную матрицу E: АА-1 =А-1 А=Е При условии что,аd-bc≠0. Для получения обращенной матрицы используем функцию MS Excel «МОБР». Транспонирование матриц. Результатом транспонирования матрицы А является матрица С, каждый n-ый столбец которой идентичен n-ой строке матрицы А. А Для получения транспонированной матрицы средствами MS Excel используем функцию «ТРАНСП». Схема алгоритма.
Рисунок 1. –Схема работы программы. Для реализации задания используется функция CreateOleObject модуля comobj. Исходный код приложения. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,comobj, Grids; type TForm1 = class(TForm) Button1: TButton; StringGrid1: TStringGrid; StringGrid2: TStringGrid; StringGrid3: TStringGrid; StringGrid4: TStringGrid; StringGrid5: TStringGrid; StringGrid6: TStringGrid; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var m:OLEvariant; i,j:integer; begin randomize; for i:=1 to 4 do for j:=1 to 4 do StringGrid1.Cells[i-1, j-1]:=IntToStr(random(25)); m:=CreateOLEObject('Excel.Application'); m.WorkBooks.Add; m.WorkBooks[1].WorkSheets[1].Name:='Действия над матрицами'; //m.Application.Visible:=true; for i:=1 to 4 do for j:=1 to 4 do m.WorkBooks[1].WorkSheets[1].Cells.Item[i,j]:=StringGrid1.Cells[i-1, j-1]; //оформление m.WorkBooks[1].WorkSheets[1].Range['E1:E18'].ColumnWidth:=2; m.WorkBooks[1].WorkSheets[1].Range['E1:E18'].Interior.Color:=RGB(0,0,0); m.WorkBooks[1].WorkSheets[1].Range['J1:J18'].ColumnWidth:=2; m.WorkBooks[1].WorkSheets[1].Range['J1:J18'].Interior.Color:=RGB(0,0,0); m.WorkBooks[1].WorkSheets[1].Range['A6:I6'].Interior.Color:=RGB(0,0,0); m.WorkBooks[1].WorkSheets[1].Range['A18:I18'].Interior.Color:=RGB(0,0,0); m.WorkBooks[1].WorkSheets[1].Range['A12:I12'].Interior.Color:=RGB(0,0,0); m.WorkBooks[1].WorkSheets[1].Range['A5'].Font.Bold:=true; m.WorkBooks[1].WorkSheets[1].Range['A5'].Font.Size:=18; m.WorkBooks[1].WorkSheets[1].Range['A5'].Value:='Исходная матрица'; m.WorkBooks[1].WorkSheets[1].Range['A11'].Font.Bold:=true; m.WorkBooks[1].WorkSheets[1].Range['A11'].Font.Size:=13; m.WorkBooks[1].WorkSheets[1].Range['A11'].Value:='Результат транспонирования'; m.WorkBooks[1].WorkSheets[1].Range['F5'].Font.Bold:=true; m.WorkBooks[1].WorkSheets[1].Range['F5'].Font.Size:=13; m.WorkBooks[1].WorkSheets[1].Range['F5'].Value:='Результат вычитания'; m.WorkBooks[1].WorkSheets[1].Range['F11'].Font.Bold:=true; m.WorkBooks[1].WorkSheets[1].Range['F11'].Font.Size:=13; m.WorkBooks[1].WorkSheets[1].Range['F11'].Value:='Результат сложения'; m.WorkBooks[1].WorkSheets[1].Range['A17'].Font.Bold:=true; m.WorkBooks[1].WorkSheets[1].Range['A17'].Font.Size:=13; m.WorkBooks[1].WorkSheets[1].Range['A17'].Value:='Результат умножения'; m.WorkBooks[1].WorkSheets[1].Range['F17'].Font.Bold:=true; m.WorkBooks[1].WorkSheets[1].Range['F17'].Font.Size:=13; m.WorkBooks[1].WorkSheets[1].Range['F17'].Value:='Результат обращения'; m.WorkBooks[1].WorkSheets[1].Range['A19'].Font.Name:='Times New Roman'; m.WorkBooks[1].WorkSheets[1].Range['A19:J19'].RowHeight:=30; m.WorkBooks[1].WorkSheets[1].Range['A19:J19'].MergeCells:=true; m.WorkBooks[1].WorkSheets[1].Range['A19'].Font.Bold:=true; m.WorkBooks[1].WorkSheets[1].Range['A19'].Font.Size:=13; m.WorkBooks[1].WorkSheets[1].Range['A19'].Value:='Действия сложения,вычитания умножения производятся между "исходной" и "транспонированной" матрицами.'; m.WorkBooks[1].WorkSheets[1].Range['A19'].Wraptext:=true; //транспонирование m.WorkBooks[1].WorkSheets[1].Range['A7:D10', EmptyParam].Select; m.WorkBooks[1].WorkSheets[1].Range['A7:D10', EmptyParam].FormulaArray:='=ТРАНСП(R1C1:R4C4)'; //сложение m.WorkBooks[1].WorkSheets[1].Range['F7:I10', EmptyParam].Select; m.WorkBooks[1].WorkSheets[1].Range['F7:I10', EmptyParam].FormulaArray:='=(R1C1:R4C4)+(R7C1:R10C4)'; //вычитание m.WorkBooks[1].WorkSheets[1].Range['F1:I4', EmptyParam].Select; m.WorkBooks[1].WorkSheets[1].Range['F1:I4', EmptyParam].FormulaArray:='=(R1C1:R4C4)-(R7C1:R10C4)'; //умножение m.WorkBooks[1].WorkSheets[1].Range['A13:D16', EmptyParam].Select; m.WorkBooks[1].WorkSheets[1].Range['A13:D16', EmptyParam].FormulaArray:='=МУМНОЖ(R1C1:R4C4;R7C1:R10C4)'; //обращение m.WorkBooks[1].WorkSheets[1].Range['F13:I16', EmptyParam].Select; m.WorkBooks[1].WorkSheets[1].Range['F13:I16', EmptyParam].FormulaArray:='=МОБР(R1C1:R4C4)'; //передача данных for i:=13 to 16 do for j:=1 to 4 do StringGrid5.Cells[j-1, i-13]:=m.WorkBooks[1].WorkSheets[1].Cells.Item[i,j]; for i:=7 to 10 do for j:=6 to 10 do StringGrid4.Cells[j-6,i-7]:=m.WorkBooks[1].WorkSheets[1].Cells.Item[i,j]; for i:=1 to 4 do for j:=6 to 10 do StringGrid3.Cells[j-6, i-1]:=m.WorkBooks[1].WorkSheets[1].Cells.Item[i,j]; for i:=1 to 4 do for j:=7 to 10 do StringGrid2.Cells[j-7, i-1]:=m.WorkBooks[1].WorkSheets[1].Cells.Item[j,i]; for i:=13 to 16 do for j:=6 to 10 do StringGrid6.Cells[j-6, i-13]:=m.WorkBooks[1].WorkSheets[1].Cells.Item[i,j]; m.displayalerts:=false; m.application.quit; m:=Unassigned; end; Рисунок 2.- «Окно вывода результатов действий над матрицами» Список использованной литературы: 3. Корняков В. Н. «Программирование документов и приложений MS Office в Delphi.» —СПб. : БХВ-Петербург, 2005. - 496 с : ил. ISBN 5-94157-458-4 |