Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package learningjava;
- import java.util.ArrayList;
- public class SMatrix {
- private int order;
- private double[][] values;
- private ComplexNumber[][] cValues;
- private final static double[][] def = { { 0 } };
- public SMatrix() {
- this(1, def);
- }
- public SMatrix(SMatrix m) {
- this(m.order, m.values);
- }
- public SMatrix(int order, double[][] values) {
- this.order = order;
- cValues = new ComplexNumber[order][order];
- this.cValues = convert(values);
- }
- public SMatrix(int order, ComplexNumber[][] cValues) {
- this.order = order;
- this.cValues = cValues;
- }
- public void setValues(double[][] values) {
- this.cValues = convert(values);
- }
- public void setValues(ComplexNumber[][] cValues) {
- this.cValues = cValues;
- }
- public ComplexNumber[][] getValues() {
- return this.cValues;
- }
- public int getOrder() {
- return this.order;
- }
- public void setOrder(int order) {
- this.order = order;
- }
- public static ComplexNumber[][] convert(double[][] values){
- ComplexNumber[][] temp = new ComplexNumber[values.length][values.length];
- for(int i=0;i<values.length;i++) {
- for(int j=0;j<values.length;j++) {
- temp[i][j] = new ComplexNumber(values[i][j]);
- }
- }
- return temp;
- }
- public void multiplyRow(int row, double c) {
- for (int i = 0; i < order; i++) {
- this.cValues[row - 1][i] = this.cValues[row - 1][i].multiplyByC(c);
- }
- }
- public void addRows(int row1, int row2) { // adds row 1 TO row 2
- for (int i = 0; i < order; i++) {
- this.cValues[row2 - 1][i] = ComplexNumber.add(this.cValues[row2 - 1][i], this.cValues[row1 - 1][i]);
- }
- }
- public void switchRow(int row1, int row2) {
- ComplexNumber[] temp = new ComplexNumber[order];
- for (int i = 0; i < order; i++) {
- temp[i] = this.cValues[row1 - 1][i];
- this.cValues[row1 - 1][i] = this.cValues[row2 - 1][i];
- this.cValues[row2 - 1][i] = temp[i];
- }
- }
- public static SMatrix addMatrix(SMatrix m1, SMatrix m2) {
- ComplexNumber[][] temp = new ComplexNumber[m1.order][m1.order];
- SMatrix m;
- if (m1.order != m2.order) {
- System.out.println("the 2 matrices have to be of the same order");
- return new SMatrix();
- } else {
- for (int i = 0; i < m1.order; i++) {
- for (int j = 0; j < m1.order; j++) {
- temp[i][j] = ComplexNumber.add(m1.cValues[i][j], m2.cValues[i][j]);
- }
- }
- return new SMatrix(m1.order, temp);
- }
- }
- public static SMatrix multiplyMatrix(SMatrix m1, SMatrix m2) {
- ComplexNumber[][] temp = new ComplexNumber[m1.order][m1.order];
- ComplexNumber sum = new ComplexNumber();
- int c = 0, d = 0;
- ArrayList<ComplexNumber> row = new ArrayList<ComplexNumber>();
- for (int k = 0; k < m1.order; k++) {
- for (int i = 0; i < m1.order; i++) {
- for (int j = 0; j < m1.order; j++) {
- sum = ComplexNumber.multiply(m1.cValues[d][j], m2.cValues[j][i]) ;
- }
- row.add(sum);
- }
- d++;
- }
- for (int i = 0; i < temp.length; i++) {
- for (int j = 0; j < temp.length; j++) {
- temp[i][j] = row.get(c++);
- }
- }
- return new SMatrix(m1.order, temp);
- }
- public static SMatrix getIdentity(SMatrix m) {
- ComplexNumber[][] identity = new ComplexNumber[m.order][m.order];
- for (int i = 0; i < m.order; i++) {
- for (int j = 0; j < m.order; j++) {
- if (i == j)
- identity[i][i] = ComplexNumber.ONE;
- else
- identity[i][j] = ComplexNumber.ZERO;
- }
- }
- return new SMatrix(m.order, identity);
- }
- public String toString() {
- String s = "";
- for (int i = 0; i < order; i++) {
- for (int j = 0; j < order; j++) {
- s += this.cValues[i][j].toString() + "\t";
- if (j == order - 1) {
- s += "\n\n";
- }
- }
- }
- return s;
- }
- public static void main(String[] args) {
- double[][] test = { { 1, 2, 3 }, { 3, 4, 5 }, { 5, 6, 7 } };
- double[][] test2 = { { 2, 2, 5 }, { 1, 7, 5 }, { 5, 6, 7 } };
- ComplexNumber[][] cTest = { { new ComplexNumber(1, 2) , new ComplexNumber(2, 3) , new ComplexNumber(4, 4) },
- { new ComplexNumber(2, 1) , new ComplexNumber(3) , new ComplexNumber(6, 3) },
- { new ComplexNumber(1, 9) , new ComplexNumber(6, 3), new ComplexNumber(1) }};
- ComplexNumber[][] cTest2 = { { new ComplexNumber(1, 2) , new ComplexNumber(2, 3) , new ComplexNumber(4, 4) },
- { new ComplexNumber(2, 1) , new ComplexNumber(3, 3) , new ComplexNumber(6, 3) },
- { new ComplexNumber(1, 9) , new ComplexNumber(6, 3), new ComplexNumber(1) }};
- SMatrix m = new SMatrix(3, test);
- SMatrix m2 = new SMatrix(3, test2);
- SMatrix cm = new SMatrix(3, cTest);
- SMatrix cm2 = new SMatrix(3, cTest2);
- /*System.out.println(getIdentity(cm).toString());
- System.out.println(m.toString());
- System.out.println(m2.toString());
- System.out.println(cm.toString());
- m.multiplyRow(3, 3);
- System.out.println(m.toString());
- m.addRows(1, 2);
- System.out.println(cm.toString());
- System.out.println(cm2.toString());
- System.out.println(multiplyMatrix(cm, cm2));
- m.addRows(1, 2); // add row 1 TO row 2
- System.out.println(m.toString());
- m.switchRow(1, 2);
- System.out.println(m.toString());
- System.out.println(m2.toString());
- System.out.println(addMatrix(m, m2).toString());
- System.out.println(getIdentity(m).toString());
- System.out.println(multiplyMatrix(m, m2));*/
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment