我的功能有问题,因为它没有给我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
结束班级
答案 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