程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#應用加邊法盤算行列式的值

C#應用加邊法盤算行列式的值

編輯:C#入門知識

C#應用加邊法盤算行列式的值。本站提示廣大學習愛好者:(C#應用加邊法盤算行列式的值)文章只能為提供參考,不一定能成為您想要的結果。以下是C#應用加邊法盤算行列式的值正文


本文實例講述了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, 0, 1 },
    new double[] { 1, -4, -1 },
    new double[] { -1, 8, 3 }
  };
  Console.WriteLine(Determinant(matrix2));
  //四階行列式 -21
  double[][] matrix3 = new double[][]
  {
    new double[] { 1, 2, 0, 1 },
    new double[] { 1, 3, 5, 0 },
    new double[] { 0, 1, 5, 6 },
    new double[] { 1, 2, 3, 4 }
  };
  Console.WriteLine(Determinant(matrix3));
  Console.ReadLine();
}

3.運轉成果

願望本文所述對年夜家的C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved