📄 example3_4.java
字号:
import corejava.*;
public class Example3_4
{
public static double GaussSolve(double[][] a,double[][] b,double[][] c,int n,int m)
{ int i,j,k,row,colunm;
double temp,max,d=1;
int[] p=new int[n];
for(i=0;i<n;i++)p[i]=i;
for(i=0;i<n-1;i++)
{ //找主元
row=i;colunm=i;
max=Math.abs(a[i][i]);
for(j=i;j<n;j++)
for(k=i;k<n;k++)
{temp=Math.abs(a[j][k]);
if(temp>max){max=temp;row=j;colunm=k;}
}
if (max==0){return 0;}
//第row行、第i行互换
if(row!=i)
{ for(k=i;k<n;k++)
{temp=a[i][k];a[i][k]=a[row][k];a[row][k]=temp;}
for(k=0;k<m;k++)
{temp=b[i][k];b[i][k]=b[row][k];b[row][k]=temp;}
}
//第column列、第i列互换
if(colunm!=i)
{ for(j=0;j<n;j++)
{temp=a[j][colunm];a[j][colunm]=a[j][i];a[j][i]=temp;}
k=p[i];p[i]=p[colunm];p[colunm]=k;
}
d*=a[i][i];
//第i行归一化
for(k=i+1;k<n;k++)a[i][k]/=a[i][i];
for(k=0;k<m;k++)b[i][k]/=a[i][i];
a[i][i]=1;
//消元
for(j=i+1;j<n;j++)
{ for(k=i+1;k<n;k++)a[j][k]-=a[j][i]*a[i][k];
for(k=0;k<m;k++)b[j][k]-=a[j][i]*b[i][k];
a[j][i]=0;
}
}
d*=a[n-1][n-1];
//回代
for(k=0;k<m;k++)
{b[n-1][k]/=a[n-1][n-1];
for(i=n-2;i>=0;i--)
for(j=i+1;j<n;j++)
b[i][k]-=a[i][j]*b[j][k];
}
//调整次序
for(i=0;i<n;i++)
for(j=0;j<m;j++)
c[p[i]][j]=b[i][j];
return d;
}
public static boolean GaussComplex(double[][] a,double[][] b,double[] c,double[] d, int n)
{ double[][] e=new double[2*n][2*n];
double[][] x=new double[2*n][1];
double[][] y=new double[2*n][1];
double t;
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{e[i][j]=a[i][j];
e[n+i][n+j]=a[i][j];
e[i][n+j]=-b[i][j];
e[n+i][j]=b[i][j];
x[i][0]=c[i];
x[n+i][0]=d[i];
}
t=GaussSolve(e,x,y,2*n,1);
if (t==0)return false;
for(i=0;i<n;i++)
{c[i]=y[i][0];d[i]=y[n+i][0];}
return true;
}
public static void main(String[] args)
{double[][] a ={{1,3,2,13},{7,2,1,-2},{9,15,3,-2},{-2,-2,11,5}};
double[][] b ={{3,-2,1,6},{-2,7,5,8},{9,-3,15,1},{-2,-2,7,6}};
double[] c={2,7,3,9};
double[] d={1,2,-2,3};
int i,j;
if (GaussComplex(a,b,c,d,4))
{ for(i=0;i<4;i++)
{Format.printf("x%d=",i+1);
Format.printf("%f",c[i]);
if(d[i]<=0)Format.printf("%fI\n",d[i]);
else Format.printf("+%fI\n",d[i]);
}
}
else
{System.out.print("系数矩阵奇异\n");}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -