📄 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 + -