d4r32.frm

来自「常用数值算法集哈」· FRM 代码 · 共 89 行

FRM
89
字号
VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   3000
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   5460
   LinkTopic       =   "Form1"
   ScaleHeight     =   3000
   ScaleWidth      =   5460
   StartUpPosition =   3  'Windows Default
   Begin VB.CommandButton Command1 
      Caption         =   "Command1"
      Height          =   375
      Left            =   3720
      TabIndex        =   0
      Top             =   2280
      Width           =   1215
   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 D4R32
    'Driver for routine PLGNDR
    Dim ACTUAL(5), M(5), N(5), X(5)
    ACTUAL(1) = -0.707106
    ACTUAL(2) = -0.115112
    ACTUAL(3) = 84.2319
    ACTUAL(4) = 20460100#
    ACTUAL(5) = -1612050000000#
    N(1) = 1
    N(2) = 10
    N(3) = 20
    N(4) = 10
    N(5) = 20
    M(1) = 0
    M(2) = 0
    M(3) = 2
    M(4) = 10
    M(5) = 10
    X(1) = 0.707107
    X(2) = 0.707107
    X(3) = 0.707107
    X(4) = 0.707107
    X(5) = 0#
    Print
    Print "   N     M          X          Actual       BS(N,B)"
    For I = 1 To 5
        Print Tab(4); Format$(N(I), "#0");
        Print Tab(10); Format$(M(I), "#0");
        Print Tab(15); Format$(X(I), ".##0000E+00");
        Print Tab(29); Format$(ACTUAL(I), ".000000E+00");
        Print Tab(43); Format$(PLGNDR(N(I), M(I), X(I)), ".000000E+00")
    Next I
End Sub
Function PLGNDR(L, M, X)
    If M < 0 Or M > L Or Abs(X) > 1# Then Print "bad arguments"
    PMM = 1#
    If M > 0 Then
        SOMX2 = Sqr((1# - X) * (1# + X))
        FACT = 1#
        For I = 1 To M
            PMM = -PMM * FACT * SOMX2
            FACT = FACT + 2#
        Next I
    End If
    If L = M Then
        PLGNDR = PMM
    Else
        PMMP1 = X * (2 * M + 1) * PMM
        If L = M + 1 Then
            PLGNDR = PMMP1
        Else
            For LL = M + 2 To L
                PLL = X * (2 * LL - 1) * PMMP1 - (LL + M - 1) * PMM
                PLL = PLL / (LL - M)
                PMM = PMMP1
                PMMP1 = PLL
            Next LL
            PLGNDR = PLL
        End If
    End If
End Function

⌨️ 快捷键说明

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