Java之行列式求值

public class MatrixDet {

	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[N][N];
			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 void main(String[]args)//测试
    {
		double[][] TestMatrix = {
				   {1, 22, 34,22}, 
				   {1, 11,5,21} ,
				   {0,1,5,11},
				   {7,2,13,19}};	 
		String str=String.valueOf(Det(TestMatrix,3));//
       System.out.println(str);
   	
    }
}
 

运行结果:




推荐文章:那些年,做的几个应用


  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解答这个问题。 程序流程及功能模块设计: 1. 用户输入矩阵阶数,并创建相应大小的矩阵。 2. 提示用户输入矩阵的元素,并将元素存储到矩阵中。 3. 提供菜单选项给用户选择进行的运算:加法、减法、乘法、求行列式。 4. 根据用户选择,调用相应的功能模块进行运算。 5. 运算完成后,输出结果。 功能模块设计: 1. 加法模块:遍历两个矩阵对应位置的元素相加,将结果存储到一个新的矩阵中。 2. 减法模块:遍历两个矩阵对应位置的元素相减,将结果存储到一个新的矩阵中。 3. 乘法模块:使用嵌套循环,按照矩阵乘法规则计算相应位置上的元素,并将结果存储到一个新的矩阵中。 4. 求行列式模块:使用递归方法,根据行列式的定义计算行列式。 下面是一个Java程序示例: ```java import java.util.Scanner; public class MatrixOperations { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入矩阵的阶数:"); int n = scanner.nextInt(); // 创建矩阵 int[][] matrix = new int[n][n]; // 输入矩阵元素 System.out.println("请输入矩阵的元素:"); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { matrix[i][j] = scanner.nextInt(); } } // 菜单选项 System.out.println("请选择要进行的运算:"); System.out.println("1. 矩阵加法"); System.out.println("2. 矩阵减法"); System.out.println("3. 矩阵乘法"); System.out.println("4. 求行列式"); int choice = scanner.nextInt(); switch (choice) { case 1: // 调用加法模块 int[][] result = matrixAddition(matrix, matrix); // 输出结果 printMatrix(result); break; case 2: // 调用减法模块 result = matrixSubtraction(matrix, matrix); // 输出结果 printMatrix(result); break; case 3: // 调用乘法模块 result = matrixMultiplication(matrix, matrix); // 输出结果 printMatrix(result); break; case 4: // 调用求行列式模块 int determinant = calculateDeterminant(matrix); // 输出结果 System.out.println("行列式为:" + determinant); break; default: System.out.println("无效选择"); } scanner.close(); } // 加法模块 public static int[][] matrixAddition(int[][] a, int[][] b) { int n = a.length; int[][] result = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { result[i][j] = a[i][j] + b[i][j]; } } return result; } // 减法模块 public static int[][] matrixSubtraction(int[][] a, int[][] b) { int n = a.length; int[][] result = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { result[i][j] = a[i][j] - b[i][j]; } } return result; } // 乘法模块 public static int[][] matrixMultiplication(int[][] a, int[][] b) { int n = a.length; int[][] result = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { result[i][j] += a[i][k] * b[k][j]; } } } return result; } // 求行列式模块 public static int calculateDeterminant(int[][] matrix) { int n = matrix.length; if (n == 1) { return matrix[0][0]; } else if (n == 2) { return matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]; } else { int determinant = 0; for (int i = 0; i < n; i++) { int[][] subMatrix = new int[n - 1][n - 1]; for (int j = 1; j < n; j++) { for (int k = 0; k < n; k++) { if (k < i) { subMatrix[j - 1][k] = matrix[j][k]; } else if (k > i) { subMatrix[j - 1][k - 1] = matrix[j][k]; } } } determinant += matrix[0][i] * calculateDeterminant(subMatrix) * (int)Math.pow(-1, i); } return determinant; } } // 打印矩阵 public static void printMatrix(int[][] matrix) { int n = matrix.length; System.out.println("结果矩阵为:"); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(); } } } ``` 这个示例程序可以让用户输入指定阶数的矩阵,并实现矩阵的加、减、乘、求行列式等运算。根据用户选择的运算,调用相应的功能模块进行计算,并输出结果矩阵或行列式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值