最近複習行列式知識的時候,發現如何求解數字行列式的值比較重要,寫了一個通過基本行變換把行列式變換爲上三角行列式,然後利用對角線求值:
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
請按任意鍵繼續. . .
*/