?? example2_2.java
字號(hào):
import java.applet.*;
import java.awt.*;
public class Example2_2 extends Applet
{
public static void Mrinv(double[][] a,int n)
{int i,j,row,col,k;
double max,temp;
int[] p=new int[n];
double[][] b=new double[n][n];
for(i=0;i<n;i++){p[i]=i;b[i][i]=1;}
for(k=0;k<n;k++)
{//找主元
max=0;row=col=i;
for(i=k;i<n;i++)
for(j=k;j<n;j++)
{temp=Math.abs(b[i][j]);
if(max<temp){max=temp;row=i;col=j;}
}
//交換行列,將主元調(diào)整到k行k列上
if(row!=k)
{for(j=0;j<n;j++)
{temp=a[row][j];a[row][j]=a[k][j];a[k][j]=temp;
temp=b[row][j];b[row][j]=b[k][j];b[k][j]=temp;}
}
if(col!=k)
{for(i=0;i<n;i++)
{temp=a[i][col];a[i][col]=a[i][k];a[i][k]=temp;}
j=p[col];p[col]=p[k];p[k]=j;
}
//處理
for(j=k+1;j<n;j++)a[k][j]/=a[k][k];
for(j=0;j<n;j++)b[k][j]/=a[k][k];
a[k][k]=1;
for(j=k+1;j<n;j++)
{for(i=0;i<k;i++)a[i][j]-=a[i][k]*a[k][j];
for(i=k+1;i<n;i++)a[i][j]-=a[i][k]*a[k][j];}
for(j=0;j<n;j++)
{for(i=0;i<k;i++)b[i][j]-=a[i][k]*b[k][j];
for(i=k+1;i<n;i++)b[i][j]-=a[i][k]*b[k][j];}
for(i=0;i<k;i++)a[i][k]=0;
a[k][k]=1;
}
//恢復(fù)行列次序;
for(j=0;j<n;j++)
{for(i=0;i<n;i++)a[p[i]][j]=b[i][j];}
}
public void Mrcheng(double[][] a,double[][] b,double[][]c,int m,int n,int l)
{double[][] d=new double[m][l];
int i,j,k;
for(i=0;i<m;i++)
for(j=0;j<l;j++)
{d[i][j]=0;
for(k=0;k<n;k++)d[i][j]+=a[i][k]*b[k][j];}
for(i=0;i<m;i++)
for(j=0;j<l;j++)
c[i][j]=d[i][j];
}
public void paint(Graphics g)
{double[][] a={{0.2368,0.2471,0.2568,1.2671},{1.1161,0.1254,0.1397,0.149},
{0.1582,1.1675,0.1768,0.1871},{0.1968,0.2071,1.2168,0.2271}};
double[][] b=new double[4][4];
int i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
b[i][j]=a[i][j];
g.drawString("A=",10,20);
for(i=0;i<4;i++)
g.drawString(""+a[i][0]+" "+a[i][1]+" "+a[i][2]+" "+a[i][3],10,40+20*i);
Mrinv(a,4);
g.drawString("A的逆陣B為",10,120);
for(i=0;i<4;i++)
g.drawString(""+a[i][0]+" "+a[i][1]+" "+a[i][2]+" "+a[i][3],10,140+20*i);
Mrcheng(a,b,a,4,4,4);
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
if(Math.abs(a[i][j])<1e-10)a[i][j]=0;
if(Math.abs(a[i][i]-1)<1e-10)a[i][i]=1;}
g.drawString("A*B=",10,220);
for(i=0;i<4;i++)
g.drawString(""+a[i][0]+" "+a[i][1]+" "+a[i][2]+" "+a[i][3],10,240+20*i);
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -