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

📄 frmmain.frm

📁 一次仿真课上作的一个关于龙格库塔法解微分方程的一个VB程序
💻 FRM
📖 第 1 页 / 共 3 页
字号:
            Size            =   9.75
            Charset         =   134
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   255
         Left            =   120
         TabIndex        =   17
         Top             =   1320
         Width           =   1695
      End
      Begin VB.Label Label2 
         Caption         =   "请输入精度"
         BeginProperty Font 
            Name            =   "隶书"
            Size            =   9.75
            Charset         =   134
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   255
         Left            =   120
         TabIndex        =   16
         Top             =   4440
         Width           =   1215
      End
      Begin VB.Label Label1 
         Caption         =   "请输入初始步长"
         BeginProperty Font 
            Name            =   "隶书"
            Size            =   9.75
            Charset         =   134
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   255
         Left            =   120
         TabIndex        =   15
         Top             =   3960
         Width           =   1695
      End
   End
   Begin VB.Frame Frame2 
      Caption         =   "数据输出"
      BeginProperty Font 
         Name            =   "隶书"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H00000000&
      Height          =   5535
      Left            =   5280
      TabIndex        =   1
      Top             =   120
      Width           =   4695
      Begin MSComctlLib.ListView lsvRST 
         Height          =   5175
         Left            =   120
         TabIndex        =   2
         Top             =   240
         Width           =   4455
         _ExtentX        =   7858
         _ExtentY        =   9128
         View            =   3
         LabelWrap       =   -1  'True
         HideSelection   =   -1  'True
         FullRowSelect   =   -1  'True
         GridLines       =   -1  'True
         HotTracking     =   -1  'True
         _Version        =   393217
         ForeColor       =   -2147483640
         BackColor       =   -2147483643
         BorderStyle     =   1
         Appearance      =   1
         BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
            Name            =   "隶书"
            Size            =   9.75
            Charset         =   134
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         NumItems        =   5
         BeginProperty ColumnHeader(1) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
            Text            =   "仿真时间t"
            Object.Width           =   2117
         EndProperty
         BeginProperty ColumnHeader(2) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
            SubItemIndex    =   1
            Text            =   "四阶龙格库塔法解"
            Object.Width           =   2293
         EndProperty
         BeginProperty ColumnHeader(3) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
            SubItemIndex    =   2
            Text            =   "梯形法解"
            Object.Width           =   2293
         EndProperty
         BeginProperty ColumnHeader(4) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
            SubItemIndex    =   3
            Text            =   "欧拉法解"
            Object.Width           =   2293
         EndProperty
         BeginProperty ColumnHeader(5) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
            SubItemIndex    =   4
            Text            =   "截断误差"
            Object.Width           =   2540
         EndProperty
      End
   End
   Begin MSComctlLib.StatusBar sbStatusBar 
      Align           =   2  'Align Bottom
      Height          =   270
      Left            =   0
      TabIndex        =   0
      Top             =   5820
      Width           =   10185
      _ExtentX        =   17965
      _ExtentY        =   476
      _Version        =   393216
      BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628} 
         NumPanels       =   3
         BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
            AutoSize        =   1
            Object.Width           =   12779
            Text            =   "状态"
            TextSave        =   "状态"
         EndProperty
         BeginProperty Panel2 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
            Style           =   6
            AutoSize        =   2
            TextSave        =   "2005-6-1"
         EndProperty
         BeginProperty Panel3 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
            Style           =   5
            AutoSize        =   2
            TextSave        =   ":15:39"
         EndProperty
      EndProperty
   End
   Begin MSComctlLib.Toolbar Toolbar1 
      Align           =   1  'Align Top
      Height          =   615
      Left            =   0
      TabIndex        =   3
      Top             =   0
      Width           =   10185
      _ExtentX        =   17965
      _ExtentY        =   1085
      ButtonWidth     =   609
      ButtonHeight    =   926
      Appearance      =   1
      _Version        =   393216
   End
   Begin VB.Menu mnuFile 
      Caption         =   "文件(&F)"
      Begin VB.Menu mnuFilemnuSimulate 
         Caption         =   "清空"
      End
      Begin VB.Menu mnuFileBar0 
         Caption         =   "-"
      End
      Begin VB.Menu mnuFileExit 
         Caption         =   "退出(&X)"
      End
   End
   Begin VB.Menu mnuHelp 
      Caption         =   "帮助(&H)"
      Begin VB.Menu mnuHelpAbout 
         Caption         =   "关于(&A) "
      End
   End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

