📄 example2_10.java
字号:
import java.applet.*;
import java.awt.*;
public class Example2_10 extends Applet
{ public static void QR(double[][] a,double[][] Q,int m,int n )
{int i,j,k,l=Math.max(m,n);
double[] t=new double[l];
double alpha,beta;
for(i=0;i<m;i++)
for(j=0;j<m;j++)
{if (i==j) Q[i][j]=1;
else Q[i][j]=0; }
for(k=0;k<Math.min(n,m);k++)
{ alpha=0;
for(l=k;l<m;l++)alpha+=a[l][k]*a[l][k];
alpha=Math.sqrt(alpha);
if(alpha==0)continue;
if(a[k][k]<0)alpha*=-1;
beta=(alpha+a[k][k])*alpha;
for(i=0;i<m;i++)
{t[i]=Q[i][k]*alpha;
for(l=k;l<m;l++)t[i]+=Q[i][l]*a[l][k];
}
for(i=0;i<m;i++)
{ Q[i][k]-=t[i]/alpha;
for(j=k+1;j<m;j++)Q[i][j]-=(t[i]*a[j][k]/beta);}
for(j=0;j<n;j++)
{t[j]=alpha*a[k][j];
for(l=k;l<m;l++)t[j]+=a[l][k]*a[l][j];
}
for(j=k+1;j<n;j++)a[k][j]-=t[j]/alpha;
for(i=k+1;i<m;i++)
for(j=k+1;j<n;j++)a[i][j]-=(a[i][k]*t[j]/beta);
for(l=k+1;l<m;l++)a[l][k]=0;
a[k][k]=-alpha;
}
}
public void paint(Graphics g)
{double[][] a={{1,1,-1},{2,1,0},{1,-1,0},{-1,2,1}};
double[][] Q=new double[4][4];
QR(a,Q,4,3);
g.drawString("Q=",10,20);
g.drawString(""+Q[0][0]+" "+Q[0][1]+" "+Q[0][2]+" "+Q[0][3],10,40);
g.drawString(""+Q[1][0]+" "+Q[1][1]+" "+Q[1][2]+" "+Q[1][3],10,60);
g.drawString(""+Q[2][0]+" "+Q[2][1]+" "+Q[2][2]+" "+Q[2][3],10,80);
g.drawString(""+Q[3][0]+" "+Q[3][1]+" "+Q[3][2]+" "+Q[3][3],10,100);
g.drawString("R=",10,120);
g.drawString(""+a[0][0]+" "+a[0][1]+" "+a[0][2],10,140);
g.drawString(""+a[1][0]+" "+a[1][1]+" "+a[1][2],10,160);
g.drawString(""+a[2][0]+" "+a[2][1]+" "+a[2][2],10,180);
g.drawString(""+a[3][0]+" "+a[3][1]+" "+a[3][2],10,200);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -