📄 高次插值的龙格现象.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 + -