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

Демонстрування можливостей використання калькулятора для матриць. Розробка програми, яка може бути використана для виконання основних арифметичних операцій над матрицями та для перевірки обчислень у розрахункових роботах. Алгоритм створення програми.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 12.12.2009
Размер файла 43,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

42

Міністерство освіти та науки України

Одеський національний політехнічний університет

Кафедра прикладної математики

Курсова робота

з дисципліни: «Програмування»

тема: «Калькулятор для матриць»

Одеса - 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 , у вікні зліва обираємо папку Header Files і файл Form1.h, з'являється вікно форми, де з клавіатури вводять розмірність матриці, елементи матриць, над якими необхідно виконати відповідні дії, далі можемо або натиснути кнопку безпосередньо у вікні форми або в меню Operations обрати відповідний пункт меню, чи за допомогою комбінації так званих „гарячих клавіш”. Кінцевий результат виводиться у текстовому вікні.

Запуск програми на виконання здійснюємо за допомогою комбінації клавіш Ctrl + F5.

Програма використовує ряд функцій :

void GET_ARRAY(String *text,double **X,int n)

за допомогою даної функції отримуємо масиви - поки симол не є розширеним символьним типом і не є переходом на нову строку, нарощуємо лічильник; далі виділяємо у строці підстроку і перетворюємо її на дійсне число подвійної точності (тип double).

double DET(double **X,int n)

- ця функція обчислює визначник матриці.

Функція double DET(double **X,int n)

повертає алгебраїчні доповнення елементів масива.

void TRANSP_ARRAY(double **X,int n)

- транспонує елементи двомірного масива:

перший елемент залишає на своєму місці, а далі іде по рядках, переставляючи елементи рядків і стовпців місцями.

double TRACE(double **X,int n)

- повертає значення сліду матриці.

Функція працює таким чином:

Крокуючи елементами матриці, перевіряє: якщо індекс рядка та стовпця співпадають (це елементи головної діагоналі), присвоюємо значення першого елемента головної діагоналі деякій змінній, на наступному кроці, якщо елемент задовольняє вище названій умові, додаємо до сталої наступний елемент головної діагоналі і так далі (поки індекс не буде дорівнювати порядку матриці) .

Функція String* CNV_ARRAY(double **X,int n) необхідна для того, щоб після виконання дій (операцій) над матрицями отриманий результат перетворити на строку. Повертає строку .

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>

/// Summary for Form1

///

/// WARNING: If you change the name of this class, you will need to change 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.

/// </summary>

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<n-1;i++)

T[i]=new double[n-1];

for(l=0;l<n;l++)

{

for(j=0;j<l;j++)

for(i=0;i<n-1;i++)

T[i][j]=X[i+1][j];

for(j=l+1;j<n;j++)

for(i=0;i<n-1;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<n-1;i++)

T[i]=new double[n-1];

for(i=0;i<r;i++)

{

for(j=0;j<c;j++)

T[i][j]=X[i][j];

for(j=c+1;j<n;j++)

T[i][j-1]=X[i][j];

}

for(i=r+1;i<n;i++)

{

for(j=0;j<c;j++)

T[i-1][j]=X[i][j];

for(j=c+1;j<n;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<n;i++)

{

for(j=0;j<n;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<n;i++)

{

for(j=0;j<n;j++)

{

while(((p+k)<text->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<n-1;i++)

for(j=i+1;j<n;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<n;i++)

for(j=0;j<n;j++)

{

if(i==j)

tt+=X[i][j];

}

return tt;

}

////////////////////////////////////////////////////

/// <summary>

/// Required designer variable.

/// </summary>

System::ComponentModel::Container * components;

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

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[] = new System::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[] = new System::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<n;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<n;i++)

for(j=0;j<n;j++)

{

smm=0;

for(l=0;l<n;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<n;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<n;i++)

for(j=0;j<n;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<n;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<n;i++)

for(j=0;j<n;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<n;i++)

{

A[i]=new double[n];

C[i]=new double[n];

}

GET_ARRAY(textBox1->Text,A,n);

for(i=0;i<n;i++)

for(j=0;j<n;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<n;i++)

{

A[i]=new double[n];

C[i]=new double[n];

}

GET_ARRAY(textBox1->Text,A,n);

for(i=0;i<n;i++)

for(j=0;j<n;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<n;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<n;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<n;i++)

{

A[i]=new double[n];

}

GET_ARRAY(textBox1->Text,A,n);

for(i=0;i<n;i++)

{

for(j=0;j<n;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<n;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<n;i++)

for(j=0;j<n;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<n;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<n;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<n;i++)

for(j=0;j<n;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<n;i++)

{

for(j=0;j<n;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. Microsoft Visual Studio .Net 2003 Documentation.


Подобные документы

  • Розробка програми автоматизації роботи з матрицями. Оформлення даних у вигляді матриць цілих чисел. Перелік операцій над матрицями, які реалізуються у програмі. Програмне забезпечення, мови програмування. Опис логічної структури та алгоритм програми.

    курсовая работа [312,2 K], добавлен 01.04.2016

  • Автоматизація виконання операцій на робочих місцях. Розробка програми "Арифметичний калькулятор", що буде дозволяти обраховувати різноманітні арифметичні операцій (додавання, віднімання, ділення, множення). Тестування програми і результати її виконання.

    курсовая работа [226,1 K], добавлен 05.05.2014

  • Розробка програми калькулятора, що може виконувати найголовніші арифметичні операції над двома числами. Вимоги до апаратного і програмного забезпечення. Опис форм та компонентів програми. Розробка алгоритмів програмного забезпечення. Опис коду програми.

    курсовая работа [57,1 K], добавлен 31.05.2013

  • Створення програми для перегляду потрібної інформації, яка може бути використана будь яким користувачем ЕОМ. Користування та розуміння переглядачів текстових файлів. Використання читання тексту порціями для реалізації прокрутки екрану вверх та вниз.

    курсовая работа [16,7 K], добавлен 12.08.2009

  • Діаграма діяльності програми. Алгоритм програми "калькулятор". Побудова діаграм UML. Статична діаграма класів. Основні операції при обчисленні десяткового логарифму. Приклад калькулятора, що перемножує числа. Структури та типи діаграм, їх значення.

    дипломная работа [241,4 K], добавлен 21.09.2010

  • Спосіби розв'язання трудомістких обчислювальних завдань з використанням двох і більше комп'ютерів, об'єднаних в мережу. Розробка програмної реалізації восьми процесорної паралельної системи зі розподіленою пам’яттю, яка виконує множення двох матриць.

    курсовая работа [747,6 K], добавлен 23.01.2014

  • Операція алгебраїчного додавання, множення, ділення. Алгоритм ділення модулів чисел. Поняття граф-схеми алгоритму та правила її складання. Основні поняття теорії цифрових автоматів. Синтез керуючого автомата. Контроль виконання арифметичних операцій.

    реферат [55,4 K], добавлен 24.03.2009

  • Алгоритмічна мова програмування універсального призначення Turbo Pascal. Розробка і створення програми для гри "Шибениця". Алгоритм функціонування программи, блок-схема алгоритму. Використання додаткових модулів Graph та Crt у процессі створення програми.

    курсовая работа [2,0 M], добавлен 23.06.2010

  • Мова Асемблера, її можливості та команди. Розробка алгоритму програми, його реалізація в програмі на мові Асемблера. Введення елементів матриці та обчислення cуми елементів, у яких молодший біт дорівнює нулю. Методи створення програми роботи з матрицями.

    контрольная работа [50,3 K], добавлен 12.08.2012

  • Функції комп'ютерної програми-органайзера, пов'язані із забезпеченням роботи календаря, записної книжки, менеджера контактів (адресно-телефонної книги), годинника, калькулятора. Програмна модель, розробка інтерфейсу і тестування програми, інсталяція.

    курсовая работа [932,8 K], добавлен 03.06.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.