VB.net计算二维数组的行列式

来源:互联网 发布:mac怎么删除应用程序 编辑:程序博客网 时间:2024/05/01 23:37

‘根据行列式定义计算行列式’

Public Shared Function det(ByVal a(,) As Double)
        Dim b As Double : Dim p(,) As Double
        Dim i, j, k, l As Integer
        Dim c(1), m, n As Integer
        c = size(a) : m = c(0) : n = c(1) : l = m - 1 'l为子行列式的阶数
        ReDim p(l - 1, l - 1)
        If m <> n And m > 1 And n > 1 Then
            System.Windows.Forms.MessageBox.Show("Error of 'det':求解行列式的矩阵行数与列数不一致")
        ElseIf m = 1 Then
            b = a(0, 0)
        Else
            For k = 0 To m - 1
                For i = 0 To l - 1
                    For j = 0 To l - 1
                        If i < k Then
                            p(i, j) = a(i, j + 1) '初始化子行列式的值*/  
                        Else
                            p(i, j) = a(i + 1, j + 1) '初始化子行列式的值*/  
                        End If
                    Next
                Next
                b += (-1) ^ k * a(k, 0) * det(p)   '/*递归计算*/
            Next
        End If
        Return b
    End Function


%%

计算实例

输入数组 x = {{1, 2, 3, 4}, {2, 1, 3, 4}, {3, 2, 1, 4}, {4, 3, 2, 1}}

返回 b=-60

结果与matlab计算一致。

原创粉丝点击