📄 qr_decomposition.java
字号:
import java.math.*;
public class QR_Decomposition {
public static GetArray QR(double[][] a,double[][] q,int n ){
int i,j,k;
double[][] R=new double[5][5];
double c,s,sq;
double[] ai=new double[5];
double[] aj=new double[5];
double[] qi=new double[5];
double[] qj=new double[5];
Matrix_Transpose transpose=new Matrix_Transpose();
GetArray getarray=new GetArray();
for(j=0;j<n;j++)
for(i=j+1;i<n;i++){
sq=Math.sqrt(a[j][j]*a[j][j]+a[i][j]*a[i][j]);
c=a[j][j]/sq;
s=a[i][j]/sq;
for(k=0;k<n;k++){
aj[k]=c*a[j][k]+s*a[i][k];
qj[k]=c*q[j][k]+s*q[i][k];
ai[k]=-s*a[j][k]+c*a[i][k];
qi[k]=-s*q[j][k]+c*q[i][k];
}
for(k=0;k<n;k++){
a[j][k]=aj[k];
q[j][k]=qj[k];
a[i][k]=ai[k];
q[i][k]=qi[k];
}
}
R=a;
q=transpose.Tranpose(q, n);
getarray.GetData(R, q);
return getarray;
}
/* public static void main(String[] args){
double[][] A={{1,3},{3,1}};
double[][] Q={{1,0},{0,1}};
double[][] R= new double[5][5];
int n=A.length;
int i,j,k;
GetArray getarray=QR(A,Q,n); //QR Decomposition
R=getarray.array1;
Q=getarray.array2;
for(i=0;i<n;i++){
for(j=0;j<n;j++)
System.out.print(R[i][j]+" ");
System.out.println();
}
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -