- •Введение.
- •Условие задания
- •Текст программы
- •Класс обработчиков главного окна (MainWindow.Xaml.Cs)
- •Класс транспонирования матрицы (at.Cs)
- •Класс умножения матрицы на число k (Axk.Cs)
- •Класс получения канонического вида и ранга матрицы (Kan.Cs)
- •Класс чтения матриц из файла (Re.Cs)
- •Класс записи результатов вычислений в файл (wr.Cs)
- •Класс произведения матриц (Umn.Cs)
- •Класс сложения матриц (Plus.Cs)
- •Класс проверки входа в программу (Parol.Cs)
- •Класс получения определителя матрицы (Opr.Cs)
- •Класс получения разности матрицы (Minus.Cs)
- •Класс получения минора матрицы (Mab.Cs)
- •Класс копирования результата в матрицу (Copir.Cs)
- •Класс хранения матричных данных (Cache.Cs)
- •Описание кода программы
- •Класс обработчиков главного окна (MainWindow.Xaml.Cs)
- •Класс транспонирования матрицы (at.Cs)
- •Класс умножения матрицы на число k (Axk.Cs)
- •Класс получения канонического вида и ранга матрицы (Kan.Cs)
- •Класс чтения матриц из файла (Re.Cs)
- •Класс записи результатов вычислений в файл (wr.Cs)
- •Класс произведения матриц (Umn.Cs)
- •Класс сложения матриц (Plus.Cs)
- •Класс проверки входа в программу (Parol.Cs)
- •Класс получения определителя матрицы (Opr.Cs)
- •Класс получения разности матрицы (Minus.Cs)
- •Класс получения минора матрицы (Mab.Cs)
- •Главное окно (рис. 4)
- •Результаты работы программы
- •Заключение
- •Список литературы
Класс получения разности матрицы (Minus.Cs)
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
namespace Матрица_1_0
{
class Minus
{
public void Min(Cache ch)
{
if (ch.c == ch.e)
{
if (ch.d == ch.f)
{
ch.g = ch.e;
ch.h = ch.f;
double[,] matr = new double[ch.g, ch.f];
for (int i = 0; i < ch.c; i++)
{
for (int j = 0; j < ch.d; j++)
{
matr[i, j] = (ch.matr1[i, j] - ch.matr2[i, j]);
}
}
ch.res = matr;
}
else
{
MessageBox.Show("Ошибка! Количество столбцов в матрицах не совпадает.");
}
}
else
{
MessageBox.Show("Ошибка! Количество строк в матрицах не совпадает.");
}
}
}
Класс получения минора матрицы (Mab.Cs)
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
namespace Матрица_1_0
{
class Mab
{
public double Min(int ind, int a, int b, Cache ch)
{
double min = 0;
if (ind == 1)
{
double[,] vrem1 = new double[ch.c - 1, ch.d];
double[,] vrem2 = new double[ch.c - 1, ch.d-1];
if (a < ch.c && b < ch.d)
{
ch.g = ch.c-1;
ch.h = ch.d-1;
for (int i = 0; i < ch.c; i++)
{
for (int j = 0; j < ch.d; j++)
{
if (i<a)
{
vrem1[i,j]=ch.matr1[i,j];
}
if(i>a)
{
vrem1[i-1,j]=ch.matr1[i,j];
}
}
}
for (int i = 0; i < ch.c-1; i++)
{
for (int j = 0; j < ch.d; j++)
{
if (j < b)
{
vrem2[i, j] = vrem1[i, j];
}
if (j > b)
{
vrem2[i, j - 1] = vrem1[i, j];
}
}
}
ch.res = vrem2;
int z = 0;
int y = 0;
z = Math.DivRem((a+b), 2, out y);
Opr delta = new Opr();
if (y == 0)
{
min = delta.DetGauss(3, ch);
}
else
{
min = delta.DetGauss(3, ch)*(-1);
}
}
else
{
MessageBox.Show("Вы ввели число большее чем размер матрицы!");
}
}
if (ind == 2)
{
double[,] vrem1 = new double[ch.e - 1, ch.f];
double[,] vrem2 = new double[ch.e - 1, ch.f - 1];
if (a < ch.e || b < ch.f)
{
ch.g = ch.e - 1;
ch.h = ch.f - 1;
for (int i = 0; i < ch.e; i++)
{
for (int j = 0; j < ch.f; j++)
{
if (i < a)
{
vrem1[i, j] = ch.matr2[i, j];
}
if (i > a)
{
vrem1[i - 1, j] = ch.matr2[i, j];
}
}
}
for (int i = 0; i < ch.e - 1; i++)
{
for (int j = 0; j < ch.f; j++)
{
if (j < b)
{
vrem2[i, j] = vrem1[i, j];
}
if (j > b)
{
vrem2[i, j - 1] = vrem1[i, j];
}
}
}
ch.res = vrem2;
int z = 0;
int y = 0;
z = Math.DivRem((a + b), 2, out y);
Opr delta = new Opr();
if (y == 0)
{
min = delta.DetGauss(3, ch);
}
else
{
min = delta.DetGauss(3, ch) * (-1);
}
}
else
{
MessageBox.Show("Вы ввели число большее чем размер матрицы!");
}
}
return min;
}
}
}