Advertisement
Guest User

asa

a guest
Dec 11th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.23 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Random;
  3.  
  4. import Jama.*;
  5.  
  6. public class Main {
  7.  
  8. Random r = new Random();
  9. int size = 4;
  10. Matrix m = new Matrix(size, size);
  11. double randomValue = -10 + (11 - (-10)) * r.nextDouble();
  12. Matrix l1 = new Matrix(size, size);
  13. Matrix u1 = new Matrix(size, size);
  14. Matrix permutacja = new Matrix(size, size);
  15.  
  16. public Matrix przekatna(Matrix m, int size) {
  17.  
  18. for (int i = 0; i < size; i++)
  19. m.set(i, i, 1);
  20. return m;
  21. }
  22.  
  23. public ArrayList<Matrix> dobor(Matrix m, Matrix l, Matrix dane, int size,
  24. Matrix permute) {
  25. int j;
  26. Matrix x;
  27. double max = 0;
  28. int permut = 0;
  29. double var = 0;
  30. for (int i = 0; i < size; i++) {
  31. for (int k = 0; k < size; k++) {
  32. if (max < Math.max(dane.get(k, i), max)) {
  33. max = Math.max(dane.get(k, i), max);
  34. permut = k;
  35. }
  36. }
  37.  
  38. for (j = 1 + i; j < size; j++) {
  39. m.set(j, i, -(dane.get(j, i) / dane.get(i, i)));
  40. l.set(j, i, dane.get(j, i) / dane.get(i, i));
  41.  
  42. }
  43.  
  44. for (int e = 0; e < size; e++)
  45. permute.set(e, e, 1);
  46.  
  47. if(permut!=0){
  48. permute.set(i,i,0);
  49. permute.set(i,permut,1);
  50. permute.set(permut,permut,0);
  51. permute.set(permut,i,1);
  52.  
  53. }
  54.  
  55. System.out.println("Max w kolumnie: " + (i + 1) + " wynosi " + max + " indeks " + permut);
  56.  
  57. System.out.println("Macierz permutacji Q" + (i + 1));
  58. permute.print(4, 2);
  59.  
  60.  
  61. System.out.println("Macierz M" + (i + 1));
  62. m.print(4, 2);
  63. System.out.println("Macierz L" + (i + 1));
  64. l.print(4, 2);
  65. x = dane.times(permute);
  66. dane = m.times(x);
  67. l = permute.times(l);
  68.  
  69. m = new Matrix(size, size);
  70. for (int si = 0; si < size; si++)
  71. m.set(si, si, 1);
  72. System.out.println("M" + (i + 1) + "A" + (i + 1));
  73. dane.print(4, 2);
  74. max = 0;
  75.  
  76. permute = new Matrix(size,size);
  77. }
  78.  
  79. ArrayList<Matrix> macierz = new ArrayList<>();
  80. macierz.add(dane);
  81. macierz.add(l);
  82. return macierz;
  83. }
  84.  
  85. public ArrayList<Matrix> LUdecompose(Matrix m, Matrix l, Matrix dane,
  86. int size) {
  87.  
  88. for (int i = 0; i < size; i++) {
  89. for (int j = 1 + i; j < size; j++) {
  90.  
  91. m.set(j, i, -(dane.get(j, i) / dane.get(i, i)));
  92. l.set(j, i, dane.get(j, i) / dane.get(i, i));
  93.  
  94. }
  95. System.out.println("Macierz M" + (i + 1));
  96. m.print(4, 2);
  97. System.out.println("Macierz L" + (i + 1));
  98. l.print(4, 2);
  99. dane = m.times(dane);
  100.  
  101. m = new Matrix(size, size);
  102. for (int si = 0; si < size; si++)
  103. m.set(si, si, 1);
  104. System.out.println("M" + (i + 1) + "A" + (i + 1));
  105. dane.print(4, 2);
  106. }
  107. ArrayList<Matrix> macierz = new ArrayList<>();
  108. macierz.add(dane);
  109. macierz.add(l);
  110. return macierz;
  111. }
  112.  
  113. public static void main(String[] args) {
  114. ArrayList<Matrix> macierz = new ArrayList<>();
  115.  
  116. Main mn1 = new Main();
  117. for (int i = 0; i < mn1.size; i++)
  118. for (int j = 0; j < mn1.size; j++)
  119. mn1.m.set(i, j, -10 + (11 - (-10)) * mn1.r.nextDouble());
  120. mn1.m.print(4, 2);
  121.  
  122. mn1.przekatna(mn1.l1, mn1.size);
  123. mn1.przekatna(mn1.u1, mn1.size);
  124. LUDecomposition lu = new LUDecomposition(mn1.m);
  125.  
  126. macierz = mn1.dobor(mn1.l1, mn1.u1, mn1.m, mn1.size, mn1.permutacja);
  127.  
  128. System.out.println("Iloczyn L x U:");
  129. macierz.get(1).times(macierz.get(0)).print(4, 2);
  130.  
  131. }
  132.  
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement