ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
}
return det;
}
// метод вычисления обратной матрицы
template <class T> Matrix<T> Matrix<T>::operator ~()
{
if(m != n)
throw NonSquareMatrixException();
Matrix<T> res(n, n);
T det = Determinant();
if(det == 0.0)
throw ZeroDevideException();
Matrix<T> temp(n - 1, n - 1);
int z;
for(int i = 0; i < n; i++)
{
z = i%2==0 ? 1 : -1;
for(int j = 0; j < n; j++)
{
temp = SubMatrix(i, j);
res[j][i] = z * temp.Determinant() / det;
z = -z;
}
}
return res;
}
// конструктор класса Slau с заданным количеством
// уравнений m1 и неизвестных n1
template <class T>
Slau<T>::Slau(int m1, int n1): a(m1, n1),b(1, m1),x(1, n1)
{
m = m1;
n = n1;
reoder = new int [n];
for(int i = 0; i < n; i++)
reoder[i] = i;
}
// шаблон дружественного оператора ввода СЛАУ
template <class T>
istream& operator >>(istream& in, Slau<T>& ob)
{
cout << "Матрица коэффициентов: ";
in >> ob.a;
cout << "Вектор свободных членов: ";
in >> ob.b;
221
Объектно-ориентированное программирование на С++ } return det; } // метод вычисления обратной матрицы templateMatrix Matrix ::operator ~() { if(m != n) throw NonSquareMatrixException(); Matrix res(n, n); T det = Determinant(); if(det == 0.0) throw ZeroDevideException(); Matrix temp(n - 1, n - 1); int z; for(int i = 0; i < n; i++) { z = i%2==0 ? 1 : -1; for(int j = 0; j < n; j++) { temp = SubMatrix(i, j); res[j][i] = z * temp.Determinant() / det; z = -z; } } return res; } // конструктор класса Slau с заданным количеством // уравнений m1 и неизвестных n1 template Slau ::Slau(int m1, int n1): a(m1, n1),b(1, m1),x(1, n1) { m = m1; n = n1; reoder = new int [n]; for(int i = 0; i < n; i++) reoder[i] = i; } // шаблон дружественного оператора ввода СЛАУ template istream& operator >>(istream& in, Slau & ob) { cout << "Матрица коэффициентов: "; in >> ob.a; cout << "Вектор свободных членов: "; in >> ob.b; 221
Страницы
- « первая
- ‹ предыдущая
- …
- 219
- 220
- 221
- 222
- 223
- …
- следующая ›
- последняя »