📄 example2_5.java
字号:
import java.applet.*;
import java.awt.*;
public class Example2_5 extends Applet
{
public boolean Mtinv(int n,double[] T,double[] TT,double[][] B)
{int i,j,k;double a,s;
double[] c=new double[n];
double[] r=new double[n];
double[] p=new double[n];
// 矩阵非T型矩阵
if(T[0]==0) return false;
// 取初值
a = T[0];c[0]=TT[1]/T[0];r[0]=T[1]/T[0];
for(k=1;k<n-1;k++)
{s=-TT[k+1];
for(j=1;j<=k;j++)s+=c[k-j]*TT[j];
s/=a;
for(i=0;i<k;i++)p[i]=c[i]+s*r[k-i-1];
c[k]=-s;s=-T[k+1];
for(j=1;j<=k;j++)s+=r[k-j]*T[j];
s/=a;
for(i=0;i<k;i++){r[i]+=s*c[k-i-1];c[k-i-1]=p[k-i-1];}
r[k]=-s;a=T[0];
for(j=0;j<=k;j++)a-=T[j+1]*c[j];
if(a==0)return false;}
B[0][0]=1.0/a;
for(i=1;i<n;i++){B[0][i]=r[i-1]/a;B[i][0]=-c[i-1]/a;}
//计算逆矩阵中的各元素
for(i=1;i<n;i++)
for(j=1;j<n;j++)
{B[i][j]=B[i-1][j-1]-c[i-1]*B[0][j]+c[n-j-1]*B[0][n-i];}
return true;
}
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 String MRrowtoString(double[][] a,int i,int col)
{String s1="",s2="",s3="";
int j,k,l;
for(j=0;j<col;j++)
{if(Math.abs(a[i][j])<1e-8)a[i][j]=0;
s2=String.valueOf(a[i][j]);
k=s2.length();
l=s2.indexOf("E",k-4);
if(l==-1)s3="";
else s3=s2.substring(l);
if(k>10)s2=s2.substring(0,9)+s3;
s1+=s2+" ";
}
return s1;
}
public void paint(Graphics g)
{double[] T={10,5,4,3,2,1};
double[] TT={0,-1,-2,-3,-4,-5};
double[][] a=new double[6][6];
double[][] b=new double[6][6];
String s="";
int i,j;
for(i=0;i<6;i++)
{ for(j=i;j<6;j++)a[i][j]=T[j-i];
for(j=0;j<i;j++)a[i][j]=TT[i-j];}
g.drawString("A=",10,20);
for(i=0;i<6;i++)
{s=MRrowtoString(a,i,6);g.drawString(s,10,40+20*i);}
Mtinv(6,T,TT,b);
g.drawString("A的逆阵B为",10,160);
for(i=0;i<6;i++)
{s=MRrowtoString(b,i,6);g.drawString(s,10,180+20*i);}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -