Advertisement
Guest User

Untitled

a guest
Jan 21st, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.01 KB | None | 0 0
  1. package lshape;
  2.  
  3. import org.ejml.data.Matrix;
  4. import org.ejml.simple.SimpleMatrix;
  5.  
  6. import java.lang.reflect.Array;
  7. import java.util.Arrays;
  8.  
  9. import static java.lang.Math.pow;
  10. import static java.lang.Math.sin;
  11. import static java.lang.Math.sqrt;
  12.  
  13. public class main {
  14.  
  15.     public static void main(String args[])
  16.     {
  17.         double[][] tabL=new double[8][1];
  18.         double[][] tabB=new double[8][8];
  19.  
  20.         Matrix3x4 matrix3x4=new Matrix3x4();
  21.         Matrix2x8 matrix2x8=new Matrix2x8();
  22.  
  23.         for (int a = 0; a <3; a++) {
  24.             for (int i = 0; i <4; i++) {
  25.                 int points = matrix3x4.getValue(a,i);
  26.                 if (a == 0)
  27.                 tabL[points][0] += (ma(-1.0, 0.5) * fib(a, i, -1, 0.5)) + (ma(-0.5, 1) * fib(a, i, -0.5, 1));
  28.                 else if (a == 1)
  29.                     tabL[points][0] += ma(0.5, 1) * fib(a, i, 0.5, 1) + ma(1, 0.5) * fib(a, i, 1, 0.5);
  30.                 else if (a == 2)
  31.                     tabL[points][0] += ma(1, -0.5) * fib(a, i, 1, -0.5) + ma(0.5, -1) * fib(a, i, 0.5, -1);
  32.                 for (int j = 0; j < 4; j++) {
  33.                     int j1 = matrix3x4.getValue(a,j);
  34.                     tabB[points][j1] += derivative(i, 1) * derivative(j, 1) + derivative(i, 2) * derivative(j, 2);
  35.                 }
  36.             }
  37.         }
  38.         for (int i = 0; i < 8; i++) {
  39.             for (int j = 0; j < 8; j++) {
  40.                 if (i == 3 || i == 4 || i == 6) {
  41.                     tabB[i][j] = 0;
  42.                 }
  43.             }
  44.         }
  45.  
  46.         tabL[3][0]= 0;
  47.         tabL[4][0] = 0;
  48.         tabL[6][0] = 0;
  49.         tabB[3][3] = 1;
  50.         tabB[4][4] = 1;
  51.         tabB[6][6] = 1;
  52.  
  53.         double[] tabA=new double[8];
  54.  
  55.         SimpleMatrix matrixB=new SimpleMatrix(tabB);
  56.         SimpleMatrix matrixL=new SimpleMatrix(tabL);
  57.         SimpleMatrix result= matrixB.solve(matrixL);
  58.         System.out.println(result);
  59.         //double[] wynik = new Gauss().solve(tabB,tabL);
  60.         //for(int i=0;i<wynik.length;i++)
  61.         //    System.out.println(wynik[i]);
  62.         //System.out.println(Arrays.toString(wynik));
  63.     }
  64.  
  65.     public static double ma(double x,double y)
  66.     {
  67.         double alfa = Math.atan2(y,x);
  68.         double r = x * x + y * y;
  69.         return root(r, 3.0) * root(Math.pow(Math.sin(alfa + Math.PI / 4), 2), 3.0);
  70.     }
  71.     public static Double root(Double base, Double n) {
  72.         return Math.pow(Math.E, Math.log(base)/n);
  73.     }
  74.  
  75.     public static double fib(int e,int i,double x1,double x2){
  76.         double[][] tab={{-1,0},{0,0},{0,-1}};
  77.         switch (i) {
  78.             case 0:return (1-(x1-tab[e][0]))*(1-(x2-tab[e][1]));
  79.             case 1:return (x1-tab[e][0])*(1-(x2-tab[e][1]));
  80.             case 2:return (x1-tab[e][0])*(x2-tab[e][1]);
  81.             default:return (1-(x1-tab[e][0]))*(x2-tab[e][1]);
  82.         }
  83.     }
  84.     public static double derivative(int i,int x)
  85.     {
  86.         if((i==2) || (i==3 && x == 2) || ( i== 1 && x == 1)){
  87.             return 0.5;
  88.         }
  89.         else return -0.5;
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement