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

📄 matrix_eigenvalue.java

📁 用QR分解来求矩阵的全部特征值 包括:QR分解
💻 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 + -