插值法VB源程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章 插值方法VB
一、线性插值应用实例VB1
已知:169的平方根为13,196的平方根为14,编程求175的平方根。 Private Sub Command1_click()
Dim x(1 To 2),y(1 To 2) As Single
x(1)=169:y(1)=13
x(2)=196:y(2)=14
x0=175
y0=F(x,y,x0)
a=Format$(y0,"###.##")
Text1.Text="y0=" & Str$(a)
End Sub
Private Function F(x,y,x0)
F=y(1)+(y(2)-y(1))/(x(2)-x(1))*(x0-x(1))
End Function
线性插值应用实例VB2
已知水的温度与密度和关系如下:
试编程计算温度为6、13、16、19、23、26 o C 时的密度。
Private Sub Command1_click()
N = 6
X = Array(0, 5, 10, 15, 20, 25, 30)
Y = Array(0, 0.999965, 0.9997, 0.999099, 0.998203, 0.997044, 0.995646) xc = Array(0, 6, 13, 16, 19, 23, 26)
List1.AddItem " x0" & " y0"
For I = 1 To 6
X0 = xc(I)
Y0 = f(N, X, Y , X0)
List1.AddItem Str$(X0) & Str$(Y0)
Next I
End Sub
Private Function f(N, X, Y , X0)
For I = 1 To N
If X0 <= X(I) Then
W = I
0.990.990.990.990.9970.9999密度30.0 25.0 20.0 15.0 10.0 5.0 温度
Exit For
End If
Next I
W = W - 1
If W <= 1 Then
W = 1: End If
If W >= N Then
W = N - 1: End If
f = Y(W) + (Y(W + 1) - Y(W)) / (X(W + 1) - X(W)) * (X0 - X(W))
End Function
二、拉格朗日三点插值实例
例:实验测得25O C 乙醇溶液的平均摩尔体积v 与乙醇的摩尔分数xi 的关系数据如下表。试编程求摩尔数xi 为0.3时的乙醇溶液的平均体积v 。
VB 清单
Dim X, v
Private Sub Command1_click()
N = 11
X = Array(0, 0.0891, 0.1153, 0.1435, 0.1739, 0.2068, 0.2424, 0.2811, 0.3234, 0.3697, 0.4207, 0.4771)
v = Array(0, 21.22, 22.16, 23.18, 24.32, 25.57, 26.95, 28.47, 30.15, 32.01, 34.07, 36.37)
M = 3
X0 = Val(Text1.Text)
If X0 < X(1) Or X0 > X(N) Then
Print "error"
Else
End If
0.2420.2060.1730.1430.1150.089xi 26.95 25.57 24.32 23.18 22.16 21.22 v 0.4770.4200.3690.3230.281xi
36.37 34.07 32.01 30.15 28.47 v
Call pt(N, M, X0, A, B)
v0 = F(X0, A, B)
List1.AddItem "a=" & A
List1.AddItem "b=" & B
List1.AddItem "X0=" & X0
List1.AddItem "v0=" & Format$(v0, "###.####") End Sub
Private Sub pt(N, M, X0, A, B)
For I = 1 To N
If X0 <= X(I) Then
If Abs(X0 - X(I - 1)) <= Abs(X0 - X(I)) Then
A = I - Int((M + 1) / 2)
Exit For
End If
Else
A = I - Int(M / 2)
End If
Next I
If A <= 0 Then
A = 1: End If
B = A + M - 1
If B >= N Then
B = N: End If
A =
B - M + 1
End Sub
Private Function F(X0, A, B)
For I = A To B
W = 1
For J = A To B
If J <> I Then
W = W * (X0 - X(J)) / (X(I) - X(J)): End If
Next J
s = s + W * v(I)
Next I
F = s
End Function
三、拉格朗日全点插值VB