插值法VB源程序

2018-12-05 13:37

第四章 插值方法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=\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

?已知水的温度与密度和关系如下:

温度密度

5.0 10.0 15.0 20.0 25.0 30.0 0.99

0.99

0.99

0.99

0.99990.997

试编程计算温度为6、13、16、19、23、26 oC时的密度。

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

二、拉格朗日三点插值实例

例:实验测得25OC乙醇溶液的平均摩尔体积v与乙醇的摩尔分数xi的关系数据如下表。试编程求摩尔数xi为0.3时的乙醇溶液的平均体积v。 v 21.22 22.16 23.18 24.32 25.57 26.95 0.089

0.115

0.143

0.173

0.206

0.242

xi

v xi

28.47 30.15 32.01 34.07 36.37 0.281

0.323

0.369

0.420

0.477

VB清单

Dim X, v

Private Sub Command1_click()

N = 75

X=Array(0,8,7,6,5,4.8,4.6,4.4,4.4,4.0,3.8,3.6,3.4,3.2,3.0,2.9,2.8,2.7,2.6,2.5,2.4,2.00,1.95,1.90,1.85,1.80,1.75,1.70,1.68,1.66,1.64,1.62,1.60,1.58,1.56,1.54,1.52,1.50,1.48,1.46,1.44,1.42,1.40,1.39,1.38,1.37,1.36,1.35,1.34,1.33,1.32,1.31,1.30,1.29,1.28,1.27,1.26,1.25,1.24,1.23,1.22,1.21,1.20,1.19,1.18,1.17,1.16,1.15,1.14,1.13,1.12,1.11,1.10,1.09,1.08,1.07)

v=Array(0,0.24978,0.24970,0.24958,0.24937,0.24931,0.24925,0.24917,0.24907,0.24896,0.24883,0.24868,0.24849,0.24825,0.24795,0.24778,0.24758,0.24735,0.24708,0.24678,0.24643,0.24421,0.24380,0.24333,0.24281,0.24222,0.24156,0.24081,0.24048,0.24013,0.23977,0.23938,0.23897,0.23854,0.23807,0.23758,0.23705,0.23648,0.23588,0.23524,0.23455,0.23381,0.23301,0.23259,0.23215,0.23170,0.23123,0.23073,0.23022,0.22968,0.22912,0.22854,0.22893,0.22729,0.22662,0.22593,0.22520,0.22443,0.22361,0.22275,0.22185,0.22090,0.21990,0.21884,0.21771,0.21652,0.21526,0.21390,0.21245,0.21090,0.20923,0.20744,0.20549,0.20336,0.20104,0.19848)

M = 3

X0 = Val(Text1.Text)

If X0 < X(1) Or X0 > X(N) Then Print \Else End If

Call pt(N, M, X0, A, B) v0 = F(X0, A, B) List1.AddItem \List1.AddItem \List1.AddItem \

List1.AddItem \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

试对上例编程对比利用三个、五个、七个、九个和全部节点时,摩尔分数xi为0.30时乙醇溶液的平均摩尔体积v。

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) X0 = Val(Text1.Text)

If X0 < X(1) Or X0 > X(N) Then Print \End Else End If

List1.AddItem \For M = 3 To N Step 2 Call pt(N, M, X0, A, B) v0 = F(X0, A, B)

List1.AddItem \ A=\Next M 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

B=\v0\ F = s

End Function


插值法VB源程序.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《展示设计》课程标准

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: