Реферат по предмету "Информатика, программирование"


Калькулятор для матриць

Міністерствоосвіти та науки України
Одеськийнаціональний політехнічний університет
Кафедраприкладної математики
Курсоваробота
здисципліни: «Програмування»
тема:«Калькулятор для матриць»
Одеса– 200

План
 
Вступ
1. Теоретичні відомості
2. Постановка задачі
3. Опис алгоритму
4. Опис програми
5. Лістинг програми
6. Висновок
7.Використана література

Вступ
 
Лінійна алгебра ітеорія матриць давно увійшли до складу основних інструментів, яківикористовують інші математичні дисципліни, одночасно вони самі являються плодотворноюобластю досліджень.
Результати цихдосліджень необхідні практично в будь-якій області математики – будь цедиференціальні рівняння, теорія ймовірностей і статистика чи теорія оптимізації– і практично у всіх додатках – назвемо хоча б додатки до теоретичної та прикладноїекономіки, інженерних дисциплін чи дослідження операцій.
Матриці являютьсяособливим абстрактним класом, за допомогою якого розв’язується безліч задачкомбінаторики та інших розділів математики, саме тому їхнє вивченняпродовжується і нині. З іншого боку, матриці – вельми специфічна структура знеочевидними властивостями, які є важливими і корисними при розробці алгоритмів для розв’зання систем лінійних алгебраїчнихрівнянь.

Теоретичнівідомості
 
Квадратноюматрицеюбудемо називати квадратну таблицю, що складається з чисел або алгебраїчнихвиразів, які розташовані в n – рядках та n –стовпцях, n – називається порядкомквадратної матриці.
A = />
Якщо порядокматриці n дорівнює одиниці, то цяматриця складається з одного елемента /> івизначником першого порядку, який відповідає такій матриці, ми назвемовеличину цього елемента .
Головноюдіагоналлюматриці А називається діагональ />, якаіде з лівого верхнього кута цієї матриці у правий нижній її кут .
Побічноюдіагоналлю тієїж матриці називається діагональ />, якаіде з лівого нижнього кута у правий верхній кут .
Визначникомдругого порядку матриці називається число або алгебраїчний вираз, що дорівнює різницідобутку елементів головної діагоналі матриці та добутку елементів її побічноїдіагоналі .
Мінором будь — якого елемента /> матриці n — го порядку називається визначникпорядку n-1, що складається з матриціА, які залишаються після вилучення i -того рядка та j — того стопцяна перехресті яких цей елемент знаходиться. Мінор елемента /> будемо позначати />.
Визначникомпорядку nматриці А, назвемо число, яке дорівнює /> , позначимо його символом

Δ = det А = /> = /> .
 
Алгебраїчнимдоповненням будь- якого елемента матриці А, називається його мінор, якщо сума номеріврядка та стовпця, в яких цей елемент знаходиться — парна і, мінор, що беретьсяз протилежним знаком, якщо ця сума непарна .
Добуткомматриці А = />(n — го порядку) на дійсне числоλ, називається інша матриця С тих же розмірів С = />, елементи якої дорівнюютьдобуткам числа λ на відповідні елементи матриці А, тобто
/> = λ /> .
 
Сумою матриць А = /> і В = /> однакових розмірів,називається третя матриця С = /> тих жерозмірів, елементи/> якої дорівнюютьсумі відповідних елементів матриць А і В: /> =/>/> .
Різницеюматриць А іВ однакових розмірів, називається третя матриця С = /> тихже розмірів, яка в сумі з матрицею В дає А .
Добуткомматиці А = /> на матрицю В = />, називається третя матрицяС = /> , кожен елемент якоїдорівнює сумі добутків елементів відповідного (k — того) рядка матриці А на елементи відповідного (l — того) стовпця матриці В, тобто
/> .

Матрицяназивається транспонованою, якщо її рядки та стовпці переставити місцямиі позначається А/> .
Квадратна матрицяА/> називається оберненою доквадратної матриці А, якщо А/>*А = А/>*А = Е, де Е — одиничнаматриця.
Елементи матриціА/> обчислюються за формулою:А/>/>,де матриця С складається з алгебраїчних доповнень відповідних елементів матриціА.
Нормою квадратної матриці А,називається число, яке є сумою модулів елементів матриці А, тобто /> .
Слідом квадратної матриці будемоназивати число, яке є сумою елементів цієї матриці, розташованих на головнійдіагоналі (/>) .
Числомобумовленостіквадратної матриці А називається величина
/>
 
Постановказадачі
Ціль роботи – продемонструватиможливості використання калькулятора для матриць.
Мета роботи – створення програми задопомогою якої можна розв’язувати деякі задачі лінійноїалгебри.
 
Описалгоритму
 
Алгоритмстворення програми полягає у наступному :
Спочатку створюємовікно форми, потім додаємо текстові вікна у які з клавіатури вводимо дані. Далідодаємо кнопки, кожна з яких відповідає за одну дію чи операцію над матрицями.Також додатково створюємо контекстне меню, пункти якого виконують ті ж функції,що і кнопки на формі. Результат виводиться у відповідне текстове вікно.
Описпрограми
 
Точка входу всаму програму знаходиться таким чином: відкриваємо папку MATRIXcalculator, запускаємо файл nn.sln, у вікні зліва обираємо папкуHeaderFiles і файл Form1.h, з’являється вікно форми, де зклавіатури вводять розмірність матриці, елементи матриць, над якими необхідновиконати відповідні дії, далі можемо або натиснути кнопку безпосередньо у вікніформи або в меню Operations обрати відповідний пункт меню, чи за допомогою комбінації так званих„гарячих клавіш”. Кінцевий результат виводиться у текстовому вікні.
Запуск програмина виконання здійснюємо за допомогою комбінації клавіш Ctrl+ F5.
Програмавикористовує ряд функцій :
voidGET_ARRAY(String *text,double **X,int n)
за допомогоюданої функції отримуємо масиви – поки симол не є розширеним символьним типом іне є переходом на нову строку, нарощуємо лічильник; далі виділяємо у строці підстрокуі перетворюємо її на дійсне число подвійної точності (тип double).
doubleDET(double **X,int n)

— ця функціяобчислює визначник матриці.
Функція double DET(double **X,intn)
повертаєалгебраїчні доповнення елементів масива.
voidTRANSP_ARRAY(double **X,int n)
— транспонуєелементи двомірного масива:
перший елементзалишає на своєму місці, а далі іде по рядках, переставляючи елементи рядків істовпців місцями.
doubleTRACE(double **X,int n)
— повертаєзначення сліду матриці.
Функція працюєтаким чином:
Крокуючиелементами матриці, перевіряє: якщо індекс рядка та стовпця співпадають (цеелементи головної діагоналі), присвоюємо значення першого елемента головноїдіагоналі деякій змінній, на наступному кроці, якщо елемент задовольняє вищеназваній умові, додаємо до сталої наступний елемент головної діагоналі і такдалі (поки індекс не буде дорівнювати порядку матриці) .
Функція String* CNV_ARRAY(double**X,intn) необхідна для того, щоб післявиконання дій (операцій) над матрицями отриманий результат перетворити настроку. Повертає строку .
Cловник понять використаних впрограмі:
 
Button – кнопка .
Label – надпис .
TextBox – текстове вікно .
Length – розмір, довжина масиву .
MainMenu – головне меню .
MenuItem – пункт меню .

Лістингпрограми
 
#pragma once
namespace nn
{
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
///
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need tochange the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
///
public __gc class Form1: public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
}
protected:
void Dispose(Boolean disposing)
{
if (disposing && components)
{
components->Dispose();
}
__super::Dispose(disposing);
}
private: System::Windows::Forms::Label * label1;
private: System::Windows::Forms::Label * label2;
private: System::Windows::Forms::Label * label3;
private: System::Windows::Forms::Label * label4;
private: System::Windows::Forms::Label * label5;
private: System::Windows::Forms::Label * label6;
private: System::Windows::Forms::TextBox * textBox1;
private: System::Windows::Forms::TextBox * textBox2;
private: System::Windows::Forms::TextBox * textBox3;
private: System::Windows::Forms::TextBox * textBox4;
private: System::Windows::Forms::TextBox * textBox5;
private: System::Windows::Forms::TextBox * textBox6;
private: System::Windows::Forms::Button * button1;
private: System::Windows::Forms::Button * button2;
private: System::Windows::Forms::Button * button3;
private: System::Windows::Forms::Button * button4;
private: System::Windows::Forms::Button * button5;
private: System::Windows::Forms::Button * button6;
private: System::Windows::Forms::Button * button7;
private: System::Windows::Forms::Button * button8;
private: System::Windows::Forms::MainMenu * mainMenu1;
private: System::Windows::Forms::MenuItem * menuItem1;
private: System::Windows::Forms::MenuItem * menuItem2;
private: System::Windows::Forms::MenuItem * menuItem3;
private: System::Windows::Forms::MenuItem * menuItem4;
private: System::Windows::Forms::MenuItem * menuItem5;
private: System::Windows::Forms::MenuItem * menuItem6;
private: System::Windows::Forms::MenuItem * menuItem7;
private: System::Windows::Forms::MenuItem * menuItem8;
private: System::Windows::Forms::MenuItem * menuItem9;
private: System::Windows::Forms::MenuItem * menuItem10;
private: System::Windows::Forms::MenuItem * menuItem11;
private: System::Windows::Forms::Button * button10;
private: System::Windows::Forms::Button * button11;
private: System::Windows::Forms::MenuItem * menuItem12;
private: System::Windows::Forms::Button * button9;
private:
////////////////////////////////////////////////////////
double DET(double **X,int n)
{
double **T,kk=0;
int i,j,l,e=1;
if(n==1)return X[0][0];
if(n==2)return X[0][0]*X[1][1]-X[1][0]*X[0][1];
T=new double*[n-1];
for(i=0;i
T[i]=new double[n-1];
for(l=0;l
{
for(j=0;j
for(i=0;i
T[i][j]=X[i+1][j];
for(j=l+1;j
for(i=0;i
{
T[i][j-1]=X[i][j+1];
kk+=DET(T,n-1)*X[0][l]*e;
e*=-1;
}
}
return kk;
}
/////////////////////////////////////////////////////////
double ALG_DOP(double **X,int n,int r,int c)
{
double **T,k;
int i,j,e=1,ee=1;
if(n==1)
return X[0][0];
if(n==2)
{
if((r+c)%2==1)
{ee=-1;}
}
return ee;
T=new double*[n-1];
for(i=0;i
T[i]=new double[n-1];
for(i=0;i
{
for(j=0;j
T[i][j]=X[i][j];
for(j=c+1;j
T[i][j-1]=X[i][j];
}
for(i=r+1;i
{
for(j=0;j
T[i-1][j]=X[i][j];
for(j=c+1;j
T[i-1][j-1]=X[i][j];
}
k=DET(T,n-1);
if((r+c)%2==1)
e=-1;
return k*e;
}
////////////////////////////////////////////////////
String* CNV_ARRAY(double **X,int n)
{
int i,j;
String *s;
String *ss;
for(i=0;i
{
for(j=0;j
{
ss=Convert::ToString(X[i][j]);
s=s->Concat(s,ss," ");
}
s=s->Concat(s,"\n\0");
}
return s;
}
////////////////////////////////////////////////////
void GET_ARRAY(String *text,double **X,int n)
{
int i,j,k=0,p=0;
double dd;
for(i=0;i
{
for(j=0;j
{
while(((p+k)Length)&&(text->Chars[p+k]!=wchar_t(''))&&(text->Chars[p+k]!='\n')){k++;}
dd=Convert::ToDouble(text->Substring(p,k));
X[i][j]=dd;
p=p+k+1;
k=0;
}
}
}
//////////////////////////////////////////////////////
void TRANSP_ARRAY(double **X,int n)
{
int i,j;
double ca;
for(i=0;i
for(j=i+1;j
{
ca=X[i][j];
X[i][j]=X[j][i];
X[j][i]=ca;
}
}
//////////////////////////////////////////////////////
double TRACE(double **X,int n)
{
int i,j;
double tt=0;
for(i=0;i
for(j=0;j
{
if(i==j)
tt+=X[i][j];
}
return tt;
}
////////////////////////////////////////////////////
///
/// Required designer variable.
///
System::ComponentModel::Container * components;
///
/// Required method for Designer support — do not modify
/// the contents of this method with the code editor.
///
void InitializeComponent(void)
{
this->label1 = new System::Windows::Forms::Label();
this->label2 = new System::Windows::Forms::Label();
this->label3 = new System::Windows::Forms::Label();
this->label4 = new System::Windows::Forms::Label();
this->label5 = new System::Windows::Forms::Label();
this->label6 = new System::Windows::Forms::Label();
this->textBox1 = new System::Windows::Forms::TextBox();
this->textBox2 = new System::Windows::Forms::TextBox();
this->textBox3 = new System::Windows::Forms::TextBox();
this->textBox4 = new System::Windows::Forms::TextBox();
this->textBox5 = new System::Windows::Forms::TextBox();
this->textBox6 = new System::Windows::Forms::TextBox();
this->button1 = new System::Windows::Forms::Button();
this->button2 = new System::Windows::Forms::Button();
this->button3 = new System::Windows::Forms::Button();
this->button4 = new System::Windows::Forms::Button();
this->button5 = new System::Windows::Forms::Button();
this->button6 = new System::Windows::Forms::Button();
this->button7 = new System::Windows::Forms::Button();
this->button8 = new System::Windows::Forms::Button();
this->button9 = new System::Windows::Forms::Button();
this->mainMenu1 = new System::Windows::Forms::MainMenu();
this->menuItem1 = new System::Windows::Forms::MenuItem();
this->menuItem2 = new System::Windows::Forms::MenuItem();
this->menuItem3 = new System::Windows::Forms::MenuItem();
this->menuItem4 = new System::Windows::Forms::MenuItem();
this->menuItem5 = new System::Windows::Forms::MenuItem();
this->menuItem6 = new System::Windows::Forms::MenuItem();
this->menuItem7 = new System::Windows::Forms::MenuItem();
this->menuItem8 = new System::Windows::Forms::MenuItem();
this->menuItem9 = new System::Windows::Forms::MenuItem();
this->menuItem10 = new System::Windows::Forms::MenuItem();
this->menuItem11 = new System::Windows::Forms::MenuItem();
this->button10 = new System::Windows::Forms::Button();
this->button11 = new System::Windows::Forms::Button();
this->menuItem12 = new System::Windows::Forms::MenuItem();
this->SuspendLayout();
//
// label1
//
this->label1->Location = System::Drawing::Point(16, 88);
this->label1->Name = S«label1»;
this->label1->Size = System::Drawing::Size(24, 23);
this->label1->TabIndex = 15;
this->label1->Text = S«A:»;
this->label1->TextAlign =System::Drawing::ContentAlignment::MiddleCenter;
//
// label2
//
this->label2->Location = System::Drawing::Point(8, 192);
this->label2->Name = S«label2»;
this->label2->Size = System::Drawing::Size(32, 23);
this->label2->TabIndex = 16;
this->label2->Text = S«B:»;
this->label2->TextAlign =System::Drawing::ContentAlignment::MiddleCenter;
//
// label3
//
this->label3->Location = System::Drawing::Point(352, 192);
this->label3->Name = S«label3»;
this->label3->Size = System::Drawing::Size(32, 23);
this->label3->TabIndex = 17;
this->label3->Text = S«C:»;
this->label3->TextAlign =System::Drawing::ContentAlignment::MiddleCenter;
//
// label4
//
this->label4->Location = System::Drawing::Point(16, 16);
this->label4->Name = S«label4»;
this->label4->Size = System::Drawing::Size(48, 23);
this->label4->TabIndex = 18;
this->label4->Text = S«SIZE:»;
this->label4->TextAlign = System::Drawing::ContentAlignment::MiddleCenter;
//
// label5
//
this->label5->Location = System::Drawing::Point(152, 16);
this->label5->Name = S«label5»;
this->label5->Size = System::Drawing::Size(48, 23);
this->label5->TabIndex = 19;
this->label5->Text = S«CONST:»;
this->label5->TextAlign =System::Drawing::ContentAlignment::MiddleCenter;
//
// label6
//
this->label6->Location = System::Drawing::Point(176, 216);
this->label6->Name = S«label6»;
this->label6->Size = System::Drawing::Size(56, 23);
this->label6->TabIndex = 20;
this->label6->Text = S«REZULT:»;
this->label6->TextAlign =System::Drawing::ContentAlignment::MiddleCenter;
//
// textBox1
//
this->textBox1->AutoSize = false;
this->textBox1->BackColor = System::Drawing::Color::Lavender;
this->textBox1->Location = System::Drawing::Point(48, 56);
this->textBox1->Name = S«textBox1»;
this->textBox1->Size = System::Drawing::Size(100, 80);
this->textBox1->TabIndex = 1;
this->textBox1->Text = S"";
this->textBox1->TextAlign =System::Windows::Forms::HorizontalAlignment::Center;
//
// textBox2
//
this->textBox2->AutoSize = false;
this->textBox2->BackColor = System::Drawing::Color::Lavender;
this->textBox2->Location = System::Drawing::Point(48, 160);
this->textBox2->Name = S«textBox2»;
this->textBox2->Size = System::Drawing::Size(100, 80);
this->textBox2->TabIndex = 2;
this->textBox2->Text = S"";
this->textBox2->TextAlign =System::Windows::Forms::HorizontalAlignment::Center;
//
// textBox3
//
this->textBox3->AutoSize = false;
this->textBox3->BackColor = System::Drawing::Color::AliceBlue;
this->textBox3->Location = System::Drawing::Point(392, 160);
this->textBox3->Name = S«textBox3»;
this->textBox3->Size = System::Drawing::Size(100, 80);
this->textBox3->TabIndex = 4;
this->textBox3->Text = S"";
this->textBox3->TextAlign =System::Windows::Forms::HorizontalAlignment::Center;
//
// textBox4
//
this->textBox4->AutoSize = false;
this->textBox4->BackColor = System::Drawing::Color::LavenderBlush;
this->textBox4->Location = System::Drawing::Point(64, 16);
this->textBox4->Name = S«textBox4»;
this->textBox4->Size = System::Drawing::Size(64, 20);
this->textBox4->TabIndex = 0;
this->textBox4->Text = S"";
this->textBox4->TextAlign =System::Windows::Forms::HorizontalAlignment::Center;
// textBox5
//
this->textBox5->AutoSize = false;
this->textBox5->BackColor = System::Drawing::Color::LavenderBlush;
this->textBox5->Location = System::Drawing::Point(208, 16);
this->textBox5->Name = S«textBox5»;
this->textBox5->Size = System::Drawing::Size(40, 20);
this->textBox5->TabIndex = 3;
this->textBox5->Text = S"";
this->textBox5->TextAlign =System::Windows::Forms::HorizontalAlignment::Center;
//
// textBox6
//
this->textBox6->AutoSize = false;
this->textBox6->BackColor = System::Drawing::Color::AliceBlue;
this->textBox6->Location = System::Drawing::Point(240, 208);
this->textBox6->Name = S«textBox6»;
this->textBox6->Size = System::Drawing::Size(48, 32);
this->textBox6->TabIndex = 5;
this->textBox6->Text = S"";
this->textBox6->TextAlign = System::Windows::Forms::HorizontalAlignment::Center;
//
// button1
//
this->button1->BackColor = System::Drawing::Color::LightSkyBlue;
this->button1->Location = System::Drawing::Point(272, 8);
this->button1->Name = S«button1»;
this->button1->Size = System::Drawing::Size(32, 23);
this->button1->TabIndex = 6;
this->button1->Text = S"*";
this->button1->Click += new System::EventHandler(this,button1_Click);
//
// button2
//
this->button2->BackColor = System::Drawing::Color::LightSkyBlue;
this->button2->Location = System::Drawing::Point(344, 8);
this->button2->Name = S«button2»;
this->button2->Size = System::Drawing::Size(32, 23);
this->button2->TabIndex = 7;
this->button2->Text = S"+";
this->button2->Click += new System::EventHandler(this,button2_Click);
//
// button3
//
this->button3->BackColor = System::Drawing::Color::LightSkyBlue;
this->button3->Location = System::Drawing::Point(432, 8);
this->button3->Name = S«button3»;
this->button3->Size = System::Drawing::Size(32, 23);
this->button3->TabIndex = 8;
this->button3->Text = S"--";
this->button3->Click += new System::EventHandler(this,button3_Click);
//
// button4
//
this->button4->BackColor = System::Drawing::Color::LightSkyBlue;
this->button4->Location = System::Drawing::Point(264, 48);
this->button4->Name = S«button4»;
this->button4->Size = System::Drawing::Size(48, 23);
this->button4->TabIndex = 9;
this->button4->Text = S"*const";
this->button4->Click += new System::EventHandler(this,button4_Click);
//
// button5
//
this->button5->BackColor = System::Drawing::Color::LightSkyBlue;
this->button5->Location = System::Drawing::Point(264, 96);
this->button5->Name = S«button5»;
this->button5->Size = System::Drawing::Size(48, 23);
this->button5->TabIndex = 10;
this->button5->Text = S"/const";
this->button5->Click += new System::EventHandler(this,button5_Click);
//
// button6
//
this->button6->BackColor = System::Drawing::Color::LightSkyBlue;
this->button6->Location = System::Drawing::Point(344, 48);
this->button6->Name = S«button6»;
this->button6->Size = System::Drawing::Size(40, 23);
this->button6->TabIndex = 11;
this->button6->Text = S«det»;
this->button6->Click += new System::EventHandler(this,button6_Click);
//
// button7
//
this->button7->BackColor = System::Drawing::Color::LightSkyBlue;
this->button7->Location = System::Drawing::Point(344, 96);
this->button7->Name = S«button7»;
this->button7->Size = System::Drawing::Size(40, 23);
this->button7->TabIndex = 12;
this->button7->Text = S"^-1";
this->button7->Click += new System::EventHandler(this,button7_Click);
//
// button8
//
this->button8->BackColor = System::Drawing::Color::LightSkyBlue;
this->button8->Location = System::Drawing::Point(416, 48);
this->button8->Name = S«button8»;
this->button8->Size = System::Drawing::Size(48, 23);
this->button8->TabIndex = 13;
this->button8->Text = S«transp»;
this->button8->Click += new System::EventHandler(this,button8_Click);
//
// button9
//
this->button9->BackColor = System::Drawing::Color::LightSkyBlue;
this->button9->Location = System::Drawing::Point(416, 96);
this->button9->Name = S«button9»;
this->button9->Size = System::Drawing::Size(48, 23);
this->button9->TabIndex = 14;
this->button9->Text = S«norma»;
this->button9->Click += new System::EventHandler(this,button9_Click);
//
// mainMenu1
//
System::Windows::Forms::MenuItem* __mcTemp__1[] = newSystem::Windows::Forms::MenuItem*[1];
__mcTemp__1[0] = this->menuItem1;
this->mainMenu1->MenuItems->AddRange(__mcTemp__1);
//
// menuItem1
//
this->menuItem1->Index = 0;
System::Windows::Forms::MenuItem* __mcTemp__2[] = newSystem::Windows::Forms::MenuItem*[11];
__mcTemp__2[0] = this->menuItem2;
__mcTemp__2[1] = this->menuItem3;
__mcTemp__2[2] = this->menuItem4;
__mcTemp__2[3] = this->menuItem5;
__mcTemp__2[4] = this->menuItem6;
__mcTemp__2[5] = this->menuItem7;
__mcTemp__2[6] = this->menuItem8;
__mcTemp__2[7] = this->menuItem9;
__mcTemp__2[8] = this->menuItem10;
__mcTemp__2[9] = this->menuItem11;
__mcTemp__2[10] = this->menuItem12;
this->menuItem1->MenuItems->AddRange(__mcTemp__2);
this->menuItem1->Shortcut = System::Windows::Forms::Shortcut::Alt0;
this->menuItem1->Text = S«OPERATIONS»;
//
// menuItem2
//
this->menuItem2->Index = 0;
this->menuItem2->Shortcut =System::Windows::Forms::Shortcut::AltF1;
this->menuItem2->Text = S«A*B»;
this->menuItem2->Click += new System::EventHandler(this,button1_Click);
//
// menuItem3
//
this->menuItem3->Index = 1;
this->menuItem3->Shortcut =System::Windows::Forms::Shortcut::AltF2;
this->menuItem3->Text = S«A+B»;
this->menuItem3->Click += new System::EventHandler(this,button2_Click);
//
// menuItem4
//
this->menuItem4->Index = 2;
this->menuItem4->Shortcut =System::Windows::Forms::Shortcut::AltF3;
this->menuItem4->Text = S«A-B»;
this->menuItem4->Click += new System::EventHandler(this,button3_Click);
//
// menuItem5
//
this->menuItem5->Index = 3;
this->menuItem5->Shortcut =System::Windows::Forms::Shortcut::AltF4;
this->menuItem5->Text = S«A*const»;
this->menuItem5->Click += new System::EventHandler(this, button4_Click);
//
// menuItem6
//
this->menuItem6->Index = 4;
this->menuItem6->Shortcut =System::Windows::Forms::Shortcut::AltF5;
this->menuItem6->Text = S«A/const»;
this->menuItem6->Click += new System::EventHandler(this,button5_Click);
//
// menuItem7
//
this->menuItem7->Index = 5;
this->menuItem7->Shortcut =System::Windows::Forms::Shortcut::AltF6;
this->menuItem7->Text = S«detA»;
this->menuItem7->Click += new System::EventHandler(this,button6_Click);
//
// menuItem8
//
this->menuItem8->Index = 6;
this->menuItem8->Shortcut =System::Windows::Forms::Shortcut::AltF7;
this->menuItem8->Text = S«A^-1»;
this->menuItem8->Click += new System::EventHandler(this,button7_Click);
//
// menuItem9
//
this->menuItem9->Index = 7;
this->menuItem9->Shortcut = System::Windows::Forms::Shortcut::AltF8;
this->menuItem9->Text = S«transpA»;
this->menuItem9->Click += new System::EventHandler(this,button8_Click);
//
// menuItem10
//
this->menuItem10->Index = 8;
this->menuItem10->Shortcut =System::Windows::Forms::Shortcut::AltF9;
this->menuItem10->Text = S"|| A ||";
this->menuItem10->Click += new System::EventHandler(this,button9_Click);
//
// menuItem11
//
this->menuItem11->Index = 9;
this->menuItem11->Shortcut =System::Windows::Forms::Shortcut::AltF10;
this->menuItem11->Text = S«traceA»;
this->menuItem11->Click += new System::EventHandler(this,button10_Click);
//
// button10
//
this->button10->BackColor = System::Drawing::Color::LightSkyBlue;
this->button10->Location = System::Drawing::Point(264, 136);
this->button10->Name = S«button10»;
this->button10->Size = System::Drawing::Size(48, 23);
this->button10->TabIndex = 21;
this->button10->Text = S«trace»;
this->button10->Click += new System::EventHandler(this,button10_Click);
//
// button11
//
this->button11->BackColor = System::Drawing::Color::LightSkyBlue;
this->button11->Location = System::Drawing::Point(344, 136);
this->button11->Name = S«button11»;
this->button11->Size = System::Drawing::Size(48, 23);
this->button11->TabIndex = 22;
this->button11->Text = S«cond»;
this->button11->Click += new System::EventHandler(this,button11_Click);
//
// menuItem12
//
this->menuItem12->Index = 10;
this->menuItem12->Shortcut =System::Windows::Forms::Shortcut::AltF11;
this->menuItem12->Text = S«condA»;
this->menuItem12->Click += new System::EventHandler(this,button11_Click);
//
// Form1
//
this->AutoScaleBaseSize = System::Drawing::Size(5, 13);
this->BackColor = System::Drawing::Color::SteelBlue;
this->ClientSize = System::Drawing::Size(520, 266);
this->Controls->Add(this->button11);
this->Controls->Add(this->button10);
this->Controls->Add(this->button9);
this->Controls->Add(this->button8);
this->Controls->Add(this->button7);
this->Controls->Add(this->button6);
this->Controls->Add(this->button5);
this->Controls->Add(this->button4);
this->Controls->Add(this->button3);
this->Controls->Add(this->button2);
this->Controls->Add(this->button1);
this->Controls->Add(this->textBox6);
this->Controls->Add(this->textBox5);
this->Controls->Add(this->textBox4);
this->Controls->Add(this->textBox3);
this->Controls->Add(this->textBox2);
this->Controls->Add(this->textBox1);
this->Controls->Add(this->label6);
this->Controls->Add(this->label5);
this->Controls->Add(this->label4);
this->Controls->Add(this->label3);
this->Controls->Add(this->label2);
this->Controls->Add(this->label1);
this->Cursor = System::Windows::Forms::Cursors::Hand;
this->Menu = this->mainMenu1;
this->Name = S«Form1»;
this->Text = S«MATRIX CALCULATOR»;
this->Load += new System::EventHandler(this, Form1_Load);
this->ResumeLayout(false);
}
private: System::Void Form1_Load(System::Object * sender,System::EventArgs * e)
{
}
private: System::Void textBox3_TextChanged(System::Object * sender,System::EventArgs * e){}
private: System::Void textBox6_TextChanged(System::Object * sender,System::EventArgs * e){}
private: System::Void button1_Click(System::Object * sender,System::EventArgs * e)
{
int i,j,l;
double **A,**B,**C,smm;
int n=Convert::ToInt32(textBox4->Text);
A = new double*[n];
B = new double*[n];
C = new double*[n];
for(i=0;i
{
A[i] = new double[n];
B[i] = new double[n];
C[i] = new double[n];
}
{
GET_ARRAY(textBox1->Text,A,n);
GET_ARRAY(textBox2->Text,B,n);
for(i=0;i
for(j=0;j
{
smm=0;
for(l=0;l
smm+=A[i][l]*B[l][j];
C[i][j]=smm;
}
textBox3->Text=CNV_ARRAY(C,n);
textBox3->Invalidate();
textBox3->Update();
}
}
private: System::Void button2_Click(System::Object * sender,System::EventArgs * e)
{
int i,j;
double **A,**B,**C;
int n=Convert::ToInt32(textBox4->Text);
A=new double *[n];
B=new double *[n];
C=new double *[n];
for(i=0;i
{
A[i]=new double[n];
B[i]=new double[n];
C[i]=new double[n];
}
GET_ARRAY(textBox1->Text,A,n);
GET_ARRAY(textBox2->Text,B,n);
for(i=0;i
for(j=0;j
{
C[i][j]=A[i][j]+B[i][j];
}
textBox3->Text=CNV_ARRAY(C,n);
textBox3->Invalidate();
textBox3->Update();
}
private: System::Void button3_Click(System::Object * sender,System::EventArgs * e)
{
int i,j;
double **A,**B,**C;
int n=Convert::ToInt32(textBox4->Text);
A=new double*[n];
B=new double*[n];
C=new double*[n];
for(i=0;i
{
A[i]=new double[n];
B[i]=new double[n];
C[i]=new double[n];
}
GET_ARRAY(textBox1->Text,A,n);
GET_ARRAY(textBox2->Text,B,n);
for(i=0;i
for(j=0;j
{
C[i][j]=A[i][j]-B[i][j];
}
textBox3->Text=CNV_ARRAY(C,n);
textBox3->Invalidate();
textBox3->Update();
}
private: System::Void button4_Click(System::Object * sender,System::EventArgs * e)
{
int i,j;
double **A,**C;
int n=Convert::ToInt32(textBox4->Text);
double cnst=Convert::ToDouble(textBox5->Text);
A=new double*[n];
C=new double*[n];
for(i=0;i
{
A[i]=new double[n];
C[i]=new double[n];
}
GET_ARRAY(textBox1->Text,A,n);
for(i=0;i
for(j=0;j
{
C[i][j]=cnst*A[i][j];
}
textBox3->Text=CNV_ARRAY(C,n);
textBox3->Invalidate();
textBox3->Update();
}
private: System::Void button5_Click(System::Object * sender,System::EventArgs * e)
{
int i,j;
double **A,**C,g;
int n=Convert::ToInt32(textBox4->Text);
double cnst=Convert::ToDouble(textBox5->Text);
A=new double*[n];
C=new double*[n];
for(i=0;i
{
A[i]=new double[n];
C[i]=new double[n];
}
GET_ARRAY(textBox1->Text,A,n);
for(i=0;i
for(j=0;j
{
g=1/cnst;
C[i][j]=g*A[i][j];
}
textBox3->Text=CNV_ARRAY(C,n);
textBox3->Invalidate();
textBox3->Update();
}
private: System::Void button6_Click(System::Object * sender,System::EventArgs * e)
{
int i;
double **A,d;
int n=Convert::ToInt32(textBox4->Text);
A=new double*[n];
for(i=0;i
{
A[i]=new double[n];
}
GET_ARRAY(textBox1->Text,A,n);
d=DET(A,n);
textBox6->Text=Convert::ToString(d);
textBox6->Invalidate();
textBox6->Update();
}
private: System::Void button8_Click(System::Object * sender,System::EventArgs * e)
{
int i;
double **A,**C;
int n=Convert::ToInt32(textBox4->Text);
A=new double*[n];
C=new double*[n];
for(i=0;i
{
A[i]=new double[n];
C[i]=new double[n];
}
GET_ARRAY(textBox1->Text,A,n);
TRANSP_ARRAY(A,n);
textBox3->Text=CNV_ARRAY(A,n);
textBox3->Invalidate();
textBox3->Update();
}
private: System::Void button9_Click(System::Object * sender,System::EventArgs * e)
{
int i,j;
double **A,sum=0;
int n=Convert::ToInt32(textBox4->Text);
A=new double*[n];
for(i=0;i
{
A[i]=new double[n];
}
GET_ARRAY(textBox1->Text,A,n);
for(i=0;i
{
for(j=0;j
{
sum+=System::Math::Abs(A[i][j]);
}
}
textBox6->Text=Convert::ToString(sum);
textBox6->Invalidate();
textBox6->Update();
}
private: System::Void button7_Click(System::Object * sender,System::EventArgs * e)
{
int i,j;
double **A,**C,a,as,ad,d,h;
int n=Convert::ToInt32(textBox4->Text);
A=new double*[n];
C=new double*[n];
for(i=0;i
{
A[i]=new double[n];
C[i]=new double[n];
}
GET_ARRAY(textBox1->Text,A,n);
d=DET(A,n);
for(i=0;i
for(j=0;j
{
h=1/d;
a=A[i][j];
ad=ALG_DOP(A,n,i,j);
as=a*ad;
C[i][j]=h*as;
}
TRANSP_ARRAY(C,n);
textBox3->Text=CNV_ARRAY(C,n);
textBox3->Invalidate();
textBox3->Update();
}
private: System::Void button10_Click(System::Object * sender,System::EventArgs * e)
{
int i;
double **A,tr;
int n=Convert::ToInt32(textBox4->Text);
A=new double*[n];
for(i=0;i
{
A[i]=new double[n];
}
GET_ARRAY(textBox1->Text,A,n);
tr=TRACE(A,n);
textBox6->Text=Convert::ToString(tr);
textBox6->Invalidate();
textBox6->Update();
}
private: System::Void button11_Click(System::Object * sender,System::EventArgs * e)
{
int i,j;
double **A,**C,a,as,ad,d,h;
int n=Convert::ToInt32(textBox4->Text);
A=new double*[n];
C=new double*[n];
for(i=0;i
{
A[i]=new double[n];
C[i]=new double[n];
}
GET_ARRAY(textBox1->Text,A,n);
d=DET(A,n);
if(d!=0)
{
for(i=0;i
for(j=0;j
{
h=1/d;
a=A[i][j];
ad=ALG_DOP(A,n,i,j);
as=a*ad;
C[i][j]=h*as;
}
}
TRANSP_ARRAY(C,n);
double sum=0,mus=0,S=0;
for(i=0;i
{
for(j=0;j
{
sum+=System::Math::Abs(A[i][j]);
mus+=System::Math::Abs(C[i][j]);
}
}
S=sum*mus;
textBox6->Text=Convert::ToString(S);
textBox6->Invalidate();
textBox6->Update();
}
};
}

Висновок
 
Розроблена програмаможе бути використана для виконання основних арифметичних операцій над матрицями,а також для обчислення визначника, норми та сліду матриці.
Програмарозроблена на платформі Microsoft .NET Framewoks (MC++), обговорення й використання якої сталомало не найпомітнішим явищем останніх років в області маркетингу засобіврозробки програмного забезпечення. Окрім того, внутрішні механізми. NET забезпечують такі розв’язання, якпідтримка компонентного програмування засобами мови C#, сумісність компонентів, розробленихна різних мовах програмування, побудова стійкого та безпечного коду,організація взаємодії некерованого та керованого кодів тощо.
Подана програмаможе стати у пригоді студентам для перевірки обчислень у розрахункових роботах.

Використаналітература
 
1.        “Лінійнаалгебра” Ільїн В.І., Позняк Е.Г.
2.        “Матричний аналіз” Хорн Р., Джонсон Ч.
3.        “Microsoft .Net в подлиннике” Дубцев О.В.
4.        Microsoft .Net Framework SDK v1.1 Documentation.
5.        MicrosoftVisual Studio .Net 2003 Documentation.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.