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

📄 高斯消元法.frm

📁 高斯消元法解方程
💻 FRM
字号:
VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "高斯消元法解方程"
   ClientHeight    =   8205
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   9420
   Icon            =   "高斯消元法.frx":0000
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   ScaleHeight     =   8205
   ScaleWidth      =   9420
   StartUpPosition =   2  '屏幕中心
   Begin VB.CommandButton Command1 
      Caption         =   "运算"
      Height          =   375
      Left            =   1560
      TabIndex        =   13
      Top             =   4200
      Width           =   1575
   End
   Begin VB.CommandButton Command3 
      Caption         =   "退出"
      Height          =   375
      Left            =   6360
      TabIndex        =   12
      Top             =   4200
      Width           =   1575
   End
   Begin VB.CommandButton Command2 
      Caption         =   "清除"
      Height          =   375
      Left            =   3960
      TabIndex        =   11
      Top             =   4200
      Width           =   1575
   End
   Begin VB.TextBox Text4 
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H00800000&
      Height          =   1335
      Left            =   1440
      MultiLine       =   -1  'True
      TabIndex        =   10
      Top             =   5640
      Width           =   6495
   End
   Begin VB.TextBox Text3 
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   10.5
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H00800000&
      Height          =   375
      Left            =   2280
      TabIndex        =   8
      Top             =   2880
      Width           =   1335
   End
   Begin VB.TextBox Text2 
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   10.5
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H00800000&
      Height          =   375
      Left            =   2280
      TabIndex        =   6
      Top             =   2040
      Width           =   1335
   End
   Begin VB.ListBox List1 
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H00800000&
      Height          =   1260
      ItemData        =   "高斯消元法.frx":0442
      Left            =   4200
      List            =   "高斯消元法.frx":0444
      TabIndex        =   4
      Top             =   1560
      Width           =   5055
   End
   Begin VB.TextBox Text1 
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   10.5
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H00800000&
      Height          =   375
      Left            =   2280
      TabIndex        =   2
      Top             =   1200
      Width           =   1335
   End
   Begin VB.Label Label7 
      Caption         =   "输入右端向量"
      ForeColor       =   &H00800000&
      Height          =   495
      Left            =   720
      TabIndex        =   9
      Top             =   2880
      Width           =   1215
   End
   Begin VB.Label Label6 
      Caption         =   "输入各系数"
      ForeColor       =   &H00800000&
      Height          =   375
      Left            =   720
      TabIndex        =   7
      Top             =   2040
      Width           =   1215
   End
   Begin VB.Label Label5 
      Caption         =   "未知数矩阵"
      ForeColor       =   &H00800000&
      Height          =   495
      Left            =   1440
      TabIndex        =   5
      Top             =   5160
      Width           =   1575
   End
   Begin VB.Label Label3 
      Caption         =   "——输入方程组——"
      ForeColor       =   &H00800000&
      Height          =   375
      Left            =   5760
      TabIndex        =   3
      Top             =   1080
      Width           =   1935
   End
   Begin VB.Label Label2 
      Caption         =   "请输入变量个数n"
      ForeColor       =   &H00800000&
      Height          =   375
      Left            =   720
      TabIndex        =   1
      Top             =   1200
      Width           =   1455
   End
   Begin VB.Label Label1 
      Caption         =   "高斯消元法解方程组"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   15.75
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H00800000&
      Height          =   375
      Left            =   3480
      TabIndex        =   0
      Top             =   360
      Width           =   3015
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

Public n%, x1$, geshu%, k1%, k2%, yijingjisuan As Boolean
Dim a#(), b#()
Private Sub Command1_Click()
Dim i%, j%, k%, l#, shu$
Dim s#
On Error GoTo error3
If yijingjisuan = True Then Exit Sub
        '高斯消元算法
 For k = 1 To n - 1          '消元过程
    For i = k + 1 To n
    If a(k, k) = 0 Then
    MsgBox "警告!此方程无解或输入错误!请重新输入!", 48, "提示"
    Call Command2_Click
    Exit Sub
    End If
      l = a(i, k) / a(k, k)
      For j = k + 1 To n
      a(i, j) = a(i, j) - l * a(k, j)
      Next j
        b(i) = b(i) - l * b(k)
      Next i
 Next k
 
 For i = n To 1 Step -1    '计算变量矩阵
 s = 0
     For j = i + 1 To n
        s = s + a(i, j) * b(j)
       Next j
        If a(k, k) = 0 Then
    MsgBox "警告!此方程无解或输入错误!请重新输入!", 48, "提示"
    Call Command2_Click
    Exit Sub
    End If
      b(i) = (b(i) - s) / a(i, i)
     b(i) = Format(b(i), "####0.000000")
     
 Next i
 
 For i = 1 To n              '输出结果
 shu = Trim(Str(b(i)))
 If Left(shu, 1) = "." Then shu = "0" & shu
 If Left(shu, 2) = "-." Then shu = "-0" & Mid(shu, 2)
 Text4.Text = Text4.Text + "x(" + Trim(Str(i)) + ")=" + shu + "   "
 Next i
 yijingjisuan = True
 Command2.SetFocus
 Exit Sub
On Error GoTo 0
error3:
MsgBox "警告!此方程无解或输入错误!请重新输入!", 48, "提示"
 End Sub


Private Sub Command2_Click()
List1.Clear
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
x1 = ""
X2 = ""
geshu = 0
k1 = 0
k2 = 0
yijingjisuan = False
Text1.SetFocus
End Sub


Private Sub Command3_Click()
End
End Sub


Private Sub Form_Load()
x1 = ""
X2 = ""
geshu = 0
k1 = 0
k2 = 0
yijingjisuan = False
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
n = Int(Val(Text1))
If KeyAscii = 13 Then
ReDim a(n, n)
ReDim b(n)
Text2.SetFocus
End If
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
Dim i%, j%
On Error GoTo error1
If KeyAscii = 13 Then
 geshu = geshu + 1
 i = k1 \ n + 1
 j = k1 Mod n + 1
 a(i, j) = Val(Text2)    '输入系数矩阵

 k1 = k1 + 1


If x1 <> "" Then x1 = x1 & "+"
x1 = x1 & Trim(Val(Text2)) & "x(" & Trim(Str(geshu)) & ")"
Text2 = ""
If geshu = n Then
geshu = 0
Text3.SetFocus
End If
If List1.ListCount > n Then
MsgBox "警告!输入数据过多!请重新输入!", 48, "提示"
List1.Clear
Call Command2_Click
Exit Sub
End If
End If
Exit Sub
On Error GoTo 0
error1:
Text2 = ""
MsgBox "警告!输入数据过多!请重新输入!", 48, "提示"
End Sub

Private Sub Text3_KeyPress(KeyAscii As Integer)
Dim i%, j%
On Error GoTo error2
If KeyAscii = 13 Then
List1.AddItem x1 & "=" & Trim(Val(Text3))
x1 = ""

 b(k2 + 1) = Val(Text3)  '输入右端向量
 
 k2 = k2 + 1

Text3 = ""
If List1.ListCount = n Then
Command1.SetFocus
Exit Sub
End If
If List1.ListCount > n Then
MsgBox "警告!输入数据过多!请重新输入!", 48, "提示"
List1.Clear
Call Command2_Click
Exit Sub
End If
Text2.SetFocus
End If
Exit Sub
On Error GoTo 0
error2:
Text3 = ""
MsgBox "警告!输入数据过多!请重新输入!", 48, "提示"
End Sub

⌨️ 快捷键说明

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