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

📄 lu分解法.frm

📁 LU主值分解
💻 FRM
字号:
VERSION 5.00
Begin VB.Form Form1 
   AutoRedraw      =   -1  'True
   Caption         =   "LU分解法【限于方阵】"
   ClientHeight    =   7320
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   6120
   Icon            =   "LU分解法.frx":0000
   LinkTopic       =   "Form1"
   ScaleHeight     =   7320
   ScaleWidth      =   6120
   StartUpPosition =   3  '窗口缺省
   Begin VB.CommandButton Command4 
      Caption         =   "计算并显示X和Y"
      Height          =   495
      Left            =   4200
      TabIndex        =   3
      Top             =   3720
      Width           =   1575
   End
   Begin VB.CommandButton Command3 
      Caption         =   "输入列向量b"
      Height          =   495
      Left            =   4200
      TabIndex        =   2
      Top             =   3000
      Width           =   1575
   End
   Begin VB.CommandButton Command2 
      Caption         =   "计算并显示L和U"
      Height          =   495
      Left            =   4200
      TabIndex        =   1
      Top             =   2280
      Width           =   1575
   End
   Begin VB.CommandButton Command1 
      Caption         =   "输入阶数和矩阵A"
      Height          =   495
      Left            =   4200
      TabIndex        =   0
      Top             =   1560
      Width           =   1575
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
    Option Base 1
    Dim n As Long
    Dim aarray() As Single
    Dim barray() As Single
    Dim uarray() As Single
    Dim larray() As Single
    Dim xarray() As Single
    Dim yarray() As Single
    Dim i As Integer, j As Integer, k As Integer, m As Integer, q As Integer
    Dim s As Single
    
Private Sub Command1_Click()
n = InputBox("输入阶数n:")
MsgBox "输入的阶数为:" & n, vbOKCancel
ReDim aarray(n, n) As Single
ReDim uarray(n, n) As Single
ReDim larray(n, n) As Single
ReDim xarray(n, 1) As Single
ReDim yarray(n, 1) As Single
ReDim barray(n, 1) As Single
    For i = 1 To n
     For j = 1 To n
       aarray(i, j) = Val(InputBox("请输入矩阵A:"))
       Print aarray(i, j) & vbTab;
     Next j
     Print
    Next i
    If i > n Then
      MsgBox "输入已结束!", 48, 4096
      Command1.Enabled = False
    End If
End Sub

Private Sub Command2_Click()   '求L和U并显示

'这两行赋值U第一行和L第一列
    For m = 1 To n
     uarray(1, m) = aarray(1, m)
     larray(m, 1) = aarray(m, 1) / uarray(1, 1)
    Next m
    
'将L的主对角线均赋值为1
    For i = 2 To n
        larray(i, i) = 1
    Next i

'得到U的i行
    For i = 2 To n
        For j = i To n
           s = 0
           For k = 1 To i - 1
             s = s + larray(i, k) * uarray(k, j)
           Next k
          uarray(i, j) = aarray(i, j) - s
         Next j
         
'得到L的i列
         For q = i + 1 To n
          s = 0
           For k = 1 To i - 1
             s = s + larray(q, k) * uarray(k, i)
           Next k
          larray(q, i) = (aarray(q, i) - s) / uarray(i, i)
         Next q
     Next i
     
'打印矩阵U和L
    Print
    Print "U矩阵:"
    For i = 1 To n
     For j = 1 To n
       Print uarray(i, j) & vbTab;
     Next j
     Print
    Next i
    
    Print
    Print "L矩阵:"
     For i = 1 To n
      For j = 1 To n
       Print larray(i, j) & vbTab;
      Next j
     Print
    Next i
    
End Sub

Private Sub Command3_Click()    '输入列向量b
     Print
     For i = 1 To n
       barray(i, 1) = Val(InputBox("请输入列向量b:"))
       Print barray(i, 1)
     Next i
    If i > n Then
      MsgBox "输入已结束!", vbOKOnly
    Command3.Enabled = False
    End If
End Sub

Private Sub Command4_Click()    '计算并显示X和Y

'计算出Y各项的值
     yarray(1, 1) = barray(1, 1)
     For i = 2 To n
          s = 0
            For k = 1 To i - 1
              s = s + larray(i, k) * yarray(k, 1)
            Next k
          yarray(i, 1) = barray(i, 1) - s
     Next i
     
'计算出X各项的值
     xarray(n, 1) = yarray(n, 1) / uarray(n, n)
         For i = n - 1 To 1 Step -1
           s = 0
            For k = i + 1 To n
             s = s + uarray(i, k) * xarray(k, 1)
            Next k
            xarray(i, 1) = (yarray(i, 1) - s) / uarray(i, i)
         Next i
         
'打印矩阵X和Y
    Print
    Print "Y矩阵:"
    For i = 1 To n
      Print yarray(i, 1)
      Print
    Next i
    
    Print
    Print "X矩阵:"
      For i = 1 To n
        Print xarray(i, 1)
      Print
    Next i
End Sub






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -