您的位置:首页 > 编程语言 > Java开发

Java之求逆矩阵

2016-03-04 19:39 330 查看
public class MatrixInverse {	public static double Det(double [][]Matrix,int N)//计算n阶行列式(N=n-1)	{		int T0;		int T1;		int T2;		double Num;		int Cha;		double [][] B;		if(N>0)		{			Cha=0;			B=new double;			Num=0;						if(N==1)			{				return Matrix[0][0]*Matrix[1][1]-Matrix[0][1]*Matrix[1][0];			}			for(T0=0;T0<=N;T0++)//T0循环			{				for(T1=1;T1<=N;T1++)//T1循环				{					for(T2=0;T2<=N-1;T2++)//T2循环					{						if(T2==T0)						{							Cha=1;													}						B[T1-1][T2]=Matrix[T1][T2+Cha];					}//T2循环					Cha=0;				}//T1循环				Num=Num+Matrix[0][T0]*Det(B,N-1)*Math.pow((-1),T0);			}//T0循环			return Num;		}		else if(N==0)		{			return Matrix[0][0];		}				return 0;	}public static double Inverse(double[][]Matrix,int N,double[][]MatrixC){	int T0;	int T1;	int T2;	int T3;	double [][]B;	double Num=0;	int Chay=0;	int Chax=0;	B=new double;	double add;	add=1/Det(Matrix,N);	for( T0=0;T0<=N;T0++)	{		for(T3=0;T3<=N;T3++)		{			for(T1=0;T1<=N-1;T1++)			{				if(T1<T0)				{					Chax=0;				}				else				{					Chax=1;				}				for(T2=0;T2<=N-1;T2++)				{					if(T2<T3)					{						Chay=0;					}					else					{						Chay=1;					}					B[T1][T2]=Matrix[T1+Chax][T2+Chay];				}//T2循环			}//T1循环			Det(B,N-1);			MatrixC[T3][T0]=Det(B,N-1)*add*(Math.pow(-1, T0+T3));					}	}	return 0;}public static void main(String[]args)//测试{	double[][] TestMatrix = {			   {1, 22, 34,22}, 			   {1, 11,5,21} ,			   {0,1,5,11},			   {7,2,13,19}};	 	double[][]InMatrix=new double[4][4];	Inverse(TestMatrix,3,InMatrix);	String str=new String("");		for(int i=0;i<4;i++)	{		for(int j=0;j<4;j++)		{	        String strr=String.valueOf(InMatrix[i][j]);	        str+=strr;	        str+=" ";		}		str+="\n";	}   System.out.println(str);	}}
运行结果:
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: