麻烦高手写一个求矩阵的秩的程序过程给小弟学习学习。。
a(1,1) a(1,2) a(1,3) a(1,4)
a(2,1) a(2,2) a(2,3) a(2,4)
a(3,1) a(3,2) a(3,3) a(3,4)
a(4,1) a(4,2) a(4,3) a(4,4)化为
a(1,1) a(1,2) a(1,3) a(1,4)
   0   a(2,2) a(2,3) a(2,4)
   0     0    a(3,3) a(3,4)
   0     0       0   a(4,4)

解决方案 »

  1.   

    小弟没上过大学,不知下面的代码对你是否有帮助var
      a : array[1..4,1..4] of char;
      i,j : integer;
    begin
      for i := 1 to 4 do
        for j := 1 to 4 do
          if j < i then 
            a[j,i] := 0;
    end;
      

  2.   

    呵呵,楼上的,楼主不是随便化成0就行了,就线形代数里求矩阵的秩,比如把
    1 2  
    3 4 化成
    1  2         1   2
    1  4/3   ===>0   2/3  D=1*(2/3)=2/3
      

  3.   

    先在窗体上建立一个文本框text1Private Sub Form_Load()
    e = 0
    For i = 1 To 4'建立一个秩为4的矩阵
    For j = 1 To 4
        If i = j Then
            a(i, j) = 1
        Else
            a(i, j) = 0    End If
    Next
    Next
    'a(1, 1) = 0'秩-1
    'a(2, 2) = 0'秩-1
    ch
    e = 0
    For i = 1 To 4
    e = e + d(i)
    Next
    Text1.Text = e
    End SubPrivate Sub ch()For k = 1 To 4
            c = 0
          For i = k To 4 '判断1列有没有不为0的值
            If a(i, k) <> 0 Then
            c = i
            Exit For
            End If
          Next
          
        If c = 0 Then
            changvalue (k) '如果为0则从第K列起,第K列全为0则赋值
            d(k) = 0
        Else
            For j = 1 To 4
                b(k, j) = a(c, j)
            Next
        id = k
            For i = k To 4
                If i <> c And id <> 4 Then
                id = id + 1
                    For j = 1 To 4
                        b(id, j) = a(i, j) - a(i, j) * a(i, k) / a(k, k)
                    Next
                End If
            Next
            revalue 'set a(i,j)=b(i,j)
            d(k) = 1
        End IfNext
    End Sub
    我已经测试通过结帐吧!
      

  4.   

    For i = 1 To 4'建立一个秩为4的矩阵
    For j = 1 To 4
        If i = j Then
            a(i, j) = 1
        Else
            a(i, j) = 0    End If
    Next
    Next以上程序确定a(i,j)的值,你可以用你的实际值。
      

  5.   

    给个邮箱,给你发delphi算法集,里边好多算法
      

  6.   

    全部程序如下:
    Option Explicit
    Dim a(4, 4)
    Dim b(4, 4) '定义过程数组b(4,4)
    Dim c
    Dim d(4) '定义秩过程变量
    Dim i As Integer, j As Integer, k As Integer, id As Integer, e As IntegerPrivate Sub revalue() '给新数组赋值
        For i = 1 To 4
            For j = 1 To 4
                a(i, j) = b(i, j)
            Next
        NextEnd Sub
    Private Sub changvalue(e) '给新数组赋值
        For i = e To 4
            For j = 1 To 4
                b(i, j) = a(i, j)
            Next
        NextEnd Sub
    Private Sub Form_Load()
    e = 0
    For i = 1 To 4'建立一个秩为4的矩阵
    For j = 1 To 4
        If i = j Then
            a(i, j) = 1
        Else
            a(i, j) = 0    End If
    Next
    Next
    'a(1, 1) = 0'秩-1
    'a(2, 2) = 0'秩-1
    ch
    e = 0
    For i = 1 To 4
    e = e + d(i)
    Next
    Text1.Text = e
    End SubPrivate Sub ch()For k = 1 To 4
            c = 0
          For i = k To 4 '判断1列有没有不为0的值
            If a(i, k) <> 0 Then
            c = i
            Exit For
            End If
          Next
          
        If c = 0 Then
            changvalue (k) '如果为0则从第K列起,第K列全为0则赋值
            d(k) = 0
        Else
            For j = 1 To 4
                b(k, j) = a(c, j)
            Next
        id = k
            For i = k To 4
                If i <> c And id <> 4 Then
                id = id + 1
                    For j = 1 To 4
                        b(id, j) = a(i, j) - a(i, j) * a(i, k) / a(k, k)
                    Next
                End If
            Next
            revalue 'set a(i,j)=b(i,j)
            d(k) = 1
        End IfNext
    End Sub