List <int> GetCoefficient(MatrixOp matrix) { int count = 0; List <int> myCoefficient = new List <int>(); for (int i = 0; i < matrix.Row; i++) { for (int j = 0; j < matrix.Col; j++) { if (matrix[i, j] > 0) { count++; } } myCoefficient.Add(count); count = 0; } return(myCoefficient); }
/// <summary> /// Умножение текущей матрицы с матрицей А /// </summary> /// <param name="matrix">Матрица А</param> public void Multyply(MatrixOp matrix) { if (!Col.Equals(matrix.Row)) { throw new Exception("Матрицы нельзя перемножить"); } int[,] _result = new int[Row, matrix.Col]; for (int i = 0; i < Row; i++) { for (int j = 0; j < matrix.Col; j++) { for (int k = 0; k < matrix.Row; k++) { _result[i, j] += this[i, k] * matrix[k, j]; } } } _matrix = _result; }
void calcMatr() { int size = Math.Max(TopEl.Count(), LeftEl.Count()); Matrix_A = new MatrixOp(size, size, "Матрица_A"); Matrix_AT = new MatrixOp(size, size); MultyplyMatrix = new MatrixOp(size, size, "Умножение A * AT"); for (int i = 0; i < LeftEl.Count; i++) { for (int j = 0; j < LeftEl[i].to.Count; j++) { int value = TopEl.IndexOf(LeftEl[i].to[j]); Matrix_A[value, i] = 1; } } Matrix_AT = Matrix_A.Transperate(); //Транспонируем матрицу Matrix_AT.Name = "Матрица_AT"; //Даем имя MultyplyMatrix.Multyply(Matrix_A, Matrix_AT); //Перемножение матриц GetCountCollision(MultyplyMatrix); //Создаем матрицу коллизий т.е. где эл наши встречаются //------------------------------------------------------------------------------ string mystring; textBox2.AppendText($"\n{Matrix_A.Name}\n"); textBox2.AppendText("\t" + string.Join("\t", LeftEl.Select(v => v.name)) + "\n"); for (int i = 0; i < size; i++) { mystring = TopEl[i] + "\t"; for (int j = 0; j < size; j++) { mystring += Matrix_A[i, j] + "\t"; } textBox2.AppendText(mystring + "\n"); } //------------------------------------------------------------------------------ textBox2.AppendText($"\n{Matrix_AT.Name}\n"); textBox2.AppendText("\t" + string.Join("\t", LeftEl.Select(v => v.name)) + "\n"); for (int i = 0; i < size; i++) { mystring = TopEl[i] + "\t"; for (int j = 0; j < size; j++) { mystring += Matrix_AT[i, j] + "\t"; } textBox2.AppendText(mystring + "\n"); } //------------------------------------------------------------------------------ textBox2.AppendText($"\n{MultyplyMatrix.Name}\n"); textBox2.AppendText("\t" + string.Join("\t", LeftEl.Select(v => v.name)) + "\n"); for (int i = 0; i < size; i++) { mystring = TopEl[i] + "\t"; for (int j = 0; j < size; j++) { mystring += MultyplyMatrix[i, j] + "\t"; } textBox2.AppendText(mystring + "\n"); } this.Matrix_A = Matrix_A; }