Скачиваний:
13
Добавлен:
01.05.2014
Размер:
2.14 Кб
Скачать
#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);
	}

};
Соседние файлы в папке prog