麻烦高手写一个求矩阵的秩的程序过程给小弟学习学习。。
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)
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)
解决方案 »
- Delphi 写得OCX在VC++中无法调用?
- 请问TWebBrowser的哪个属性...?
- 压缩传输组件 tcpserver tcpClient activeForm无法连接
- 如何判断Treeview1.Selected是主节点还是子节点
- CSDN宁无人乎???? 50+50==100!!!!---------创建快捷方式!!!!
- delphi导excel表,页面的连接
- 求教ehlib6.3中TDBGrideh控件的一个问题
- 相信这是一个很菜的问题,怎样加载第三方控件?谢谢
- 保存tedit控件中的数据时为何不能为0
- 关于Delphi5.0Enterprise Edition Update Pack 1的Serial number和 Authorize Code?
- 将exe文件加载到内存中并直接运行(请教高手如何加壳)
- 小弟刚接了个项目,需要使用delphi,推荐几本好书把!!!
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;
1 2
3 4 化成
1 2 1 2
1 4/3 ===>0 2/3 D=1*(2/3)=2/3
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
我已经测试通过结帐吧!
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)的值,你可以用你的实际值。
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