Excel·VBA矩阵、求逆矩阵、解线性方程组 您所在的位置:网站首页 sas求逆矩阵 Excel·VBA矩阵、求逆矩阵、解线性方程组

Excel·VBA矩阵、求逆矩阵、解线性方程组

2024-07-06 09:18| 来源: 网络整理| 查看: 265

初等变换法求逆矩阵

vba内置函数MInverse可以计算矩阵的逆矩阵,《Office VBA 参考-WorksheetFunction.MInverse 方法 (Excel)》

初等变换法代码思路 对于一个3x3矩阵(下图3x3红色部分)右侧扩充单位矩阵(下图3x3黑色部分),abc为行号

在这里插入图片描述 从左往右依次将1-3列非左对角线部分的数值消为0:下图“第1次”将第1列消为0、“第2次”将第2列消为0、“第3次”将第3列消为0。每次计算将固定不变的行值x系数-本行原值=本行现值 系数的计算方法:第n列消0、得到第m行时,系数=(n,m)/(n,n)。取上一次的数组值 如“第1次”,n = 1、m = 2时,系数 = 1/1 = 1;n = 1、m = 3时,系数 = -1/1 = -1 如“第2次”,n = 2、m = 1时,系数 = -4/1 = -4;n = 2、m = 3时,系数 = -2/1 = -2

在这里插入图片描述 然后检查1-3列左对角线部分的值是否为1,不为1的转为1,对应第4次 值不为1的,整行除该值本身 最后得到左侧为单位矩阵(上图第4次3x3黑色部分)右侧为逆矩阵(上图第4次3x3红色部分),输出右侧逆矩阵即可

Function inverse_matrix(ByVal arr) '初等变换法,返回数组矩阵的逆矩阵;arr数组矩阵必须为正方形数值数组 Dim m&, i&, j&, c&, done As Boolean, coef# arr = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arr)) '转为从1开始计数 If UBound(arr) - LBound(arr) UBound(arr, 2) - LBound(arr, 2) Then Debug.Print "非正方形数组": Exit Function m = UBound(arr) - LBound(arr) + 1: ReDim mrr(1 To m, 1 To m * 2): ReDim result(1 To m, 1 To m) For i = 1 To m For j = 1 To m * 2 If j 8; 10}] crr = WorksheetFunction.MMult(WorksheetFunction.MInverse(arr), brr) For Each c In crr Debug.Print c Next End Sub

结果为11、-3 同理,方程组

x+2y+3z=14 x-y+4z=11 2x+3y-z=5 arr = [{1, 2, 3; 1, -1, 4; 2, 3, -1}] brr = [{14; 11; 5}]

结果为1、2、3

参考资料 《B站-求逆矩阵的三种方法》 《知乎-矩阵为什么能解方程?》



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

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