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

📄 高次插值的龙格现象.frm

📁 完整的数值模拟软件
💻 FRM
字号:
VERSION 5.00
Begin VB.Form Form7 
   BackColor       =   &H00FFFFFF&
   Caption         =   "高次插值的龙格现象"
   ClientHeight    =   7140
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   9855
   LinkTopic       =   "Form7"
   ScaleHeight     =   7140
   ScaleWidth      =   9855
   StartUpPosition =   3  '窗口缺省
   Begin VB.CommandButton Command1 
      Caption         =   "高次插值的龙格现象"
      Height          =   615
      Left            =   120
      TabIndex        =   0
      Top             =   120
      Width           =   1935
   End
End
Attribute VB_Name = "Form7"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
Cls
n = InputBox("请输入插值节点数:", "input")
n = Val(n)
m = 101
Dim x(20), y(20), x1(400), f(400), P(400)
Rem 计算插值节点
k = 1
h = 10 / 100
x(1) = -5
y(k) = 1 / (1 + x(k) * x(k))
Do While k <= n - 1
   k = k + 1
   x(k) = -5 + (k - 1) * 10 / (n - 1)
   y(k) = 1 / (1 + x(k) * x(k))
Loop

Rem 计算非结点上的函数值和插值函数值:
i = 1
x1(1) = -5
f(1) = y(1)
P(1) = y(1)

Do While i <= m - 1
   i = i + 1
   x1(i) = x1(1) + (i - 1) * h
   f(i) = 1 / (1 + x1(i) * x1(i))
   If x1(i) = x(Int(i / 10) + 1) Then
      P(i) = f(i)
   Else
      xx = x1(i)

      k = 1
      s = 0
      Do While k <= n
         t = 1
         j = 1
         Do While j <= n
           If j <> k Then
              t = t * (xx - x(j)) / (x(k) - x(j))
           End If
              j = j + 1
         Loop
         s = s + t * y(k)
         k = k + 1
       Loop
       P(i) = s
    End If
Loop

Cls

  
Line (200, 5000)-(14000, 5000)
Line (7000, 500)-(7000, 9000)

i = 2
m1 = -5
Do While i <= 12
   Line (1000 * i, 4950)-(1000 * i, 5050)
   i = i + 1
   Print m1
   m1 = m1 + 1
Loop



i = 1
Do While i <= m - 1

  Line (7000 - x1(i) * 1000, 5000 - P(i) * 2000)-(7000 - x1(i + 1) * 1000, 5000 - P(i + 1) * 2000), vbRed
  Line (7000 - x1(i) * 1000, 5000 - f(i) * 2000)-(7000 - x1(i + 1) * 1000, 5000 - f(i + 1) * 2000), vbBlue
   i = i + 1
Loop

End Sub

Private Sub Form_DblClick()
Unload Me
Form1.Show
End Sub

⌨️ 快捷键说明

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