📄 矩阵求逆.frm
字号:
VERSION 5.00
Begin VB.Form Form1
AutoRedraw = -1 'True
Caption = "Form1"
ClientHeight = 3090
ClientLeft = 60
ClientTop = 450
ClientWidth = 4680
LinkTopic = "Form1"
ScaleHeight = 3090
ScaleWidth = 4680
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Command1
Caption = "Command1"
Height = 375
Left = 240
TabIndex = 0
Top = 2640
Width = 1095
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim fso As New FileSystemObject, ts As TextStream, fl As File, fname As StringPrivate
Private Sub Command1_Click()
Dim yjz() As Double, m() As Integer '定义未知数据存放
CommonDialog1.ShowOpen
CommonDialog1.Filter = "文本文件(*.txt)|*.txt|world文件(*.doc)|*.doc|写字板文件(*.rft)|*.rft|所有文件类型(*.*)|*.*" '& "" & "所有文件类型(*.*)|*.*"
fname = CommonDialog1.FileName
Form1.Caption = "矩阵求逆" & fname
Set ts = fso.OpenTextFile(fname) '将fname作为文本文件打开,并设置句柄
Do While ts.AtEndOfStream <> True '前测型循环,进入循环的条件是没有读到文件结束尾
b = Trim(ts.ReadLine) '读一行,置入b
js = Len(b): lin = lin + 1
If lin = 1 Then
ReDim m(js)
For i = 1 To js
m(i) = InStr(m(i - 1) + 1, b, " ")
If i > 1 And m(i) = 0 Then i = jishu: ReDim yjz(jishu * jishu): Exit For
Next i
End If '求的矩阵的阶数
For kk = 1 To jishu
m(i) = InStr(m(kk - 1) + 1, b, " ")
Next kk
For j = 1 To jishu
a(lin, j) = Val(Mid(b, m(j) + 1, m(j + 1) - m(j) - 1))
Next j
Loop
ts.Close
For l = 1 To jieshu
For ll = 1 To jieshu
aa(l, ll) = a(l, ll)
aa = Chr(13) & Chr(10) & aa(l, ll)
Next l, ll
text1.Text = aa
End Sub
Sub Form_Load()
Dim a() As Single
Dim i%, j%, k%, am!, bm!, cm!
n = InputBox("请输入方阵的阶数N")
ReDim a(n, 2 * n) As Single
For i = 1 To n
For j = 1 To n
a(i, j) = InputBox("请输入a(" & i & "," & j & ")的值")
If i = j Then
a(i, j + n) = 1
Else
a(i, j + n) = 0
End If
Next j, i
Print "原矩阵的增广矩阵元素"
For i = 1 To n
For j = 1 To 2 * n
If j Mod 2 * n <> 0 Then
Print a(i, j);
Else
Print a(i, j)
End If
Next j, i
'逆矩阵计算
For k = 1 To n '用主元除主元所在行的所有元素
am = 1 / a(k, k) '将主元变为1
For j = k To 2 * n
a(k, j) = a(k, j) * am
Next j
'____________________________________
For i = k + 1 To n '将原矩阵变为下三角矩阵
bm = a(i, k)
For j = 1 To 2 * n
a(i, j) = a(i, j) - a(k, j) * bm
Next j
Next i
Next k
'------------------------------------------------
For k = 2 To n
For i = 1 To k - 1 '将下三角矩阵变为单位阵
cm = a(i, k)
For j = k To 2 * n
a(i, j) = a(i, j) - a(k, j) * cm
Print "a(" & i & "," & j & ")=" & a(i, j)
Next j
Next i
Next k
'------------------------------------------------
Print "所求逆矩阵"
For i = 1 To n
For j = n + 1 To 2 * n
If j Mod 2 * n <> 0 Then
Print a(i, j); " ";
Else
Print a(i, j)
End If
Next j, i
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -