行列式

行列式在数学中,是由解线性方程组产生的一种算式,是取自不同行不同列的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;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值