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

📄 d5r9.frm

📁 常用的数值算法的VB程序
💻 FRM
字号:
VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   5160
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   4680
   LinkTopic       =   "Form1"
   ScaleHeight     =   5160
   ScaleWidth      =   4680
   StartUpPosition =   3  'Windows Default
   Begin VB.CommandButton Command1 
      Caption         =   "Command1"
      Height          =   375
      Left            =   3000
      TabIndex        =   0
      Top             =   4560
      Width           =   1335
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
    'PROGRAM D5R9
    'Driver for routine PCSHFT
    NVAL = 40
    PIO2 = 1.5707963
    Dim C(40), D(40)
    A = -PIO2
    B = PIO2
    Call CHEBFT(A, B, C(), NVAL)
    Print
    Print Tab(5); "How many terms in Chebyshev evaluation?"
    'Input MVAL , between 6 and 40, MVAL=0 TO END
    MVAL = 20
    If (MVAL <= 0) Or (MVAL > NVAL) Then Exit Sub
    Print Tab(5); MVAL
    Call CHEBPC(C(), D(), MVAL)
    Call PCSHFT(A, B, D(), MVAL)
    'Test shifted polynomial
    Print Tab(5); "    X          Actual      Polynomial"
    For I = -8 To 8 Step 1
        X = I * PIO2 / 10#
        POLY = D(MVAL)
        For J = MVAL - 1 To 1 Step -1
            POLY = POLY * X + D(J)
        Next J
        Print Tab(5); Format$(X, "#0.000000");
        Print Tab(19); Format$(FUNC(X), "#0.000000");
        Print Tab(33); Format$(POLY, "#0.000000")
    Next I
End Sub
Function FUNC(X)
    FUNC = (X ^ 2) * (X ^ 2 - 2#) * Sin(X)
End Function
Sub PCSHFT(A, B, D(), N)
    CONST1 = 2# / (B - A)
    FAC = CONST1
    For J = 2 To N
        D(J) = D(J) * FAC
        FAC = FAC * CONST1
    Next J
    CONST1 = 0.5 * (A + B)
    For J = 1 To N - 1
        For K = N - 1 To J Step -1
            D(K) = D(K) - CONST1 * D(K + 1)
        Next K
    Next J
End Sub
   Sub CHEBFT(A, B, C(), N)
      NMAX = 50
      Dim F(50)
      PI = 3.14159265358979
      BMA = 0.5 * (B - A)
      BPA = 0.5 * (B + A)
      For K = 1 To N
          Y = Cos(PI * (K - 0.5) / N)
          F(K) = FUNC(Y * BMA + BPA)
      Next K
      FAC = 2# / N
      For J = 1 To N
          Sum = 0#
          For K = 1 To N
              Sum = Sum + F(K) * Cos((PI * (J - 1)) * ((K - 0.5) / N))
          Next K
          C(J) = FAC * Sum
      Next J
   End Sub
  Sub CHEBPC(C(), D(), N)
      Dim DD(50)
      For J = 1 To N
          D(J) = 0#
          DD(J) = 0#
      Next J
      D(1) = C(N)
      For J = N - 1 To 2 Step -1
          For K = N - J + 1 To 2 Step -1
              SV = D(K)
              D(K) = 2# * D(K - 1) - DD(K)
              DD(K) = SV
          Next K
          SV = D(1)
          D(1) = -DD(1) + C(J)
          DD(1) = SV
      Next J
      For J = N To 2 Step -1
          D(J) = D(J - 1) - DD(J)
      Next J
      D(1) = -DD(1) + 0.5 * C(1)
   End Sub



⌨️ 快捷键说明

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