📄 matrix_eigenvalue.java
字号:
import java.math.*;
public class Matrix_Eigenvalue {
public static double[] Eigenvalue(double[][] A,double[][] Q,int n){
double e=10e-10;
int count=0;
double diff=0.0001;
int i,j;
double[][] R;
while(diff>e && count<10000){
diff=0;count++;
QR_Decomposition qr=new QR_Decomposition();
GetArray getarray=qr.QR(A,Q,n); //QR Decomposition
R=getarray.array1;
Q=getarray.array2;
// Matrix_Transpose transpose=new Matrix_Transpose();
// Q=transpose.Tranpose(Q, n);
Matrix_Production production=new Matrix_Production();
A=production.Production(Q, R, n);
for(i=0;i<n;i++){
for(j=0;j<n;j++)
System.out.print(A[i][j]+" ");
System.out.println();
}
for(i=0;i<n;i++)
for(j=0;j<=i-1;j++){
if(Math.abs(A[i][j]) >diff)
diff=Math.abs(A[i][j]);
}
}
double[] A_Eigenvalue=new double[20];
for(i=0;i<n;i++)
A_Eigenvalue[i]=A[i][i];
System.out.println(count);
System.out.println(diff);
System.out.println("------");
return A_Eigenvalue;
}
public static void main(String[] args){
double[][] A={{1,1},{-3,1}};
double[][] Q={{1,0},{0,1}};
double[][] R= new double[5][5];
double[][] C= new double[5][5];
int n=A.length;
int i,j,k;
double[] E=Eigenvalue(A,Q,n);
for(i=0;i<n;i++)
System.out.println(E[i]+" ");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -