本文实例讲述了C#使用加边法计算行列式的值。分享给大家供大家参考。具体如下:
1.函数
行列式的值等于其第一行各元素乘以各自对应的代数余子式之积的和。
(注:本代码仅提供一种思路,并不代表最优解)
/// <summary>/// 递归计算行列式的值/// </summary>/// <param name="matrix">矩阵</param>/// <returns></returns>public static double Determinant(double[][] matrix){ //二阶及以下行列式直接计算 if (matrix.Length == 0) return 0; else if (matrix.Length == 1) return matrix[0][0]; else if (matrix.Length == 2) { return matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]; } //对第一行使用“加边法”递归计算行列式的值 double dSum = 0,dSign = 1; for (int i = 0; i < matrix.Length; i++) { double[][] matrixTemp = new double[matrix.Length - 1][]; for (int count = 0; count < matrix.Length - 1; count++) { matrixTemp[count] = new double[matrix.Length - 1]; } for (int j = 0; j < matrixTemp.Length; j++) { for (int k = 0; k < matrixTemp.Length; k++) { matrixTemp[j][k] = matrix[j + 1][k >= i ? k + 1 : k]; } } dSum += (matrix[0][i] * dSign * Determinant(matrixTemp)); dSign = dSign * -1; } return dSum;}
2.Main函数调用
static voID Main(string[] args){ //二阶行列式 -2 double[][] matrix1 = new double[][] { new double[] { 1,2 },new double[] { 3,4 } }; Console.Writeline(Determinant(matrix1)); //三阶行列式 -4 double[][] matrix2 = new double[][] { new double[] { 2,1 },new double[] { 1,-4,-1 },new double[] { -1,8,3 } }; Console.Writeline(Determinant(matrix2)); //四阶行列式 -21 double[][] matrix3 = new double[][] { new double[] { 1,2,3,5,0 },new double[] { 0,1,6 },4 } }; Console.Writeline(Determinant(matrix3)); Console.Readline();}
3.运行结果
希望本文所述对大家的C#程序设计有所帮助。
总结以上是内存溢出为你收集整理的C#使用加边法计算行列式的值全部内容,希望文章能够帮你解决C#使用加边法计算行列式的值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)