ahmad abdoli
شنبه 03 آبان 1393, 12:44 عصر
سلام
من از این کد برای بدست آوردن دترمینان ماتریس n*n استفاده میکنم ولی فقط مقدار صفر رو برمی گردونه :افسرده:
اگه میشه راهنمایی بفرمایید.
Private Sub build(a() As Double, b1() As Double, i As Integer, n As Integer)
Dim j As Integer, l As Integer
Dim h As Integer, k As Integer
h = 0
k = 0
For l = 1 To n
For j = 0 To n
If j = i Then GoTo Continue
b1(h, k) = a(l, j)
k = k + 1
If k = n - 1 Then
h = h + 1
k = 0
End If
Continue:
Next j
Next l
End Sub
Public Function det(ByRef a() As Double, n As Integer) As Double
Dim i As Integer
Dim b1(10, 10) As Double
If n = 2 Then
det = a(0, 0) * a(1, 1) - a(0, 1) * a(1, 0)
Exit Function
Else
For i = 0 To n
build b1, a, i, n
det = det + a(0, i) * (-1 ^ i) * det(b1, (n - 1))
Next i
End If
End Function
Private Sub Command2_Click()
MsgBox "دترمینان برابر:" & det(a, System_Dim)
End Sub
اگر از دوستان روشی دیگر برای بدست آوردن دترمینان دارند لطفا بزارن یا همین کد رو اصلاح بفرمایند.
با تشکر فراوان.
من از این کد برای بدست آوردن دترمینان ماتریس n*n استفاده میکنم ولی فقط مقدار صفر رو برمی گردونه :افسرده:
اگه میشه راهنمایی بفرمایید.
Private Sub build(a() As Double, b1() As Double, i As Integer, n As Integer)
Dim j As Integer, l As Integer
Dim h As Integer, k As Integer
h = 0
k = 0
For l = 1 To n
For j = 0 To n
If j = i Then GoTo Continue
b1(h, k) = a(l, j)
k = k + 1
If k = n - 1 Then
h = h + 1
k = 0
End If
Continue:
Next j
Next l
End Sub
Public Function det(ByRef a() As Double, n As Integer) As Double
Dim i As Integer
Dim b1(10, 10) As Double
If n = 2 Then
det = a(0, 0) * a(1, 1) - a(0, 1) * a(1, 0)
Exit Function
Else
For i = 0 To n
build b1, a, i, n
det = det + a(0, i) * (-1 ^ i) * det(b1, (n - 1))
Next i
End If
End Function
Private Sub Command2_Click()
MsgBox "دترمینان برابر:" & det(a, System_Dim)
End Sub
اگر از دوستان روشی دیگر برای بدست آوردن دترمینان دارند لطفا بزارن یا همین کد رو اصلاح بفرمایند.
با تشکر فراوان.