矩阵行列式-高斯消元法实现

本文介绍如何使用高斯消元法计算矩阵的行列式,并提供了一段C#代码实现。通过行变换将矩阵转换为上三角矩阵后,可以直接计算对角线元素的乘积得到行列式的值。

数学基础之矩阵系列
1. 矩阵求逆-高斯消元法介绍及其实现
2. 矩阵行列式-高斯消元法实现


矩阵求逆-高斯消元法介绍及其实现一文中,使用高斯消元法求一个方阵的逆,根据该思想,本文给出高斯消元法求矩阵行列式的过程。

与求逆过程不同,求行列式时,在做行变换的过程中不需要添加单位矩阵构成增广矩阵,同时,当经过从上到下的行变换,将矩阵变成上三角矩阵后不需要再进行从下到上的行变换过程,因为对于一个上三角矩阵,可直接将矩阵的对角元素相乘得到矩阵的行列式。

下面是该过程的C#实现:

        private static  readonly double eps = 1e-6;
        public static double Det(double[,] matrix, int dim)
        {

            double[,] mat = new double[dim, dim];
            for(int i = 0;i < dim; i++)
            {
                for(int j = 0; j < dim; j++)
                {
                    mat[i, j] = matrix[i, j];
                }
            }

            for (int i = 0; i < dim; i++)
            {
                if (Math.Abs(mat[i, i]) < eps)
                {
                    int j = -1;
                    for (j = i + 1; j < dim; j++)
                    {
                        if (Math.Abs(mat[j, i]) > eps) break;
                    }
                    if (j == dim) return 0;
                    for (int r = i; r < dim; r++)
                    {
                        mat[i, r] += mat[j, r];
                    }
                }

                for (int j = i + 1; j < dim; j++)
                {
                    double e = -1 * (mat[j, i] / mat[i, i]);
                    for (int r = i; r < dim; r++)
                    {
                        mat[j, r] += e * mat[i, r];
                    }
                }
            }

            double det = 1.0;
            for (int i = 0; i < dim; i++) det *= mat[i, i];
            return det;

        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值