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

📄 线性方~2.frm

📁 以前学计算方法时,根据老师的要求做的一些基础实验VB.
💻 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 + -