Главная Обратная связь

Дисциплины:






Класс транспонирования матрицы (AT.cs)



using System;

 

namespace Матрица_1_0

{

class AT

{

public void ATR(int ind, Cache ch)

{

int a=0, b=0;

double[,] matr=new double[a,b];

if (ind == 1)

{

a = ch.c;

b = ch.d;

matr = ch.matr1;

}

if (ind==2)

{

a = ch.e;

b = ch.f;

matr = ch.matr2;

}

if (ind == 3)

{

a = ch.g;

b = ch.h;

matr = ch.res;

}

double[,] res = new double[b, a];

for (int i = 0; i < a; i++)

{

for (int j = 0; j < b; j++)

{

res[j,i] = matr[i, j];

}

}

ch.g = b;

ch.h = a;

ch.res = res;

}

}

}

Класс умножения матрицы на число k (Axk.cs)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Матрица_1_0

{

class Axk

{

public void Axk2(int ind, double k, Cache ch)

{

int a = 0, b = 0;

double[,] matr = new double[a, b];

if (ind == 1)

{

a = ch.c;

b = ch.d;

matr=ch.matr1;

}

if (ind == 2)

{

a = ch.e;

b = ch.f;

matr = ch.matr2;

}

if (ind == 3)

{

a = ch.g;

b = ch.h;

matr = ch.res;

ch.res = null;

}

double[,] res = new double[a, b];

for (int i = 0; i < a; i++)

{

for (int j = 0; j < b; j++)

{

res[i, j] = Math.Round( matr[i, j]*k, 3);

}

}

ch.g = a;

ch.h = b;

ch.res = res;

}

}

}

Класс получения канонического вида и ранга матрицы (Kan.cs)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Матрица_1_0

{

class Kan

{

public void KV(int ind, Cache ch)

{

int a=0,b=0,n=0;

int uchet = 0;

double[,] matr=new double[a,b];

if (ind==1)

{

a=ch.c;

b=ch.d;

matr=ch.matr1;

}

if (ind == 2)

{

a=ch.e;

b=ch.f;

matr=ch.matr2;

}

q:

if (n < a && n < b)

{

double del = matr[n, n];

if (del != 0)

{

double[] str = new double[b - n];

double umn = 0;

for (int i = n; i < b; i++)

{

matr[n, i] = matr[n, i] / del;

str[i - n] = matr[n, i];

}

for (int i = n + 1; i < a; i++)

{

umn = matr[i, n];

for (int j = n; j < b; j++)

{

matr[i, j] = matr[i, j] - str[j - n] * umn;

}

}

for (int i = n + 1; i < b; i++)

{

matr[n, i] = 0;

}

for (int i = n; i < a; i++)

{

for (int j = n; j < b; j++)

{

if (i == n || j == n)

{

if (matr[i, j] == 0)

{

uchet++;

}

}

}

}

}

}

if (uchet == ((a + b) - 2)-2*n && uchet!=0)

{

uchet=0;

n++;

goto q;

}

else

{

ch.g = a;

ch.h = b;

ch.res = matr;

}

 

}

public int Rang(int ind, Cache ch)

{

KV(ind, ch);



int rang = 0;

int n = ch.g;

int m = ch.h;

q:

int vrem = 0;

for (int i = 0; i < n; i++)

{

for (int j = 0; j < m; j++)

{

if (i == n - 1 && ch.res[i,j]==0)

{

vrem++;

}

}

}

if (vrem == m)

{

n--;

goto q;

}

else

{

rang = n;

}

return rang;

}

}

}

Класс чтения матриц из файла (Re.cs)

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using System.Windows;

using Microsoft.Win32;

 

namespace Матрица_1_0

{

class RE

{

public int a = 0, b;

public void Read(int ind, Cache ch)

{

Encoding en = Encoding.GetEncoding(1251);

char[] ca = { ' ', ','};

string[] strarray;

string strline;

List<string> mas = new List<string>();

Stream myStream = null;

OpenFileDialog openFileDialog1 = new OpenFileDialog();

 

openFileDialog1.InitialDirectory = "c:\\";

openFileDialog1.Filter = "matr files (*.matr)|*.matr|All files (*.*)|*.*";

openFileDialog1.FilterIndex = 1;

openFileDialog1.RestoreDirectory = true;

int vrem = 0;

if (openFileDialog1.ShowDialog() != null)

{

try

{

if ((myStream = openFileDialog1.OpenFile()) != null)

{

using (myStream)

{

StreamReader sr = new StreamReader(myStream, en);

strline = sr.ReadLine();

int k = 0;

while (strline != null)

{

strarray = strline.Split(ca);

b = strarray.Length;

mas.Add(strline);

strline = sr.ReadLine();

if (k == 0)

{

vrem = b;

if (vrem < 3)

{

string[] strarray2 = mas[0].Split(ca);

ch.name = strarray2[0];

ch.fam = strarray2[1];

a--;

k++;

}

else

{

ch.name = "Автор";

ch.fam = "отсутствует";

k++;

}

}

a++;

}

}

myStream.Close();

}

}

catch

{

MessageBox.Show("Ошибка! Вы не выбрали файл.");

}

}

int l = 0;

double[,] matr = new double[a, b];

for (int i = 0; i < a+l; i++)

{

if (vrem < 3&&l==0)

{

i = 1;

l++;

}

strarray = (mas[i].Split(ca));

for (int j = 0; j < b; j++)

{

if (vrem < 3)

{

matr[i - 1, j] = Convert.ToDouble(strarray[j]);

}

else

{

matr[i, j] = Convert.ToDouble(strarray[j]);

}

}

}

if (ind == 1)

{

ch.c = a;

ch.d = b;

ch.matr1 = matr;

}

if (ind == 2)

{

ch.e = a;

ch.f = b;

ch.matr2 = matr;

}

}

}

}





sdamzavas.net - 2018 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...