本类我是用VB.NET编写的类,不管用什么语言,算法都类似,注释写得都挺详尽的了,而且我也通过了调试。
Public Class Matrix
Private matrix(,) As Double '定义矩阵变量
Private rowbound As Integer '定义数组行数,从0开始
Private colbound As Integer '定义数组列数,从0开始
Public Sub New(ByVal data(,) As Double)
'首先获得矩阵大小
rowbound = data.GetUpperBound(0)
colbound = data.GetUpperBound(1)
ReDim matrix(rowbound, colbound)
Dim i As Integer, j As Integer '数组赋值循环变量
For i = 0 To rowbound '赋值到矩阵变量
For j = 0 To colbound
matrix(i, j) = data(i, j)
Next j
Next i
End Sub '构造函数
Public Sub LetMatrix(ByRef output_(,) As Double)
Dim i As Integer, j As Integer
For i = 0 To rowbound
For j = 0 To colbound
output_(i, j) = matrix(i, j)
Next j
Next i
End Sub '把类中的矩阵输出到一个二维数组中
Public Sub SetMatrix(ByVal input_(,) As Double)
ReDim matrix(input_.GetUpperBound(0), input_.GetUpperBound(1))
Dim i As Integer, j As Integer '数组赋值循环变量
For i = 0 To input_.GetUpperBound(0) '赋值到矩阵变量
For j = 0 To input_.GetUpperBound(1)
matrix(i, j) = input_(i, j)
Next j
Next i
End Sub '把一个二维数组中数据输出到类中
Public Function GetTranspose() As Matrix
Dim output_(,) As Double
ReDim output_(rowbound, colbound)
LetMatrix(output_)
Dim i As Integer, j As Integer, t As Double
For i = 0 To rowbound
For j = i To colbound
t = output_(i, j)
output_(i, j) = output_(j, i)
output_(j, i) = t
Next
Next
Return New Matrix(output_)
End Function '得到原矩阵的转置
Public Function GetValue() As Double '求行列式的值,