📄 calculator.java
字号:
package edu.neu.aatk;
public class Calculator {
private double [][] matrix;
private double [][] matrix1;
private double [][] matrix2;
private int xValue;
private int yValue;
private int xValue1;
private int yValue1;
private int xValue2;
private int yValue2;
public Calculator(double matrix[][]) {
this.matrix = matrix;
xValue = matrix.length;
yValue = matrix[0].length;
}
public Calculator(double matrix1[][], double matrix2[][]) {
this.matrix1 = matrix1;
this.matrix2 = matrix2;
xValue1 = matrix1.length;
yValue1 = matrix1[0].length;
xValue2 = matrix2.length;
yValue2 = matrix2[0].length;
}
public void guass() {
double k=0;
for (int p = 0; p<matrix[0].length-1; p++) {
for (int r =p+1; r<matrix.length; r++) {
if(matrix[p][p] != 0)
k=matrix[r][p]/matrix[p][p];
else
k=0;
matrix[r][p]=0;
for (int c = p+1; c< matrix[0].length; c++) {
matrix[r][c]=matrix[r][c]-k*matrix[p][c];
}
}
}
}
public double hlsqz() {
double result = 1;
guass();
for(int i=0;i<xValue;i++) {
result *= matrix[i][i];
}
return result;
}
public boolean pdjzknx() {
if(xValue == yValue && hlsqz() != 0)
return true;
else
return false;
}
public void printMatrix() {
System.out.println("Printing...");
for(int i=0;i<xValue;i++) {
for(int j=0;j<yValue;j++) {
System.out.print(matrix[i][j] + "\t");
}
System.out.println();
}
}
public int qjzdz() {
int z = xValue;
int count = 0;
guass();
for(int i=0; i<xValue; i++) {
count = 0;
for(int j=0; j<yValue; j++) {
if(matrix[i][j] == 0 || matrix[i][j] == Double.longBitsToDouble(0x7fefffffffffffffL))
count ++;
}
if(count == yValue)
z --;
}
return z;
}
public String jzjf() {
String result = "";
matrix = new double[xValue1][yValue1];
for(int i = 0; i < xValue1; i++) {
for(int j = 0; j < yValue1; j++) {
matrix[i][j] = matrix1[i][j] + matrix2[i][j];
}
}
for(int i = 0; i < xValue1; i++) {
for(int j = 0; j < yValue1; j++) {
result = result + "x" + (i + 1) + ", y" + (j + 1)
+ " = " + matrix[i][j] + "\n";
}
}
return result;
}
public String jzcf() {
String result = "";
xValue = xValue1;
yValue = yValue2;
matrix = new double[xValue][yValue];
for(int i = 0; i < xValue; i++) {
for(int j = 0; j< yValue; j++) {
int sum = 0;
for(int k = 0; k < yValue1; k++) {
sum += matrix1[i][k] * matrix2[k][j];
}
matrix[i][j] = sum;
}
}
for(int i = 0; i < xValue; i++) {
for(int j = 0; j < yValue; j++) {
result = result + "x" + (i + 1) + ", y" + (j + 1)
+ " = " + matrix[i][j] + "\n";
}
}
return result;
}
public static String divDouble(double d) {
String str = Double.toString(d);
StringBuffer strBuf = new StringBuffer(str);
int pos = str.indexOf(".");
int length = str.length();
if(pos + 3 > length)
strBuf.append('0');
else
strBuf.delete(pos + 3, length + 1);
return strBuf.toString();
}
public String qnjz() {
String result = "";
int dim = xValue;
double[] tMatrix = new double[2*dim*dim];
double[] pMatrix = new double[dim*dim];
double[] _pMatrix = new double[dim*dim];
for(int i = 0; i < dim; i++) {
for(int j = 0; j < dim; j++)
pMatrix[i * dim + j] = matrix[i][j];
}
for (int i=0; i<dim; i++){
for (int j=0; j<dim; j++)
tMatrix[i*dim*2+j] = pMatrix[i*dim+j];
}
for (int i=0; i<dim; i++){
for (int j=dim; j<dim*2; j++)
tMatrix[i*dim*2+j] = 0.0;
tMatrix[i*dim*2+dim+i] = 1.0;
}
//Initialization over!
for (int i=0; i<dim; i++)//Process Cols
{
double base = tMatrix[i*dim*2+i];
for (int j=0; j<dim; j++)//row
{
if (j == i) continue;
double times = tMatrix[j*dim*2+i]/base;
for (int k=0; k<dim*2; k++)//col
{
tMatrix[j*dim*2+k] = tMatrix[j*dim*2+k] - times*tMatrix[i*dim*2+k];
}
}
for (int k=0; k<dim*2; k++){
tMatrix[i*dim*2+k] /= base;
}
}
for (int i=0; i<dim; i++)
{
for (int j=0; j<dim; j++)
_pMatrix[i*dim+j] = tMatrix[i*dim*2+j+dim];
}
for(int i = 0; i < dim; i++) {
for(int j = 0; j < dim; j++) {
result = result + "x" + (i + 1) + ", y" + (j + 1)
+ " = " + _pMatrix[i * dim + j] + "\n";
}
}
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -