Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package lshape;
- import org.ejml.data.Matrix;
- import org.ejml.simple.SimpleMatrix;
- import java.lang.reflect.Array;
- import java.util.Arrays;
- import static java.lang.Math.pow;
- import static java.lang.Math.sin;
- import static java.lang.Math.sqrt;
- public class main {
- public static void main(String args[])
- {
- double[][] tabL=new double[8][1];
- double[][] tabB=new double[8][8];
- Matrix3x4 matrix3x4=new Matrix3x4();
- Matrix2x8 matrix2x8=new Matrix2x8();
- for (int a = 0; a <3; a++) {
- for (int i = 0; i <4; i++) {
- int points = matrix3x4.getValue(a,i);
- if (a == 0)
- tabL[points][0] += (ma(-1.0, 0.5) * fib(a, i, -1, 0.5)) + (ma(-0.5, 1) * fib(a, i, -0.5, 1));
- else if (a == 1)
- tabL[points][0] += ma(0.5, 1) * fib(a, i, 0.5, 1) + ma(1, 0.5) * fib(a, i, 1, 0.5);
- else if (a == 2)
- tabL[points][0] += ma(1, -0.5) * fib(a, i, 1, -0.5) + ma(0.5, -1) * fib(a, i, 0.5, -1);
- for (int j = 0; j < 4; j++) {
- int j1 = matrix3x4.getValue(a,j);
- tabB[points][j1] += derivative(i, 1) * derivative(j, 1) + derivative(i, 2) * derivative(j, 2);
- }
- }
- }
- for (int i = 0; i < 8; i++) {
- for (int j = 0; j < 8; j++) {
- if (i == 3 || i == 4 || i == 6) {
- tabB[i][j] = 0;
- }
- }
- }
- tabL[3][0]= 0;
- tabL[4][0] = 0;
- tabL[6][0] = 0;
- tabB[3][3] = 1;
- tabB[4][4] = 1;
- tabB[6][6] = 1;
- double[] tabA=new double[8];
- SimpleMatrix matrixB=new SimpleMatrix(tabB);
- SimpleMatrix matrixL=new SimpleMatrix(tabL);
- SimpleMatrix result= matrixB.solve(matrixL);
- System.out.println(result);
- //double[] wynik = new Gauss().solve(tabB,tabL);
- //for(int i=0;i<wynik.length;i++)
- // System.out.println(wynik[i]);
- //System.out.println(Arrays.toString(wynik));
- }
- public static double ma(double x,double y)
- {
- double alfa = Math.atan2(y,x);
- double r = x * x + y * y;
- return root(r, 3.0) * root(Math.pow(Math.sin(alfa + Math.PI / 4), 2), 3.0);
- }
- public static Double root(Double base, Double n) {
- return Math.pow(Math.E, Math.log(base)/n);
- }
- public static double fib(int e,int i,double x1,double x2){
- double[][] tab={{-1,0},{0,0},{0,-1}};
- switch (i) {
- case 0:return (1-(x1-tab[e][0]))*(1-(x2-tab[e][1]));
- case 1:return (x1-tab[e][0])*(1-(x2-tab[e][1]));
- case 2:return (x1-tab[e][0])*(x2-tab[e][1]);
- default:return (1-(x1-tab[e][0]))*(x2-tab[e][1]);
- }
- }
- public static double derivative(int i,int x)
- {
- if((i==2) || (i==3 && x == 2) || ( i== 1 && x == 1)){
- return 0.5;
- }
- else return -0.5;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement