1
0

Matrix.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. /**
  6. *
  7. * @author LH
  8. */
  9. public class Matrix
  10. {
  11. private double[][] matrixdata;
  12. public Matrix(int height, int width)
  13. {
  14. matrixdata = new double[height][width];
  15. }
  16. public double getEntry(int height,int width)
  17. {
  18. return matrixdata[height-1][width-1];
  19. }
  20. public void setEntry(int height,int width,double value)
  21. {
  22. matrixdata[height-1][width-1]=value;
  23. }
  24. public int getHeight()
  25. {
  26. return matrixdata.length;
  27. }
  28. public int getWidth()
  29. {
  30. if(getHeight()>0)
  31. {
  32. return matrixdata[0].length;
  33. }
  34. return 0;//wenn keine zeilen dann auch keine spalten....
  35. }
  36. public Matrix add(Matrix m2)
  37. {
  38. if(m2.getHeight()==getHeight()&&m2.getWidth()==getWidth())
  39. {
  40. int height = getHeight();
  41. int width = getWidth();
  42. int cells = height*width;
  43. Matrix o = new Matrix(height,width);
  44. for (int i = 0; i < cells; i++)
  45. {
  46. int row = i/width+1;
  47. int col = i%width+1;
  48. o.setEntry(row,col, m2.getEntry(row, col)+getEntry(row, col));
  49. }
  50. return o;
  51. }
  52. return null;//keine add mögl
  53. }
  54. public Matrix multiply(Matrix m2)
  55. {
  56. if(m2.getHeight()==getWidth())
  57. {
  58. int height = getHeight();
  59. int width = m2.getWidth();
  60. Matrix o = new Matrix(height,m2.getWidth());
  61. for (int i = 0; i < height; i++)
  62. {
  63. for (int j = 0; j <width; j++)
  64. {
  65. double cc = 0;
  66. for (int k = 0; k < getWidth(); k++)
  67. {
  68. System.out.print((i+1)+"|"+(j+1)+"|"+(k+1));
  69. double mt = m2.getEntry(k+1,j+1);
  70. cc=cc+(getEntry(i+1, k+1)*mt);
  71. System.out.println("|"+mt+"|"+cc);
  72. }
  73. o.setEntry(i+1, j+1, cc);
  74. }
  75. }
  76. return o;
  77. }
  78. return null;//keine add mögl
  79. }
  80. public String toString()
  81. {
  82. String result = "";
  83. String zeile = "";
  84. String klammerauf= "│",klammerzu="│";
  85. for (int i = 0; i < matrixdata.length; i++)
  86. {
  87. klammerauf= "│";
  88. klammerzu="│";
  89. if(i==matrixdata.length-1)
  90. {
  91. klammerauf="└";
  92. klammerzu="┘";
  93. }
  94. if(i==0)
  95. {
  96. klammerauf="┌";
  97. klammerzu="┐";
  98. }
  99. double[] linedata = matrixdata[i];
  100. zeile=klammerauf;
  101. for (double zelle : linedata)
  102. {
  103. zeile+=zelle+"\t";
  104. }
  105. zeile=zeile.trim();
  106. zeile+=klammerzu;
  107. result+=zeile+"\n";
  108. }
  109. return result;
  110. }
  111. public static void main(String[] args) throws Exception
  112. {
  113. Matrix m = new Matrix(4,4);
  114. m.setEntry(1, 1, 0);
  115. m.setEntry(1, 2, 1);
  116. m.setEntry(1, 3, 0);
  117. m.setEntry(1, 4, 0);
  118. m.setEntry(2, 1, 0);
  119. m.setEntry(2, 2, 0);
  120. m.setEntry(2, 3, 1);
  121. m.setEntry(2, 4, 0);
  122. m.setEntry(3, 1, 0);
  123. m.setEntry(3, 2, 0);
  124. m.setEntry(3, 3, 1);
  125. m.setEntry(3, 4, 0);
  126. m.setEntry(4, 1, -1);
  127. m.setEntry(4, 2, 1);
  128. m.setEntry(4, 3, -1);
  129. m.setEntry(4, 4, 3);
  130. InteractiveIO.write(m.multiply(m)+"");
  131. }
  132. }