行列式

来源:互联网 发布:淘宝网衣服货到付款 编辑:程序博客网 时间:2024/04/28 15:52

行列式在数学中,是由解线性方程组产生的一种算式,是取自不同行不同列的n个元素的乘积的代数和。

介绍两个概念:
主对角线:左上方与右下方组成的对角线。
次对角线:另一条对角线。(右上到左下)

介绍两个最重要的性质:
1、上三角行列式(下三角行列式)的值等于其主对角线上n个元素的乘积。
2、互换行列式的两行(列),行列式变号(正、负)。

1.二阶行列式

定义:由四个数排成两行两列的数表。
这里写图片描述
计算:二阶行列式的值就是主对角线相乘减去次对角线相乘得到的数值。

2.三阶行列式

基本同上。
这里写图片描述

但计算不同:
标准计算方法是在已给行列式的右边添加已给行列式的第一列、第二列。这时,三阶行列式的值等于主对角线的三个数乘积与 和主对角线平行的另外两个对角线上的数的积的和减去次对角线的三个数的乘积与和次对角线平行的对角线上三个数的积的和的差。

即上式= a1·b2·c3+b1·c2·a3+c1·a2·b3-a3·b2·c1-b3·c2·a1-c3·a2·b1。

n阶行列式

长的样子类比上面……

计算:
根据性质1,用‘化为三角形行列式法’计算。
怎么化呢?就是通过 行与行(列与列)之间的加减 或是 交换行行(列列)位置(变号)来使之成为这个样子:这里写图片描述
即左下方全为0。以上图为例,其值即为:(-1)×1×2 ×(-1)×(-1)×(-6)=12。

依据以上计算方式,贴出求 n阶行列式的代码:

//行列式的性质://1、上三角行列式(下三角行列式)的值等于其主对角线上n个元素的乘积。//2、互换行列式的两行(列),行列式变号。#include <iostream>using namespace std;int main(){    int i,j,m,n,s,t,k=1,N;    double a[2000][2000],f=1,c,x,sn;    cin>>N;    for (i=0;i<N;i++)    {        for (j=0;j<N;j++)        {            cin>>a[i][j];        }    }    for (i=0,j=0;i<N&&j<N;i++,j++)    {        if (a[i][j]==0)     //运用性质1时行列式的第一行第一列不能为零        {            for (m=i;a[m][j]==0;m++);            if (m==N)            {                sn=0;                cout<<"detA="<<sn<<endl;                return 0;            }            else            {                for (n=j;n<N;n++)   //交换行列式的行,保证行列式的第一行第一列不为零                    {                        c=a[i][n];                        a[i][n]=a[m][n];                        a[m][n]=c;                    }                k*=(-1);    //性质2            }        }        for (s=N-1;s>i;s--) //性质1        {            x=a[s][j];            for (t=j;t<N;t++)            {                a[s][t]-=a[i][t]*(x/a[i][j]);            }        }    }    for (i=0;i<N;i++)    {        f*=a[i][i];    }    sn=k*f;    cout<<"detA="<<sn<<endl;    return 0;}
0 0