插值法VB源程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档