⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 矩阵求逆.frm

📁 实现矩阵的求逆
💻 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 + -