Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Все лабораторные работы / Всё стасовское новое / prog / laba6M
.h#include <iostream.h>
#include <conio.h>
#include <math.h>
class Matrix
{
public:
int w, h;
double element [3][3];
Matrix (void) {w = 0; h = 0;}
Matrix (int y, int x)
{
w = x; h = y;
for (int i = 0; i < y; i++)
for (int j = 0; j < x; j++)
element[i][j] = 0;
}
double Determenant (void)
{
if (h != w) return 0;
if (h == 1) return element[0][0];
if (h == 2) return element[0][0]*element[1][1] - element[0][1]*element[1][0];
if (h == 3) return element[0][0]*element[1][1]*element[2][2] - element[0][0]*element[1][2]*element[2][1] - element[0][1]*element[1][0]*element[2][2] -
element[0][2]*element[1][1]*element[2][0] + element[1][0]*element[2][1]*element[0][2] + element[0][1]*element[1][2]*element[2][0];
return 0;
}
void PrintMatrix (void)
{
for (int i = 0; i < h; i++)
{
for (int j = 0; j < w; j++)
cout<<element[i][j];
cout<<endl;
}
}
Matrix Inverse (void)
{
double d = 1 / this->Determenant ();
if (h != w) return *this;
Matrix m (h, w);
if (h == 1) element[0][0] = 1 / element[0][0];
if (h == 2)
{
m.element[0][0] = this->element[1][1]*d;
m.element[0][1] = - this->element[0][1]*d;
m.element[1][0] = - this->element[1][0]*d;
m.element[1][1] = this->element[0][0]*d;
}
return m;
}
Matrix operator * (Matrix X)
{
Matrix res (2, 1);
res.element[0][0] = element[0][0]*X.element[0][0] + element[0][1]*X.element[1][0];
res.element[1][0] = element[1][0]*X.element[0][0] + element[1][1]*X.element[1][0];
return res;
}
Matrix operator * (double a)
{
Matrix res (h, w);
for (int i = 0; i < h; i++)
for (int j = 0; j < w; j++)
res.element[i][j] = element[i][j] * a;
return res;
}
Matrix operator + (Matrix X)
{
Matrix res (h, w);
for (int i = 0; i < h; i++)
for (int j = 0; j < w; j++)
res.element[i][j] = element[i][j] + X.element[i][j];
return res;
}
// for vectors only
double Module (void)
{
double res = 0;
for (int i = 0; i < h; i++)
res += element[i][0] * element[i][0];
return sqrt (res);
}
};