⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example2_3.java

📁 Java程序100例
💻 JAVA
字号:
import java.applet.*;
import java.awt.*;
class Complex
{ double real=0,image=0;
  public static void init(double a,double b,Complex c)
  {c.real=a;c.image=b;}
 public static void swap(Complex a,Complex b)
 {double u;
  u=a.real;a.real=b.real;b.real=u;
  u=a.image;a.image=b.image;b.image=u;}
public static double abs(Complex a)
{double x,y,r;
  x=Math.abs(a.real);y=Math.abs(a.image);
   if(x>y)r=x*Math.sqrt(1+(y/x)*(y/x));
   else r=y*Math.sqrt(1+(x/y)*(x/y));
  return r;
  }
 public static void jia(Complex a,Complex b,Complex c)
  { c.real=a.real+b.real;
	c.image=a.image+b.image;
  }

  public static void jian(Complex a,Complex b,Complex c)
  { c.real=a.real-b.real;
  	c.image=a.image-b.image;
  }
  public static void cheng(Complex a,Complex b,Complex c)
  { double p,q,s;
    c.real=a.real*b.real-a.image*b.image;
    c.image=a.real*b.image+a.image*b.real;
  }
  public static void chu(Complex a,Complex b,Complex c)
  { double w;
    if(Math.abs(b.real)>Math.abs(b.image))
    {w=b.real+b.image*(b.image/b.real);
     c.real=(a.real+a.image*(b.image/b.real))/w;
     c.image=(a.image-a.real*(b.image/b.real))/w;
    }
    else
	{w=b.real*(b.real/b.image)+b.image;
	 c.real=(a.real*(b.real/b.image)+a.image)/w;
	 c.image=(a.image*(b.real/b.image)-a.real)/w;
    }
 }
 public static void equal(Complex a,Complex b)
 {a.real=b.real;a.image=b.image;}
}

public class Example2_3 extends Applet
{
  public static void  Mcinv(Complex[][] a,int n)
  {int i,j,row,col,k;
   double max,temp;
   int[] p=new int[n];
   Complex[][] b=new Complex[n][n];
   Complex ctemp=new Complex();
   for(i=0;i<n;i++)p[i]=i;
   for(i=0;i<n;i++)
    for(j=0;j<n;j++)
     {b[i][j]=new Complex();
      if(i!=j)Complex.init(0,0,b[i][j]);
	  else Complex.init(1,0,b[i][i]);}

   for(k=0;k<n;k++)
   {//找主元
    max=0;row=col=k;
    for(i=k;i<n;i++)
     for(j=k;j<n;j++)
     {temp=Complex.abs(a[i][j]);
      if(max<temp){max=temp;row=i;col=j;}
	  }
	//交换行列,将主元调整到k行k列上
	if(row!=k)
	{for(j=0;j<n;j++)
	 {Complex.swap(a[row][j],a[k][j]);
	  Complex.swap(b[row][j],b[k][j]);}
	 }
	 if(col!=k)
	 {for(i=0;i<n;i++)Complex.swap(a[i][col],a[i][k]);
	  j=p[col];p[col]=p[k];p[k]=j;}
	 //处理
	 for(j=k+1;j<n;j++){Complex.chu(a[k][j],a[k][k],ctemp);Complex.equal(a[k][j],ctemp);}
	 for(j=0;j<n;j++){Complex.chu(b[k][j],a[k][k],ctemp);Complex.equal(b[k][j],ctemp);}
	 for(j=k+1;j<n;j++)
	 {for(i=0;i<k;i++){Complex.cheng(a[i][k],a[k][j],ctemp);Complex.jian(a[i][j],ctemp,a[i][j]);}
	  for(i=k+1;i<n;i++){Complex.cheng(a[i][k],a[k][j],ctemp);Complex.jian(a[i][j],ctemp,a[i][j]);}
     }
	 for(j=0;j<n;j++)
	 {for(i=0;i<k;i++){Complex.cheng(a[i][k],b[k][j],ctemp);Complex.jian(b[i][j],ctemp,b[i][j]);}
	  for(i=k+1;i<n;i++){Complex.cheng(a[i][k],b[k][j],ctemp);Complex.jian(b[i][j],ctemp,b[i][j]);}
     }
     for(i=0;i<n;i++)Complex.init(0,0,a[i][k]);
     Complex.init(1,0,a[k][k]);
  }
 //恢复行列次序;
 for(j=0;j<n;j++)
  for(i=0;i<n;i++)Complex.equal(a[p[i]][j],b[i][j]);
 }

 public void Mccheng(Complex[][] a,Complex[][] b,Complex[][] c,int m,int n,int l)
 {Complex[][] d=new Complex[m][l];
  Complex temp=new Complex();
  int i,j,k;
  for(i=0;i<m;i++)
   for(j=0;j<l;j++)
   {d[i][j]=new Complex();
    for(k=0;k<n;k++){Complex.cheng(a[i][k],b[k][j],temp);Complex.jia(d[i][j],temp,d[i][j]);}
   }
  for(i=0;i<m;i++)
   for(j=0;j<l;j++)
    Complex.equal(c[i][j],d[i][j]);
}

public String MCrowtoString(Complex[][] 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].real)<1e-8)a[i][j].real=0;
   if(Math.abs(a[i][j].image)<1e-8)a[i][j].image=0;
   s1=s1+"(";s2=String.valueOf(a[i][j].real);
   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+")+(";
   s2=String.valueOf(a[i][j].image);
   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=s1+s2+")I  ";
 }
 return s1;
}

public void paint(Graphics g)
{double[][] ar={{0.2368,0.2471,0.2568},{1.1161,0.1254,0.1397},{0.1582,1.1675,0.1768}};
 double[][] ai={{0.1345,0.1678,0.1825},{1.2671,0.2017,-0.7024},{-0.2836,-1.1977,0.3558}};
 Complex[][] a=new Complex[3][3];
 Complex[][] b=new Complex[3][3];
 String s1="";
 int i,j;
 for(i=0;i<3;i++)
  for(j=0;j<3;j++)
   {a[i][j]=new Complex();b[i][j]=new Complex();
    Complex.init(ar[i][j],ai[i][j],a[i][j]);Complex.equal(b[i][j],a[i][j]);}
 g.drawString("A=",10,20);
 for(i=0;i<3;i++)
  { s1=MCrowtoString(a,i,3);g.drawString(s1,10,40+20*i);}
 Mcinv(a,3);
 g.drawString("A的逆阵B为",10,100);
 for(i=0;i<3;i++)
  { s1=MCrowtoString(a,i,3);g.drawString(s1,10,120+20*i);}
 Mccheng(b,a,a,3,3,3);
 g.drawString("A*B=",10,180);
 for(i=0;i<3;i++)
  { s1=MCrowtoString(a,i,3);g.drawString(s1,10,200+20*i);}
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -