Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Random;
- import Jama.*;
- public class Main {
- Random r = new Random();
- int size = 4;
- Matrix m = new Matrix(size, size);
- double randomValue = -10 + (11 - (-10)) * r.nextDouble();
- Matrix l1 = new Matrix(size, size);
- Matrix u1 = new Matrix(size, size);
- Matrix permutacja = new Matrix(size, size);
- public Matrix przekatna(Matrix m, int size) {
- for (int i = 0; i < size; i++)
- m.set(i, i, 1);
- return m;
- }
- public ArrayList<Matrix> dobor(Matrix m, Matrix l, Matrix dane, int size,
- Matrix permute) {
- int j;
- Matrix x;
- double max = 0;
- int permut = 0;
- double var = 0;
- for (int i = 0; i < size; i++) {
- for (int k = 0; k < size; k++) {
- if (max < Math.max(dane.get(k, i), max)) {
- max = Math.max(dane.get(k, i), max);
- permut = k;
- }
- }
- for (j = 1 + i; j < size; j++) {
- m.set(j, i, -(dane.get(j, i) / dane.get(i, i)));
- l.set(j, i, dane.get(j, i) / dane.get(i, i));
- }
- for (int e = 0; e < size; e++)
- permute.set(e, e, 1);
- if(permut!=0){
- permute.set(i,i,0);
- permute.set(i,permut,1);
- permute.set(permut,permut,0);
- permute.set(permut,i,1);
- }
- System.out.println("Max w kolumnie: " + (i + 1) + " wynosi " + max + " indeks " + permut);
- System.out.println("Macierz permutacji Q" + (i + 1));
- permute.print(4, 2);
- System.out.println("Macierz M" + (i + 1));
- m.print(4, 2);
- System.out.println("Macierz L" + (i + 1));
- l.print(4, 2);
- x = dane.times(permute);
- dane = m.times(x);
- l = permute.times(l);
- m = new Matrix(size, size);
- for (int si = 0; si < size; si++)
- m.set(si, si, 1);
- System.out.println("M" + (i + 1) + "A" + (i + 1));
- dane.print(4, 2);
- max = 0;
- permute = new Matrix(size,size);
- }
- ArrayList<Matrix> macierz = new ArrayList<>();
- macierz.add(dane);
- macierz.add(l);
- return macierz;
- }
- public ArrayList<Matrix> LUdecompose(Matrix m, Matrix l, Matrix dane,
- int size) {
- for (int i = 0; i < size; i++) {
- for (int j = 1 + i; j < size; j++) {
- m.set(j, i, -(dane.get(j, i) / dane.get(i, i)));
- l.set(j, i, dane.get(j, i) / dane.get(i, i));
- }
- System.out.println("Macierz M" + (i + 1));
- m.print(4, 2);
- System.out.println("Macierz L" + (i + 1));
- l.print(4, 2);
- dane = m.times(dane);
- m = new Matrix(size, size);
- for (int si = 0; si < size; si++)
- m.set(si, si, 1);
- System.out.println("M" + (i + 1) + "A" + (i + 1));
- dane.print(4, 2);
- }
- ArrayList<Matrix> macierz = new ArrayList<>();
- macierz.add(dane);
- macierz.add(l);
- return macierz;
- }
- public static void main(String[] args) {
- ArrayList<Matrix> macierz = new ArrayList<>();
- Main mn1 = new Main();
- for (int i = 0; i < mn1.size; i++)
- for (int j = 0; j < mn1.size; j++)
- mn1.m.set(i, j, -10 + (11 - (-10)) * mn1.r.nextDouble());
- mn1.m.print(4, 2);
- mn1.przekatna(mn1.l1, mn1.size);
- mn1.przekatna(mn1.u1, mn1.size);
- LUDecomposition lu = new LUDecomposition(mn1.m);
- macierz = mn1.dobor(mn1.l1, mn1.u1, mn1.m, mn1.size, mn1.permutacja);
- System.out.println("Iloczyn L x U:");
- macierz.get(1).times(macierz.get(0)).print(4, 2);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement