📄 三次分段埃米尔插值.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 + -