矩阵求逆的c#代码实现 您所在的位置:网站首页 如何求解一个矩阵的逆矩阵 矩阵求逆的c#代码实现

矩阵求逆的c#代码实现

2023-09-19 01:27| 来源: 网络整理| 查看: 265

矩阵A为n阶方阵,若存在n阶矩阵B,使得矩阵A、B的乘积为单位阵,则称A为可逆阵,B为A的逆矩阵。若方阵的逆阵存在,则称为可逆矩阵或非奇异矩阵,且其逆矩阵唯一。

矩阵可逆=矩阵非奇异=矩阵对应的行列式不为0=满秩=行列向量线性无关

求逆矩阵的方法: 1.逆矩阵等于伴随矩阵乘以行列式值的负一次方,程序实现的计算量较大 2.高斯消元法 对(A E)作初等变换,将A化为单位阵 ,单位矩阵E就化为A-1

编程中的问题: 在计算中判断矩阵是否满足可逆的条件,避免分母为0的情况

可以在这里快速检验计算结果:云算网矩阵在线求逆

c#

我是用[[1,2,3],[2,3,4],[2,3,4]]检查的 计算结果没有问题

public double[,] MatInver(double[,] n) //矩阵求逆函数 元组法改进 { //前提判断: 是否为方阵 是否可逆 int m = n.GetLength(0); double[,] q = new double[m, m]; //求逆结果 int i, j, k;//计数君 double u, temp;//临时变量 //初始单位阵 for (i = 0; i for (i = 0; i if (n[j, i] != 0) //不为0的元素 { k = j; break; } } if (k != i) //如果没有发生交换: 情况1 下方元素也全是0 { for (j = 0; j n[i, j] = n[i, j] / u; //分母不为0 q[i, j] = q[i, j] / u; //伴随矩阵 } for (k = i + 1; k n[k, j] = n[k, j] - u * n[i, j]; //下方的每一行减去该行的倍数 使左下角矩阵化为0 q[k, j] = q[k, j] - u * q[i, j]; //左下伴随矩阵 } } } u = n[m - 1, m - 1]; //最后一行最后一个元素 if (u == 0) //条件2 初步计算后最后一行全是0 在只上步骤中没有计算最后一行,所以可能会遗漏 MessageBox.Show("不可逆矩阵", "ERROR", MessageBoxButtons.OK); n[m - 1, m - 1] = 1; for (j = 0; j for (k = i - 1; k >= 0; k--) { u = n[k, i]; for (j = 0; j


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有