新建 文本文档.txt

来自「两个矩阵相乘的源程序」· 文本 代码 · 共 107 行

TXT
107
字号
矩阵求逆 
Function Rect_yu(A() As Double, L As Long, C() As Double) As Double  '矩阵求逆
    Dim T0 As Double
    Dim T1 As Double
    Dim T2 As Double
    Dim T3 As Double
    Dim B() As Double
    Dim Num As Double
    Dim Chay As Long
    Dim Chax As Long
    Chay = 0
    Chax = 0
    ReDim B(L - 1, L - 1)
    Num = 0
    Dim add As Double
    add = 1 / Rect(A(), L)
    For T0 = 0 To L
    For T3 = 0 To L
        For T1 = 0 To L - 1
            If T1 < T0 Then
                Chax = 0
            Else
                Chax = 1
            End If
            For T2 = 0 To L - 1
                If T2 < T3 Then
                    Chay = 0
                Else
                    Chay = 1
                End If
                B(T1, T2) = A(T1 + Chax, T2 + Chay)
            Next T2
        Next T1
         'Rect(B(), L - 1) '调用求行列式值
        C(T3, T0) = Rect(B(), L - 1) * add * ((-1) ^ (T0 + T3))
    Next T3
    Next T0
End Function 


 '当矩阵为:
'2  3   4
'5  6   7
'8  9   0
'那么求逆得一个矩阵为:
'-2.1   1.2     -0.1
'1.87   -1.07   0.20
'-0.1   0.2     -0.1

'A() As Double为A(L,L)的矩阵

'当L=2时可定义为

Dim A(2, 2) As Double
A(0, 0) = 2
A(0, 1) = 3
A(0, 2) = 4
A(1, 0) = 5
A(1, 1) = 6
A(1, 2) = 7
A(2, 0) = 8
A(2, 1) = 9
A(2, 2) = 0
Dim L As Long
L = 2
Dim C(2, 2) As Double

'可调用本函数(注:要加有Rect(B(), L - 1) '调用求行列式值)这个函数
'地址:http://www.celiang.net/celiang/article_view.asp?id=6

Call Rect_yu(A(), L, C())

'C()为结果
'经调试暂没有发现错误。


行列式计算 
Function Rect(A() As Double, L As Long) As Double '行列式计算L*L
    Dim T0 As Double
    Dim T1 As Double
    Dim T2 As Double
    Dim T3 As Double
    Dim Rect6_T As Double
    Dim B() As Double
    Dim Num As Double
    Dim Cha As Long
    Cha = 0
    ReDim B(L - 1, L - 1)
    Num = 0
    If L = 1 Then
        Rect = A(0, 0) * A(1, 1) - A(0, 1) * A(1, 0)
        Exit Function
    End If
    For T0 = 0 To L
        For T1 = 1 To L
            For T2 = 0 To L - 1
                If T2 = T0 Then Cha = 1
                B(T1 - 1, T2) = A(T1, T2 + Cha)
            Next T2
            Cha = 0
        Next T1
        Num = Num + A(0, T0) * Rect(B(), L - 1) * (-1) ^ T0
    Next T0
    Rect = Num
End Function 

⌨️ 快捷键说明

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