Advertisement
Guest User

dsada

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