You need to multiply a pair of two-dimensional arrays, as is common in mathematical and engineering applications.
It is straightforward to multiply an array of a numeric type. The code in Example 5-3 implements matrix multiplication.
Example 5-3. Matrix.java
/** * Multiply two matrices. * Only defined for int: clone the code (or wait for Templates) * for long, float, and double. */ public class Matrix { /* Matrix-multiply two arrays together. * The arrays MUST be rectangular. * @author Tom Christiansen & Nathan Torkington, Perl Cookbook version. */ public static int[][] multiply(int[][] m1, int[][] m2) { int m1rows = m1.length; int m1cols = m1[0].length; int m2rows = m2.length; int m2cols = m2[0].length; if (m1cols != m2rows) throw new IllegalArgumentException( int[][] result = new int[m1rows][m2cols]; // multiply for (int i=0; i<m1rows; i++) for (int j=0; j<m2cols; j++) for (int k=0; k<m1cols; k++) result[i][j] += m1[i][k] * m2[k][j]; return result; } public static void mprint(int[][] a) { int rows = a.length; int cols = a[0].length; System.out.println("array["+rows+"]["+cols+"] = {"); for (int i=0; i<rows; i++) { System.out.print("{"); for (int j=0; j<cols; j++) System.out.print(" " + a[i][j] + ","); System.out.println("},"); } System.out.println(":;"); } }
Here is a program that uses the
Matrix
class to multiply two arrays of
int
s:
// MatrixUse.java int x[][] = { { 3, 2, 3 }, { 5, 9, 8 }, }; int y[][] = { { 4, 7 }, { 9, 3 }, { 8, 1 }, }; int z[][] = Matrix.multiply(x, y); Matrix.mprint(x); Matrix.mprint(y); Matrix.mprint(z);
Consult a book on numerical methods for more things to do with matrixes. There are commercial libraries that will do this for you, such as the Visual Numerics vni library, which can be downloaded from http://www.vni.com.
18.191.93.12