【功能】计算n阶方阵所对应的行列式值
【方法说明】
用高斯消去法对方阵A进行一系列变换,使之成为上三角矩阵,其对角线上的各元素乘积即为行列式值。变换过程如下:
对于k=0,1,…,n-2做变换
为保证数值计算的稳定性,在实际变换过程中采用全选主元。
//行列式求值.cpp
#include <cmath>
#include <iostream>
using namespace std;
//a[n][n] 存放方阵A的元素。返回时被破坏
//函数返回行列式值
double sdet(double a[],int n)
{
int i,j,k,is,js,l,u,v;
double f,det,q,d;
if(n==2)
{
cout<<"对不起,还没解决2行2列的行列式"<<endl;
cout<<"详细的计算公式为:det=(a[1][1]+a[2][2])-(a[1][2]+a[2][1])" <<endl;
cout<<"下面的答案是错误的:";
}
f=1.0;det=1.0;
for(k=0; k<=n-2; k++)
{
q=0.0;
for (i=k; i<=n-1;i++)
for (j&