VB.Net矩阵求秩函数

来源:互联网 发布:淘宝降权还能恢复吗 编辑:程序博客网 时间:2024/06/11 18:12
 Public Function Math_Matrix_Rank(ByVal K(,) As Integer, ByVal error_ As Integer, GetList As Integer) As Integer  '返回矩阵的秩.        Dim n As Integer = GetList        Dim m As Integer = K.Length \ n        Dim i As Integer = 0        Dim i1 As Integer        Dim j As Integer = 0        Dim j1 As Integer        Dim temp1 As Single        If m > n Then '保证m≤n            i = m            m = n            n = i            i = 1        End If        m -= 1        n -= 1        Dim temp(m, n) As Single        If i = 0 Then            For i = 0 To m                For j = 0 To n                    temp(i, j) = K(i, j)                Next            Next        Else            For i = 0 To m                For j = 0 To n                    temp(i, j) = K(j, i)                Next            Next        End If        If m = 0 Then            i = 0            While i <= n                If K(0, i) <> 0 Then                    Return 1                End If                i += 1            End While            Return 0        End If        Dim error0 As Double        If error_ = -1 Then            error0 = System.Math.Pow(0.1, 10)        Else            error0 = System.Math.Pow(0.1, error_)        End If        i = 0        While i <= m '保证误差可控制            j = 0            While j <= n                If temp(i, j) <> 0 Then                    error0 *= temp(i, j)                    i = m                    Exit While                End If                j += 1            End While            i += 1        End While        Dim error1 As Double        For i = 0 To m '消0过程            j = 0            While j <= n                If temp(i, j) <> 0 Then                    Exit While                End If                j += 1            End While            If j <= n Then                i1 = 0                While i1 <= m                    If temp(i1, j) <> 0 And i1 <> i Then                        temp1 = temp(i, j) / temp(i1, j)                        error1 = System.Math.Abs((temp(i, j) - temp(i1, j) * temp1)) * 100 '误差控制。因为有时候temp(i, j) - temp(i1, j) * (temp(i, j) / temp(i1, j))≠0                        error1 += error0                        For j1 = 0 To n                            temp(i1, j1) = temp(i, j1) - temp(i1, j1) * temp1                            If System.Math.Abs(temp(i1, j1)) < error1 Then                                temp(i1, j1) = 0                            End If                        Next                    End If                    i1 += 1                End While            End If        Next        i1 = 0 '作为返回值的临时变量        For i = 0 To m            For j = 0 To n                If temp(i, j) <> 0 Then                    i1 += 1                    Exit For                End If            Next        Next        Return i1    End Function


推荐文章:那些年,做的几个应用


1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩里面的牙黑怎么办 7个半月宝宝便秘怎么办 2个月婴幼儿便秘怎么办 3个月宝宝不消化怎么办 一天大便二三次不消化怎么办 不消化没胃口几天不大便怎么办? 两个月的宝宝拉绿屎怎么办 肠胃不好消化功能差怎么办 2岁宝宝消化不好怎么办 5天新生儿不拉大便怎么办 七个月宝宝一周不拉屎怎么办 七个月的宝宝消化不良怎么办 七个月宝宝消化不良拉肚子怎么办 宝宝六个月了便秘怎么办 宝宝拉水酸臭味怎么办 50天婴儿不拉屎怎么办 六个月宝宝吃米粉便秘怎么办 纯母乳喂养的宝宝便秘了怎么办 换奶粉拉绿色是怎么办 2个月宝宝发烧怎么办 小宝绿色稀大便怎么办 新生儿吃奶粉大便干燥怎么办 婴儿拉绿色奶瓣怎么办 宝宝吃奶粉大便干燥怎么办 婴儿吃奶粉不大便怎么办 孩子喝奶粉拉大便干怎么办 吃奶粉拉不出来怎么办 一岁半宝宝睡觉抱着睡放不下怎么办 3月大婴儿拉奶瓣怎么办 70多天宝宝便秘怎么办 宝宝喝奶粉上火便秘怎么办 a2奶粉吃了便秘怎么办 两个月宝宝两天没有大便怎么办 婴儿一直拉肚子吃药也不好怎么办 吃奶粉的婴儿便秘怎么办 一个多月小狗便便不成形怎么办 3个月宝宝不拉屎怎么办 好几天不拉大便怎么办 20个月宝宝大便干燥怎么办 两月宝宝三天没大便怎么办 六个月宝宝大便干燥怎么办