Function getSpaceIndex(ByVal str As String)
   istr = LTrim(str)
   inum = Len(istr)
        For i = 1 To inum
            If StrComp(Mid(istr, i, 1), " ") = 0 Then
                getSpaceIndex = i
                Exit Function
            End If
        Next
   getSpaceIndex = inum
End Function
Private Sub chuzhi_LostFocus()
      num = CInt(jieshu.Text)
        ReDim cz(num - 1)
              sstr = LTrim(chuzhi.Text)
        '判断初值个数是否吻合
         Dim inum As Integer
             inum = 0
         Do While sstr <> ""
             ino = getSpaceIndex(sstr)
             If ino <> 0 Then inum = inum + 1
             sstr = LTrim(Mid(sstr, ino + 1, Len(sstr) - ino))
         Loop
         
            If inum <> num Then
            MsgBox "输入的初值应只有" & num & "个", vbInformation, "警告"
                zhc = "1 "
            For i = 1 To num - 1
                zhc = zhc & "1 "
            Next
            chuzhi.Text = zhc
            Exit Sub
            End If
        '判断是否为数值
            sstr = LTrim(chuzhi.Text)
        For i = 0 To num - 1
            ino = getSpaceIndex(sstr)
            cz(i) = Left(sstr, ino)
            If IsNumeric(iBc) = False Then
                MsgBox "输入的初值必须为数字!", vbInformation, "警告"
                   zhc = "1 "
            For j = 1 To num - 1
                zhc = zhc & "1 "
            Next
            chuzhi.Text = zhc
                Exit Sub
            End If
            sstr = LTrim(Mid(sstr, ino + 1, Len(sstr) - ino))
        Next
End Sub

Private Sub cmdEXIT_Click()
        If MsgBox("真的要退出吗?", 33, "退出程序") = vbOK Then End
End Sub
Private Sub cmdOK_Click()
        lsvRST.ListItems.Clear   '清空ListView控件
            iJD = CDbl(txtJD.Text)
            num = CInt(jieshu.Text)
            h = CDbl(txtBC.Text)    '获得初始步长
            c = CDbl(qujianc.Text) '获得区间左端值
            d = CDbl(qujiand.Text) '获得区间左端值
        ReDim cz(num - 1) As Double '动态定义用于初值的数组
            sstr = LTrim(chuzhi.Text)
        For i = 0 To num - 1
            isstr = getSpaceIndex(sstr)
            cz(i) = Left(sstr, isstr) '获得各阶初值
            sstr = LTrim(Mid(sstr, isstr + 1, Len(sstr) - isstr))
        Next
        ReDim xs(num) As Double   '动态定义用于系数的数组
            sstr = LTrim(xishu.Text)
        For i = 0 To num
            isstr = getSpaceIndex(sstr)
            xs(i) = Left(sstr, isstr) '获得各阶系数
            sstr = LTrim(Mid(sstr, isstr + 1, Len(sstr) - isstr))
        Next
            b = txtbxishu.Text '获得b系数
        ReDim aa(num - 1) As Double
        i = 0
        While i <= num - 1
            aa(i) = cz(i)
            i = i + 1
        Wend
 
        ReDim kk((num - 1), 4) As Double
                While i <= num - 1
                    kk(i, 0) = 0 '牺牲第0列以方便将求解k值统一到一种形式
                Wend
        With lsvRST.ListItems.Add()
                                .Text = c
                                .SubItems(1) = Left(aa(0), 10)
                                .SubItems(2) = "----"
                                .SubItems(3) = "----"
                                .SubItems(4) = "----"
        End With
        t = c: cnt = 0: ReDim xa(num - 1) As Double: Dim dh As Double: dh = h: Dim hh(1 To 4) As Double
        While t <= d
            'k值得求解过程
                '先判断当前步长是否合乎要求,如果不则折半再判断
reselh:
                hh(1) = 0: hh(2) = dh / 2: hh(3) = dh / 2: hh(4) = dh: i = 0
                While i <= num - 1
                    xa(i) = aa(i)   '给xa赋值
                    i = i + 1
                Wend
            For k = 1 To 4
                i = 0
                While i <= num - 2
                    kk(i, k) = xa(i + 1) + hh(k) * kk(i + 1, k - 1)
                    i = i + 1
                Wend
                j = 0: mm = 0
                For j = 0 To (num - 1)

⌨️ 快捷键说明

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