1. Member Join Date
Nov 2010
Posts
3
Rep Power
0

## 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;

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 * A * A * ...;

result = (A * A - A * A) / determinantOfA;

result = 1; // ??

result = 1; // ??

result = 1; // ??

return result;

}

}  Reply With Quote

2. ## 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?  Reply With Quote

3. Member Join Date
Nov 2010
Posts
3
Rep Power
0

## Hey thanks for the advice but yes I have studied loops and I really do need help on this problem still. Thanks  Reply With Quote

4. Member Join Date
Nov 2010
Posts
3
Rep Power
0

## 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;
return result;
}

if(mat.length == 2) {
result = mat * mat - mat * mat;
return result;
}

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

for(int j = 1; j < mat.length; j++) {
for(int k = 0; k < mat.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[i] * Math.pow(-1, (double)i) * determinant(temp);
}

return result;
}  Reply With Quote

5. ## ...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?)  Reply With Quote

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•