static void Main(string[] args) { squareMatrix matrix1 = new squareMatrix(3, true); squareMatrix matrix2 = new squareMatrix(3, true); //Console.WriteLine(matrix1 + matrix2); matrix1.print(); matrix2 = squareMatrix.transposing(matrix1); matrixOperations diagonalization = delegate(squareMatrix matrix) { squareMatrix resultMatrix = matrix; for (int i = 0; i < resultMatrix.arr.GetLength(0); i++) { for (int j = 0; j < resultMatrix.arr.GetLength(0); j++) { if (j == i) { continue; } resultMatrix.arr[i, j] = 0; } } return(resultMatrix); }; matrix2 = diagonalization(matrix1); matrix2.print(); }
public static squareMatrix operator -(squareMatrix MatrixL, squareMatrix MatrixR) { squareMatrix MatrixResult = new squareMatrix((byte)MatrixL.arr.GetLength(0), true); for (byte i = 0; i < MatrixL.arr.GetLength(0); i++) { for (byte j = 0; j < MatrixL.arr.GetLength(0); j++) { MatrixResult.arr[i, j] = MatrixL.arr[i, j] - MatrixR.arr[i, j]; } } return(MatrixResult); }
//matrixOperations diagonalization = delegate (squareMatrix matrix) { // squareMatrix resultMatrix = matrix; // for (int i = 0; i < resultMatrix.arr.GetLength(0); i++) // { // for (int j = 0; j < resultMatrix.arr.GetLength(0); j++) // { // if (j == i) continue; // resultMatrix.arr[i, j] = 0; // } // } // return resultMatrix; //}; public static int CompareTo(squareMatrix MatrixL, squareMatrix MatrixR) { if (MatrixL > MatrixR) { return(1); } else if (MatrixL < MatrixR) { return(-1); } else { return(0); } }
public static squareMatrix transposing(squareMatrix matrix) { squareMatrix resultMatrix = matrix; double tmp = 0; for (int i = 0; i < matrix.arr.GetLength(0); ++i) { for (int j = 0; j < i; j++) { tmp = resultMatrix.arr[i, j]; resultMatrix.arr[i, j] = resultMatrix.arr[j, i]; resultMatrix.arr[j, i] = tmp; } } return(resultMatrix); }
public squareMatrix inverseMatrix() { squareMatrix tempMatrix = new squareMatrix(2, true); double det = determinant(); for (int i = 0; i < arr.GetLength(0); ++i) { for (int j = 0; j < arr.GetLength(0); ++j) { tempMatrix.arr[i, j] = ((i == 0 && j == 1) || (i == 1 && j == 0)) ? -1 * getElement(i, j) : getElement(i, j); Console.WriteLine(tempMatrix.arr[i, j]); tempMatrix.arr[i, j] *= (1 / det); } } return(tempMatrix); }
public static squareMatrix operator *(squareMatrix MatrixL, squareMatrix MatrixR) { squareMatrix MatrixResult = new squareMatrix((byte)MatrixL.arr.GetLength(0), false); for (byte i = 0; i < MatrixL.arr.GetLength(0); ++i) { // цикл по каждому столбцу второй матрицы for (byte j = 0; j < MatrixL.arr.GetLength(0); ++j) { for (byte k = 0; k < MatrixL.arr.GetLength(0); ++k) { MatrixResult.arr[i, j] += MatrixL.arr[i, k] * MatrixR.arr[k, j]; } } } return(MatrixResult); }