# Matrix Inverse

• 11-29-2010, 10:00 PM
TryingMybestInJava
Matrix Inverse
Hey everybody I am new to Java and to this forum. I really need help on a problem in a Java code. Any help would be really appreciated. The problem is to :
Write a test program that prompts the user to enter a11, a12, a13, a21, a22, a23, a31, a32, a33 for a matrix and displays its inverse matrix. Here is the sample runs:

Enter a11, a12, a13, a21, a22, a23, a31, a32, a33: 1 2 1 2 3 1 4 5 3

-2 0.5 0.5

1 0.5 -0.5

1 -1.5 0.5

I never even heard of a inverse matrix but i have been doing some simple Java problem but this one is killing me please help me!

This is what i got so far:

import java.util.Scanner;

public class MatrixProblem {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.print("Enter a11, a12, a13, a21, a22, a23, a31, a32, a33: ");

double[][] A = new double[3][3];

for (int i = 0; i < 3; i++)

for (int j = 0; j < 3; j++)

A[i][j] = input.nextDouble();

double[][] inverseOfA = inverse(A);

printMatrix(inverseOfA);

}

public static void printMatrix(double[][] m) {

// ????

}

public static double[][] inverse(double[][] A) {

double[][] result = new double[A.length][A.length];

// Compute |A|

double determinantOfA = 1; // A[0][0] * A[1][1] * A[2][2] * ...;

result[0][0] = (A[1][1] * A[2][2] - A[1][2] * A[2][1]) / determinantOfA;

result[0][1] = 1; // ??

result[0][2] = 1; // ??

result[1][0] = 1; // ??

return result;

}

}
• 11-29-2010, 10:37 PM
Zack
I wouldn't recommend this for a beginner, in all honesty.

In order to find the determinant, you will need a loop. Your code currently only checks for a 2x2 matrix. Have you studied for loops at all?
• 11-29-2010, 11:19 PM
TryingMybestInJava
Hey thanks for the advice but yes I have studied loops and I really do need help on this problem still. Thanks
• 11-29-2010, 11:30 PM
TryingMybestInJava
Can anybody just fill in the blanks and explain what you did please. Also i did some research and I found a Java code that might help to find the inverse/determinant. So this code should help and I believe needs to be in my original code to :

public double determinant(double[][] mat) {
double result = 0;

if(mat.length == 1) {
result = mat[0][0];
return result;
}

if(mat.length == 2) {
result = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0];
return result;
}

for(int i = 0; i < mat[0].length; i++) {
double temp[][] = new double[mat.length - 1][mat[0].length - 1];

for(int j = 1; j < mat.length; j++) {
for(int k = 0; k < mat[0].length; k++) {

if(k < i) {
temp[j - 1][k] = mat[j][k];
} else if(k > i) {
temp[j - 1][k - 1] = mat[j][k];
}

}
}

result += mat[0][i] * Math.pow(-1, (double)i) * determinant(temp);
}

return result;
}
• 12-01-2010, 12:59 AM
Zack
...I really don't want to sound like this, but I can't find a better way to say it.

Are you just copying code from other places and trying to Frankenstein a program? (Or rather, trying to get us to Frankenstein it?)