📄 matrix.java
字号:
/////// Matrix.java ///////
public class Matrix
{ public Matrix(int r, int c)
{ if ( r > 0 && c > 0 )
mat = new double[nr=r][nc=c];
else
{ mat = null; nr=nc=0; }
}
public Matrix(double[][] m)
{ mat = m;
nr = m.length;
nc = m[0].length;
}
public double getElement(int i, int j)
{ return mat[i][j]; }
public void setElement(int i, int j, double e)
{ mat[i][j] = e; }
public int rows() { return nr; }
public int cols() { return nc; }
public Matrix times(Matrix b)
{ if ( nc != b.nr ) return null; // incompatible dimensions
Matrix p = new Matrix(nr,b.nc);
for (int i=0 ; i < nr ; i++)
{ for (int j=0 ; j < b.nc; j++)
p.setElement(i,j,
rowTimesCol(i, b.mat, j));
}
return p;
}
public String toString()
{ StringBuffer buf = new StringBuffer();
for (int i = 0; i < nr; i++)
{ buf.append("( ");
for (int j = 0; j < nc-1; j++)
{ buf.append(mat[i][j]);
buf.append(" ");
}
buf.append(mat[i][nc-1]);
buf.append(" )\n");
}
buf.setLength(buf.length()-1);
return new String(buf);
}
public static void main(String[] args)
{ double[][] a = { {1.0,-2.0,1.5}, {1.0,2.4,3.1}};
double[][] b = { {9.0,0.7},{-2.0,30.5},{-9.0,4.0}};
Matrix m1 = new Matrix(a);
Matrix m2 = new Matrix(b);
Matrix prod = m1.times(m2);
System.out.println(prod);
}
private double rowTimesCol(int ri, double[][] b, int ci)
{ double sum=0.0d;
double[] row = mat[ri];
for (int k=0; k < b.length; k++)
sum += row[k] * b[k][ci];
return sum;
}
private double[][] mat; // the matrix
private int nr, nc; // rows and cols
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -