Действия над матрицами

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН



















КОНТРОЛЬНАЯ РАБОТА



по дисциплине «Инструментальные средства разработки программных средств»



На тему: «Действия над матрицами»

























Выполнил: 

студент гр.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 используем функцию «ТРАНСП».	



	Схема алгоритма.



Формирование исходных данных



Результаты

вычисления.

Передача данных из Excel в приложение.

Запуск Excel









	

	

Передача данных в Excel

	

	

	

	

	

Вычисление данных.

	

	

	

	

	

	

	

Закрытие 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