ВУЗ:
Составители:
Рубрика:
92
det += temp.Determinant() * a[0,j];
else
det -= temp.Determinant() * a[0,j];
}
return det;
}
// метод получения обратной матрицы
public static QMatrix operator ~(QMatrix m)
{
int rows = m.Rows;
QMatrix res= new QMatrix(rows);
// вычисление определителя матрицы
double det = m.Determinant();
// если матрица вырожденная,
// обратной матрицы не существует
if(det == 0)
throw new Exception("Матрица вырожденная");
// вычисление транспонированной матрицы
// алгебраических дополнений
QMatrix temp = new QMatrix(rows - 1);
int z;
for(int i = 0; i < rows; i++)
{
z = i%2==0 ? 1 : -1;
for(int j = 0; j < rows; j++)
{
temp = m.SubMatrix(i, j);
res[j,i] = z * temp.Determinant() / det;
z = -z;
}
}
return res;
}
}
В новых методах используются элементы базового класса – сама
матрица (поле a), свойство Rows и индексатор доступа к элементам
матрицы.
Продемонстрируем использование новых методов класса:
static void Main(string[] args)
{
try
{
QMatrix x, y, z;
x = new QMatrix(2);
x.InputMatrix();
x.OutputMatrix();
// вычисление определителя квадратной матрицы
Console.WriteLine("Определитель: " +
det += temp.Determinant() * a[0,j];
else
det -= temp.Determinant() * a[0,j];
}
return det;
}
// метод получения обратной матрицы
public static QMatrix operator ~(QMatrix m)
{
int rows = m.Rows;
QMatrix res= new QMatrix(rows);
// вычисление определителя матрицы
double det = m.Determinant();
// если матрица вырожденная,
// обратной матрицы не существует
if(det == 0)
throw new Exception("Матрица вырожденная");
// вычисление транспонированной матрицы
// алгебраических дополнений
QMatrix temp = new QMatrix(rows - 1);
int z;
for(int i = 0; i < rows; i++)
{
z = i%2==0 ? 1 : -1;
for(int j = 0; j < rows; j++)
{
temp = m.SubMatrix(i, j);
res[j,i] = z * temp.Determinant() / det;
z = -z;
}
}
return res;
}
}
В новых методах используются элементы базового класса – сама
матрица (поле a), свойство Rows и индексатор доступа к элементам
матрицы.
Продемонстрируем использование новых методов класса:
static void Main(string[] args)
{
try
{
QMatrix x, y, z;
x = new QMatrix(2);
x.InputMatrix();
x.OutputMatrix();
// вычисление определителя квадратной матрицы
Console.WriteLine("Определитель: " +
92
Страницы
- « первая
- ‹ предыдущая
- …
- 90
- 91
- 92
- 93
- 94
- …
- следующая ›
- последняя »
