Учебная работа. Реферат: Действия над матрицами
КОНТРОЛЬНАЯ РАБОТА
по дисциплине «Инструментальные средства разработки программных средств»
На тему: «Деяния над матрицами»
Выполнил:
студент гр.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
]]>