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

📄 三次分段埃米尔插值.frm

📁 完整的数值模拟软件
💻 FRM
字号:
VERSION 5.00
Begin VB.Form Form9 
   BackColor       =   &H00FFFFFF&
   Caption         =   "三次分段埃尔米特插值"
   ClientHeight    =   7335
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   9915
   LinkTopic       =   "Form9"
   ScaleHeight     =   7335
   ScaleWidth      =   9915
   StartUpPosition =   3  '窗口缺省
   Begin VB.CommandButton Command1 
      Caption         =   "三次分段埃尔米特插值"
      Height          =   615
      Left            =   360
      TabIndex        =   0
      Top             =   360
      Width           =   1335
   End
End
Attribute VB_Name = "Form9"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
  Cls

n = 11
m = 101
Dim x(20), y(20), dy(20), x1(200), f(200), P(200)
Rem 计算插值节点
k = 1
x(k) = -5
y(k) = 1 / (1 + x(k) * x(k))
dy(k) = -2 * x(k) * (y(k) * y(k))
Do While k <= 10
   k = k + 1
   x(k) = x(k - 1) + 1
   y(k) = 1 / (1 + x(k) * x(k))
   dy(k) = -2 * x(k) * (y(k) * y(k))
Loop

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

Do While i <= 10

  j = 1
  Do While j <= 10
     k = k + 1
     x1(k) = -5 + 0.1 * (k - 1)
     f(k) = 1 / (1 + x1(k) * x1(k))
     If x1(k) = Int(x1(k)) Then
        P(k) = f(k)
     Else
        xx = x1(k)
        t1 = xx - x(i)
        t2 = xx - x(i + 1)
        t = x(i + 1) - x(i)
        tt = t * t
        h1 = (1 + 2 * t1 / t) * (t2 * t2) / tt
        h2 = (1 + 2 * t2 / (-t)) * (t1 * t1) / tt
        h3 = t1 * t2 * t2 / tt
        h4 = t2 * t1 * t1 / tt
        P(k) = y(i) * h1 + y(i + 1) * h2 + h3 * dy(i) + h4 * dy(i + 1)
      End If
      j = j + 1
    Loop
    i = i + 1
Loop


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 + -