?? 矩陣求逆.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 '定義未知數(shù)據(jù)存放
CommonDialog1.ShowOpen
CommonDialog1.Filter = "文本文件(*.txt)|*.txt|world文件(*.doc)|*.doc|寫字板文件(*.rft)|*.rft|所有文件類型(*.*)|*.*" '& "" & "所有文件類型(*.*)|*.*"
fname = CommonDialog1.FileName
Form1.Caption = "矩陣求逆" & fname
Set ts = fso.OpenTextFile(fname) '將fname作為文本文件打開,并設(shè)置句柄
Do While ts.AtEndOfStream <> True '前測型循環(huán),進(jìn)入循環(huán)的條件是沒有讀到文件結(jié)束尾
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 '求的矩陣的階數(shù)
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("請輸入方陣的階數(shù)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) '將主元變?yōu)?
For j = k To 2 * n
a(k, j) = a(k, j) * am
Next j
'____________________________________
For i = k + 1 To n '將原矩陣變?yōu)橄氯蔷仃? 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 '將下三角矩陣變?yōu)閱挝魂?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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -