package ru.kpfu.itis.group11402.batyrova.Task055; import ru.kpfu.itis.group11402.batyrova.Task050.RationalFraction; import ru.kpfu.itis.group11402.batyrova.Task053.RationalVector2D; /** * @author Elvira Batyrova * 402 * 055 */ public class RationalMatrix2x2 { private RationalFraction[][]matrix = new RationalFraction[2][2]; public RationalFraction[][] getMatrix() { return matrix; } public void setMatrix(RationalFraction[][] matrix) { this.matrix = matrix; } public RationalMatrix2x2() { this(new RationalFraction[][] {{new RationalFraction(),new RationalFraction()},{new RationalFraction(),new RationalFraction()}}); } public RationalMatrix2x2(RationalFraction r) { this(new RationalFraction[][] {{r,r},{r,r}}); } public RationalMatrix2x2(RationalFraction[][] matrix) { this.matrix = matrix; } public RationalMatrix2x2(RationalFraction a1, RationalFraction a2, RationalFraction a3, RationalFraction a4) { this(new RationalFraction[][] {{a1,a2},{a3,a4}}); } public RationalMatrix2x2 add(RationalMatrix2x2 rmatr) { RationalMatrix2x2 result = new RationalMatrix2x2(); for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { result.matrix[i][j] = this.matrix[i][j].add(rmatr.getMatrix()[i][j]); } } return result; } public RationalMatrix2x2 mult(RationalMatrix2x2 rmatr) { RationalMatrix2x2 result = new RationalMatrix2x2(); for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { for (int k = 0; k < 2; k++) { result.matrix[i][j].add2(this.matrix[i][k].mult(rmatr.getMatrix()[k][j])); } } } return result; } public RationalFraction det() { return matrix[0][0].mult(matrix[1][1]).sub(matrix[0][1].mult(matrix[1][0])); } public RationalVector2D multVector(RationalVector2D rvect) { return new RationalVector2D(this.matrix[0][0].mult(rvect.getX()).add(this.matrix[0][1].mult(rvect.getX())), this.matrix[1][0].mult(rvect.getY()).add(this.matrix[1][1].mult(rvect.getY()))); } public String toString() { return (matrix[0][0].toString() + " " + matrix[0][1].toString() + "\n" + matrix[1][0].toString() + " " + matrix[1][1].toString() + "\n"); } }