程序如下
在方法exchange中的array1,和下面的exchange调用中有错误package com;public class Gaosi
{
static int n=9;
static float array1[];
static float array2[];
static float array [][];
public static float exchange(array1,array2)
{
float t;
int i;
for(i=0;i <=n-1;i++)
{
t=array1[i];array1[i]=array2[i];array2[i]=t;}
} public static void xiaoyuan(float array1[][],int t)
{
int i,j;
for(i=t+1;i <=n-1;i++)
{
if(array1[t][t]==0)
continue;
else
for(j=t;j <=n;j++)
{
array1[i][j]=array1[i][j]-array1[t][j]*array1[i][t]/array1[t][t];
}
} }
public static void putarray(float array[][])
{
int i,j;
for(i=0;i <=n-1;i++){
for(j=0;j <=n;j++)
{
System.out.println(array[i][j]);
}
}
}
public void start()
{
int i,j,k;
float sum=0;
float X[]=new float[]{0};
float matrix[][]=
{
{31,-13,0,0,0,-10,0,0,0,-15},
{-13,35,-9,0,-11,0,0,0,0,27},
{0,-9,31,-10,0,0,0,0,0,-23},
{0,0,-10,79,-30,0,0,0,-9,0},
};
for(i=0;i<n-1;i++)
{
k=i;
for(j=i;j <=n-1;j++)
{
if(Math.abs(matrix[j][i])>Math.abs(matrix[k][k]))
k=j;
}
if(i!=k)
{
exchange(matrix[i],matrix[k]);
xiaoyuan(matrix,i);
}
}
putarray(matrix);
for(i=n-1;i>=0;i--)
{
for(j=n-1;j>=i;j--)
{
sum=sum+X[j]*matrix[i][j];
}
X[i]=(matrix[i][n]-sum)/matrix[i][i];
sum=0;}
for(i=0;i <=n-1;i++)
{
System.out.println("x["+i+"]="+X[i]);
} }
public static void main(String args[])
{
Gaosi g=new Gaosi();
g.start();
}
}
在方法exchange中的array1,和下面的exchange调用中有错误package com;public class Gaosi
{
static int n=9;
static float array1[];
static float array2[];
static float array [][];
public static float exchange(array1,array2)
{
float t;
int i;
for(i=0;i <=n-1;i++)
{
t=array1[i];array1[i]=array2[i];array2[i]=t;}
} public static void xiaoyuan(float array1[][],int t)
{
int i,j;
for(i=t+1;i <=n-1;i++)
{
if(array1[t][t]==0)
continue;
else
for(j=t;j <=n;j++)
{
array1[i][j]=array1[i][j]-array1[t][j]*array1[i][t]/array1[t][t];
}
} }
public static void putarray(float array[][])
{
int i,j;
for(i=0;i <=n-1;i++){
for(j=0;j <=n;j++)
{
System.out.println(array[i][j]);
}
}
}
public void start()
{
int i,j,k;
float sum=0;
float X[]=new float[]{0};
float matrix[][]=
{
{31,-13,0,0,0,-10,0,0,0,-15},
{-13,35,-9,0,-11,0,0,0,0,27},
{0,-9,31,-10,0,0,0,0,0,-23},
{0,0,-10,79,-30,0,0,0,-9,0},
};
for(i=0;i<n-1;i++)
{
k=i;
for(j=i;j <=n-1;j++)
{
if(Math.abs(matrix[j][i])>Math.abs(matrix[k][k]))
k=j;
}
if(i!=k)
{
exchange(matrix[i],matrix[k]);
xiaoyuan(matrix,i);
}
}
putarray(matrix);
for(i=n-1;i>=0;i--)
{
for(j=n-1;j>=i;j--)
{
sum=sum+X[j]*matrix[i][j];
}
X[i]=(matrix[i][n]-sum)/matrix[i][i];
sum=0;}
for(i=0;i <=n-1;i++)
{
System.out.println("x["+i+"]="+X[i]);
} }
public static void main(String args[])
{
Gaosi g=new Gaosi();
g.start();
}
}
{31, -13, 0, 0, 0, -10, 0, 0, 0, -15},
{-13, 35, -9, 0, -11, 0, 0, 0, 0, 27},
{0, -9, 31, -10, 0, 0, 0, 0, 0, -23},
{0, 0, -10, 79, -30, 0, 0, 0, -9, 0},};
// Main g = new Main();
// g.start();
float[][] tt = g(matrix);
for (int i = 0, j = 0, im = tt.length, jm = tt[0].length; i < im; i++) {
System.out.print("{");
for (j = 0; j < jm; j++) {
System.out.print(tt[i][j]);
if (j < jm - 1) {
System.out.print(",");
}
}
if (i < im - 1) {
System.out.print(",");
}
System.out.println("}");
}
} public static float[][] g(final float[][] ftem) {
float[][] tem = new float[ftem.length][];
System.arraycopy(ftem, 0, tem, 0, tem.length);
for (int i = 0, im = tem.length, lm = tem[0].length; i < im; i++) {
for (int j = i + 1; j < im; j++) {
if(tem[j][i]==0)
continue;
float n = tem[i][i] / tem[j][i];
for (int k = i; k < lm; k++) {
tem[j][k] = -tem[j][k] * n + tem[i][i];
}
}
}
return tem;
}
public static void putarray(float array[][])
{
int i,j;
for(i=0;i <=n-1;i++){
for(j=0;j <=n;j++)
{
System.out.println(array[i][j]);
}
}
}
int i;
for(i=0;i <=n-1;i++)
{
t = array1[i];//你这里是把一个float[]数组给了一个float,这就是出错的原因
array1[i]= array2[i];//同上
array2[i] = t;问题3:exchange(matrix[i],matrix[k]);
//使用的时候参数类型要与上面一个类型,而且二维数组用法错误,需要后面一个[],matrix[i][],问题4:Gaosi g=new Gaosi(); //类名拼错
/**补全后的错误是数组越界,debug下就可以看到了
*/
/*看下这个是不是你想得出的结果
run:
{31.0,-13.0,0.0,0.0,0.0,-10.0,0.0,0.0,0.0,-15.0,}
{0.0,114.46154,9.538462,31.0,4.76923,31.0,31.0,31.0,31.0,95.38461,}
{0.0,0.0,508.71796,-12.717949,114.46154,114.46154,114.46154,114.46154,114.46154,-178.05127,}
{0.0,0.0,0.0,4527.59,-1017.43585,508.71796,508.71796,508.71796,50.871796,508.71796}
成功生成(总时间:0 秒)*/
package com;public class Gaosi
{
public static void main(String[] args) { float matrix[][] = {
{31, -13, 0, 0, 0, -10, 0, 0, 0, -15},
{-13, 35, -9, 0, -11, 0, 0, 0, 0, 27},
{0, -9, 31, -10, 0, 0, 0, 0, 0, -23},
{0, 0, -10, 79, -30, 0, 0, 0, -9, 0},};
// Main g = new Main();
// g.start();
float[][] tt = g(matrix);
for (int i = 0, j = 0, im = tt.length, jm = tt[0].length; i < im; i++) {
System.out.print("{");
for (j = 0; j < jm; j++) {
System.out.print(tt[i][j]);
if (j < jm - 1) {
System.out.print(",");
}
}
if (i < im - 1) {
System.out.print(",");
}
System.out.println("}");
}
} public static float[][] g(final float[][] ftem) {
float[][] tem = new float[ftem.length][];
System.arraycopy(ftem, 0, tem, 0, tem.length);
for (int i = 0, im = tem.length, lm = tem[0].length; i < im; i++) {
for (int j = i + 1; j < im; j++) {
if (tem[j][i] == 0) {
continue;
}
float n = tem[i][i] / tem[j][i];
for (int k = i; k < lm; k++) {
tem[j][k] = -tem[j][k] * n + tem[i][i];
}
}
}
return tem;
}
}