📄 线性方~2.frm
字号:
VERSION 5.00
Begin VB.Form 线性方程组
AutoRedraw = -1 'True
BackColor = &H00FFFFC0&
BorderStyle = 1 'Fixed Single
Caption = "Form6"
ClientHeight = 7530
ClientLeft = 1890
ClientTop = 5250
ClientWidth = 11025
FillColor = &H0080FFFF&
BeginProperty Font
Name = "宋体"
Size = 7.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H0000FFFF&
LinkTopic = "Form6"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 31.375
ScaleMode = 4 'Character
ScaleWidth = 91.875
Begin VB.PictureBox Picture1
BackColor = &H00FFFFC0&
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H00000000&
Height = 5415
Left = 2280
ScaleHeight = 5355
ScaleMode = 0 'User
ScaleWidth = 7035
TabIndex = 5
Top = 1200
Width = 7335
End
Begin VB.CommandButton Command5
Caption = "退出"
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 480
TabIndex = 4
Top = 4320
Width = 1455
End
Begin VB.CommandButton Command4
Caption = "重新运行"
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 480
TabIndex = 3
Top = 3600
Width = 1455
End
Begin VB.CommandButton Command3
Caption = "高斯-塞德尔"
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 480
TabIndex = 2
Top = 2880
Width = 1455
End
Begin VB.CommandButton Command2
Caption = "高斯消去"
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 480
TabIndex = 1
Top = 2160
Width = 1455
End
Begin VB.CommandButton Command1
BackColor = &H00FFFF80&
Caption = "产生随机方程组"
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 480
TabIndex = 0
Top = 1440
Width = 1455
End
End
Attribute VB_Name = "线性方程组"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim n As Double, d(4) As Double
Dim a(4, 4) As Single, b(4) As Single, c(4, 4) As Single, dd(4) As Single, x(4) As Single
Dim m As Integer, i As Integer, j As Integer, t As Integer
Private Sub Command1_Click()
Dim s As String
Dim s1 As Double, s2 As Double
Picture1.Print "随机产生方程组"
Randomize
m = 4: n = 4
For i = 1 To m
For j = 1 To m
If (j = i) Then
t = Int((30 - 20) * Rnd + 20)
Else
t = Int((20 - 1) * Rnd + 1)
End If
a(i, j) = t
c(i, j) = t
s2 = Str$(t)
If (j = 1) Then
If (Len(s2) = 2) Then
s = " " & t & " X" & j
Else
s = t & " X" & j
End If
Else
If (Len(s2) = 2) Then
s = s & " + " & " " & t & " X" & j
Else
s = s & " + " & t & " X" & j
End If
End If
Next
t = Int((10 - 1) * Rnd + 1)
b(i) = t
dd(i) = t
Picture1.Print s & " = " & t
s = ""
Next
End Sub
Private Sub Command2_Click()
Dim s As Double
For k = 1 To m
For j = k + 1 To m
c(k, j) = c(k, j) / c(k, k)
Next
dd(k) = dd(k) / c(k, k)
For i = k + 1 To m
For j = k + 1 To m
c(i, j) = c(i, j) - c(i, k) * c(k, j)
Next
Next
For i = k + 1 To m
dd(i) = dd(i) - c(i, k) * dd(k)
Next
If (k = m) Then
For i = m - 1 To 1 Step -1
s = 0
For j = i + 1 To m
s = s + c(i, j) * dd(j)
Next
dd(i) = dd(i) - s
Next
Picture1.Print
Picture1.Print "由高斯法得:"
For j = 1 To m
If ((Abs(dd(j)) < 1 And Abs(dd(j)) > 0.1) And Sgn(dd(j)) = 1) Then
Picture1.Print "x"; j; "=0"; dd(j)
Else
If ((Abs(dd(j)) < 1 And Abs(dd(j)) >= 0.01) And Sgn(dd(j)) = -1) Then
Picture1.Print "x"; j; "=-0"; Abs(b(j))
Else
Picture1.Print "x"; j; "="; b(j)
End If
End If
Next
For i = 1 To m
k = 1
d(i) = a(i, k) * dd(k) + a(i, k + 1) * dd(k + 1) + a(i, k + 2) * dd(k + 2) + a(i, k + 3) * dd(k + 3)
Picture1.Print "将所得值代入可得:"; "b("; i; ")="; d(i)
Next i
Exit Sub
End If
Next
End Sub
Private Sub Command3_Click()
Dim t As Double, err As Double, e As Double
n = InputBox$("迭代次数:", , 100)
err = InputBox$("精度:", , 0.0001)
For i = 1 To m
x(i) = 0
Next
For k = 1 To n
e = 0
For i = 1 To m
t = x(i): s = 0
For j = 1 To m
If (j <> i) Then s = s + a(i, j) * x(j)
Next
x(i) = (b(i) - s) / a(i, i)
If (Abs(x(i) - t) > e) Then e = Abs(x(i) - t)
j = i
If (i = m) Then
If (e < err) Then
Picture1.Print
Picture1.Print "由高斯-塞德尔法得:"
For j = 1 To m
If (Abs(x(j)) < 1 And Abs(x(j) >= 0.1) And Sgn(x(j)) = 1) Then
Picture1.Print "X" & j & "=" & "0" & x(j)
ElseIf (Abs(x(j)) < 1 And Abs(x(j) >= 0.01) And Sgn(x(j)) = -1) Then
Picture1.Print "X" & j & "=" & "-0" & Str$(Abs(x(j)))
Else
Picture1.Print "X" & j & "=" & x(j)
End If
Next
For f = 1 To m
s1 = 0
For j = 1 To m
s1 = s1 + a(f, j) * x(j)
Next
Picture1.Print "将所得值代入可得:"; "b("; f; ")="; s1
Next
Exit Sub
End If
End If
Next
If (k = n) Then
MsgBox "迭代失败!"
Exit Sub
End If
Next
End Sub
Private Sub Command4_Click()
Picture1.Cls
Command1.Enabled = True
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
End Sub
Private Sub Command5_Click()
线性方程组.Hide
Form1.Show
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -