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

📄 matrix.bas

📁 PQ分解法
💻 BAS
字号:
Attribute VB_Name = "matrix"
Public Function IM(NoMatrix As Integer, matrix() As Double, ByRef IMatrix() As Double) '逆矩阵
    ReDim b(1 To NoMatrix) As Double
    ReDim xxx(1 To NoMatrix) As Double
    Dim temp() As Double
    ReDim temp(1 To NoMatrix, 1 To NoMatrix) As Double
    Dim Y As Integer
    Dim X As Integer
    For X = 1 To NoMatrix
        For Y = 1 To NoMatrix
            temp(X, Y) = matrix(X, Y)
        Next Y
    Next X
    
    Dim i As Integer
    Dim j As Integer
    For i = 1 To NoMatrix
        ReDim b(1 To NoMatrix) As Double
        ReDim xxx(1 To NoMatrix) As Double
        b(i) = 1
        For X = 1 To NoMatrix
            For Y = 1 To NoMatrix
              matrix(X, Y) = temp(X, Y)
            Next Y
        Next X
        Call Line_F(NoMatrix, matrix, b, xxx)
        For j = 1 To NoMatrix
            IMatrix(j, i) = xxx(j)
        Next j
    Next i
End Function

Public Function TransMatrix(NoMatrix As Integer, matrix() As Double, ByRef TMatrix() As Double) '方块矩阵的转置
    Dim i As Integer
    Dim j As Integer
    For i = 1 To NoMatrix
        For j = 1 To NoMatrix
            TMatrix(i, j) = matrix(j, i)
        Next j
    Next i
End Function

Public Function TransMatrixNo(mMatrix As Integer, nMatrix As Integer, matrix() As Double, ByRef TMatrix() As Double) '非方块矩阵的转置
    Dim i As Integer
    Dim j As Integer
    For i = 1 To nMatrix
        For j = 1 To mMatrix
            TMatrix(i, j) = matrix(j, i)
        Next j
    Next i
End Function

Public Function MatrixPlus(mMatrix As Integer, nMatrix As Integer, amatrix() As Double, bmatrix() As Double, ByRef xmatrix() As Double) '矩阵的相加
    Dim i As Integer
    Dim j As Integer
    For i = 1 To mMatrix
        For j = 1 To nMatrix
            xmatrix(i, j) = amatrix(i, j) + bmatrix(i, j)
        Next j
    Next i
End Function

Public Function MatrixSub(mMatrix As Integer, nMatrix As Integer, amatrix() As Double, bmatrix() As Double, ByRef xmatrix() As Double) '矩阵的相减
    Dim i As Integer
    Dim j As Integer
    For i = 1 To mMatrix
        For j = 1 To nMatrix
            xmatrix(i, j) = amatrix(i, j) - bmatrix(i, j)
        Next j
    Next i
End Function

Public Function MatrixNe(mMatrix As Integer, nMatrix As Integer, amatrix() As Double, ByRef xmatrix() As Double) '求负
    Dim i As Integer
    For i = 1 To mMatrix
        For j = 1 To nMatrix
            xmatrix(i, j) = -amatrix(i, j)
        Next j
    Next i
End Function

Public Function MatrixMul(mMatrix As Integer, nMatrix As Integer, lMatrix As Integer, amatrix() As Double, bmatrix() As Double, ByRef xmatrix() As Double) ''矩阵的相乘
    Dim i As Integer
    Dim j As Integer
    Dim q As Integer
    For i = 1 To mMatrix 'a行
        For j = 1 To lMatrix 'b列
            For q = 1 To nMatrix 'a列
                xmatrix(i, j) = xmatrix(i, j) + amatrix(i, q) * bmatrix(q, j)
            Next q
        Next j
    Next i
End Function

⌨️ 快捷键说明

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