⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module1.bas

📁 含有矩阵加、减、乘、除及转置、求逆运算等等
💻 BAS
字号:
Attribute VB_Name = "矩阵运算"
Option Explicit
Public Function multiplication(s As Integer, n As Integer, m As Integer, a() As Double, b() As Double, x() As Double)
'矩阵乘法
's为a()的行,n为a()的列,m为b()的列,a() * b()
Dim i, j, k As Integer
For i = 1 To s
    For j = 1 To m
        For k = 1 To n
            x(i, j) = x(i, j) + a(i, k) * b(k, j)
        Next k
    Next j
Next i
End Function

Public Function addition(n As Integer, m As Integer, a() As Double, b() As Double)
'矩阵加法
'n为行,m列,a() +b()
Dim i, j As Integer
For i = 1 To n
    For j = 1 To n
        x(i, j) = a(i, j) + b(i, j)
    Next j
Next i
End Function

Public Function subtraction(n As Integer, m As Integer, a() As Double, b() As Double, x() As Double)
'矩阵减法
'n为行,m列,a() - b()
Dim i, j As Integer
For i = 1 To n
    For j = 1 To n
        x(i, j) = a(i, j) - b(i, j)
    Next j
Next i
End Function
Public Function transpose(n As Integer, m As Integer, a() As Double, x() As Double)
'矩阵转置
'n为行,m列,a()的转置
Dim i, j As Integer
For i = 1 To m
    For j = 1 To n
        x(i, j) = a(j, i)
    Next j
Next i
End Function

Public Function inverse(n As Integer, aa() As Double, e() As Double)
'矩阵求逆
'n为行,m列,a()的逆
Dim a() As Double
ReDim a(1 To n, 1 To n) As Double
Dim i, j, k As Integer
Dim tempnum As Integer

For i = 1 To n
    For j = 1 To n
        a(i, j) = aa(i, j)
        If i = j Then
            e(i, j) = 1
        Else
        End If
    Next j
Next i

'--------------对系数矩阵进行处理
For i = 1 To n
    If a(i, i) = 0 Then
        For j = i To n
            If a(j, i) <> 0 Then
                tempnum = j
            Exit For
            End If
        Next j
        
        For j = 1 To n
            e(i, j) = e(i, j) + e(tempnum, j)
            a(i, j) = a(i, j) + a(tempnum, j)
        Next j
    End If

'------------------------消去,变成上三角
    For j = i To n
        If j = i Then
            For k = n To 1 Step -1
                e(j, k) = e(j, k) / a(i, i)
            Next k
            For k = n To 1 Step -1
                a(j, k) = a(j, k) / a(i, i)
            Next k
        Else
            For k = n To 1 Step -1
                e(j, k) = e(j, k) - e(i, k) * a(j, i) / a(i, i)
            Next k
            For k = n To 1 Step -1
                a(j, k) = a(j, k) - a(i, k) * a(j, i) / a(i, i)
            Next k
        End If
    Next j
Next i

'-------------------------消去,变成单位矩阵
For i = n To 1 Step -1
    For j = 1 To i - 1
        For k = 1 To n
            e(j, k) = e(j, k) - e(i, k) * a(j, i)
        Next k
    Next j
Next i

End Function














⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -