Отчет защищен с оценкой (отлично, хорошо, удовлетворительно)



Download 13,81 Mb.
bet15/20
Sana20.07.2022
Hajmi13,81 Mb.
#828539
TuriОтчет
1   ...   12   13   14   15   16   17   18   19   20
Bog'liq
Юлдашев Анвар TM 2003R Отчёт о квалификационной практике

Задача 10. Вычислить определитель матрицы по формуле

где k, – скалярные величины; А – квадратная матрица, порядка которые задаются.
Блок схема имеет вид:

Рис. 69 Блок схема вычисления определителя матрицы D.

Ниже приводится текст программы с результатами расчетов:


static void FindAlgDop(double[,] A, int size, double[,] B)
{
int i, j;

// нахожу определитель матрицы A


double det = FindDeterminant(A, size);

if (det > 0) // это для знака алгебраического дополнения


det = -1;
else
det = 1;
double[,] minor = new double[size - 1, size - 1];

for (j = 0; j < size; j++)


{
for (i = 0; i < size; i++)
{
// получаю алгебраическое дополнение
GetMinor(A, minor, j, i, size);
if ((i + j) % 2 == 0)
B[j, i] = -det * FindDeterminant(minor, size - 1);
else
B[j, i] = det * FindDeterminant(minor, size - 1);
}
}
}

static double GetMinor(double[,] A, double[,] B, int x, int y, int size)


{
int xCount = 0, yCount = 0;
int i, j;
for (i = 0; i < size; i++)
{
if (i != x)
{
yCount = 0;
for (j = 0; j < size; j++)
{
if (j != y)
{
B[xCount, yCount] = A[i, j];
yCount++;
}
}
xCount++;
}
}
return 0;
}

static double FindDeterminant(double[,] A, int size)


{
// останавливаю рекурсию, если матрица
// состоит из одного элемента
if (size == 1)
{
return A[0, 0];
}
else
{
double det = 0;
int i;
double[,] Minor = new double[size - 1, size - 1];
for (i = 0; i < size; i++)
{
GetMinor(A, Minor, 0, i, size);
// Рекурсия
det += (int)Math.Pow(-1, i) * A[0, i] * FindDeterminant(Minor, size - 1);
}
return det;
}
}
static void Transpose_Matrix(int n, double[,] a)// метод, который транспонирует матрицу.
{
double tmp;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < i; j++)
{
tmp = a[i, j];
a[i, j] = a[j, i];
a[j, i] = tmp;
}
}
}
static void Main(string[] args)
{
int i, j;
Console.Write("Введите k: ");
double k = double.Parse(Console.ReadLine());
Console.Write("Введите l: ");
double l = double.Parse(Console.ReadLine());
Console.Write("Введите размерность матриц: ");
int N = int.Parse(Console.ReadLine());
double[,] A = new double[N,N];
double[,] B = new double[N,N];

Console.WriteLine("Введите элементы матрицы A: ");


for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
A[i, j] = double.Parse(Console.ReadLine());
}
}
Console.WriteLine("Матрица A: ");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
Console.Write("{0}\t ", A[i, j]);
}
Console.WriteLine();
}
FindAlgDop(A, N, B); //Матрица алгебраических дополнений записывается в B
Transpose_Matrix(N, B);
double[,] inv = new double[N, N];
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
inv[i, j] = B[i, j] / FindDeterminant(A, N);
}
Console.WriteLine();
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
inv[i, j] = inv[i, j] * k;// Умножение на скаляр A^(-1)*k
}
}
Console.WriteLine("Обратная матрица A, умноженная на скаляр: ");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
Console.Write("{0}\t ", inv[i, j]);
}
Console.WriteLine();
}
double[,] E = new double[N,N];
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
if (i==j)
{
E[i, j] = 1;
}
else
{
E[i, j] = 0;
}
}
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
E[i, j] = l * E[i, j]; // Умножение на скаляр l*E
}
}
Console.WriteLine("Еденичная матрица, умноженная на скаляр: ");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
Console.Write("{0}\t ", E[i, j]);
}
Console.WriteLine();
}
double[,] D = new double[N, N];
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
D[i, j] = A[i, j] + inv[i, j] + E[i, j];
}
}
Console.WriteLine();
Console.WriteLine("Матрица D: ");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
Console.Write("{0}\t ", D[i, j]);
}
Console.WriteLine();
}
Console.WriteLine();
Console.Write("Определитель матрицы D: ");
double det = FindDeterminant(D, N);
Console.WriteLine(det);
Console.ReadKey();
}
Инструкция по работе с кодом программы была написана для запуска в Microsoft Visual Studio.
Для начала компиляции кода программы, необходимо нажать на кнопку Start на панели инструментов Microsoft Visual Studio или кнопку F5 на клавиатуре. В случае, если при компиляции не были обнаружены синтаксические или прочие ошибки, код успешно компилируется и выводится программа в окне консоли (черное окно вывода).
Для вычисления исходных величин, необходимо, ввести скаляры k и l размерность матрицы А, а также ее элементы:
"Введите k: "
2 Enter;
"Введите l: "
3 Enter;
"Введите размерность матриц: "
2 Enter;
"Введите элементы матрицы A: "
1 Enter;
2 Enter;
3 Enter;
4 Enter;
"Матрица A: "
1 2
3 4
"Обратная матрица A, умноженная на скаляр: "
4 -2
-3 1
"Еденичная матрица, умноженная на скаляр: "
3 0
0 3
"Матрица D: "
8 0
0 8
Далее, программа производит вычисления, переводя соответствующие значения в методы, и вывод искомый результат в окно консоли:
"Определитель матрицы D: 64"



Рис. 70 Результат работы программы по вычислению определителя матрицы D.


Download 13,81 Mb.

Do'stlaringiz bilan baham:
1   ...   12   13   14   15   16   17   18   19   20




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish