Shoken Startup Blog

KitchHike Founder/CTO

逆行列の計算3x3

Java逆行列を求める計算。
3x3の行列のみ。

double [][] invArray(double A[][]) {
  double det = 0;/Determinant
  int size = 3;
  
  for(int i=0; i<size; i++){
    double rightline = 1;
    double leftline = 1;
    for(int j=0; j<size; j++){
      rightline *= A[(i+j)%size][j%size];
      leftline  *= A[(i+size-j)%size][j%size];
    }
    det = det + rightdown - leftdown;
  }

  if (det == 0) {
    return 0;
  } else {
    double InvA[][] =new double[size][size];
    for(int i = 0; i < size; i++) {
      for(int j = 0; j < size; j++) {
	InvA[j][i] = (A[(i+1)%size][(j+1)%size]*A[(i+2)%size][(j+2)%size]
	          -A[(i+1)%size][(j+2)%size]*A[(i+2)%size][(j+1)%size])
	           /det;
      }
    }
  }
  return InvA;
}