从函数中的矩阵返回值

时间:2019-03-09 16:31:24

标签: arrays vb.net function matrix inverse

我的功能有问题,因为它没有给我Matrix MB适当的值。该函数用于计算矩阵的逆。每次我按下按钮时,Label1.text都会显示“ 0”,这不是正确的数字。 能否请您帮我找出我在这里做错了什么,以得到jA(1,1)处的逆矩阵jA的正确值

Public Class Form1
Function MatrixInverse(ma(,), cf, c) As Double
    Dim JJ = 0
    Dim J = 0
    Dim L = 0
    Dim K = 0
    Dim F = 0
    Dim D As Double = 0
    Dim EA As Double = 0.0
    Dim i
    i = ma.GetLength(0)

    J = 0
    JJ = 0
    Dim MB(i, i)
    While JJ < i
        While J < i
            If J = JJ Then
                MB(JJ, J) = 1
            Else
                MB(JJ, J) = 0
            End If
            J = J + 1
        End While
        JJ = JJ + 1
    End While
    JJ = 0
    J = 0

    While JJ < i

        While J < i

            D = 1 / ma(JJ, JJ)
            L = JJ
            While K < i

                ma(L, K) = ma(L, K) * D
                MB(L, K) = MB(L, K) * D

                K = K + 1
            End While

            EA = ma(J, JJ)

            If J <> JJ Then
                F = 0
                While F < i
                    ma(J, F) = ma(J, F) - (EA * ma(JJ, F))
                    MB(J, F) = MB(J, F) - (EA * MB(JJ, F))
                    F = F + 1
                End While

            End If

            J = J + 1

        End While
        F = 0
        EA = 0
        D = 0
        K = 0
        J = 0
        JJ = JJ + 1
    End While
    Return MB(cf, c)

End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load


End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim jA(3, 3)
    jA = {{11, 4, 12, 5}, {7, 5, 6, 2.1}, {13, 14, 10, 8.1}, {3.1, 2, 1.09, 3.4}}

    Label1.Text = MatrixInverse(jA, 1, 1)

End Sub

结束班级

1 个答案:

答案 0 :(得分:0)

我发现了我的错误。我只是忘了添加1条单行:在将广告1投放到jj之前将J重置为0:

While JJ < i
    While J < i
        If J = JJ Then
            MB(JJ, J) = 1
        Else
            MB(JJ, J) = 0
        End If
        J = J + 1
    End While
     # J = 0 #
    JJ = JJ + 1
End While