【編程】C#對角變換求行列式值

最近複習行列式知識的時候,發現如何求解數字行列式的值比較重要,寫了一個通過基本行變換把行列式變換爲上三角行列式,然後利用對角線求值:

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            double[,] date ={{1,1,3,1},{1,2,4,8},{1,3,3,27},{1,4,-3,64}};
            int n = 4;
            double temp = 1;
            show(date,n);
            int k = 1;
            for (int p = 0; p < n; p++)
            {
                for (int i = k; i < n; i++)
                {
                    for (int j = 0; j < n; j++)
                    {
                        if (j == p)  
                            temp = date[i, j];                       
                        date[i, j] = date[i, j] - (temp / date[k-1, k-1]) * date[k-1, j];                     
                    }
                }
                k++;
            }
            Console.WriteLine("***********************************");
            show(date,n);
            double sum = 1;
            for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                {
                    if (i == j)
                        sum = sum * date[i, j];
                }
            Console.WriteLine("The value of Det is:" + sum);
        }
        
        static void show(double [,]date,int n)
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                    Console.Write(date[i, j] + "\t");
                Console.Write("\n");
            }
        }
    }

}


/*
在vs2013中運行結果爲:

1       1       3       1
1       2       4       8
1       3       3       27
1       4       -3      64
***********************************
1       1       3       1
0       1       1       7
0       0       -2      12
0       0       0       -12
The value of Det is:24
請按任意鍵繼續. . .
*/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章