1二维插值算法与实现[高教书苑]_第1页
1二维插值算法与实现[高教书苑]_第2页
1二维插值算法与实现[高教书苑]_第3页
1二维插值算法与实现[高教书苑]_第4页
1二维插值算法与实现[高教书苑]_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、土木学院报告 1 高级教育 土木学院报告 2 高级教育 土木学院报告 三角形面积求解三角形面积求解 可以采用一个界面的可以采用一个界面的 输入方式,也可采用输入方式,也可采用 inputbox的输入方式,的输入方式, 但要注意,因为输入但要注意,因为输入 的次数为三次,要用的次数为三次,要用 定数循环,不能没有定数循环,不能没有 条件的循环。条件的循环。 3 高级教育 土木学院报告 三角形面积求解三角形面积求解 Private Sub Form_Load() Text2 = End Sub Private Sub Text1_Change(Index As Integer) If Not Is

2、Numeric(Text1(Index).Text) Then Text2.Text = 输入的不是数字,输入的不是数字, 请重新输入请重新输入 Text1(Index).SetFocus Text1(Index).Text = Else Text2 = 输入的数字是正确的输入的数字是正确的 End If End Sub 初始化 判断输入的数据 4 高级教育 土木学院报告 三角形面积求解三角形面积求解 Private Sub Command1_Click()计算计算 Dim A#, B#, C#, S#, Mianji# A = Val(Text1(0).Text) B = Val(Text1

3、(1).Text) C = Val(Text1(2).Text) If A + B C And B + C A And A + C B Then S = (A + B + C) / 2 Mianji = Sqr(S * (S - A) * (S - B) * (S - C) Text2.Text = Format(Mianji, 三角形的面三角形的面 积为积为0.#) Else Text2.Text = 输入的三条边不能构成三角输入的三条边不能构成三角 形形 End If End Sub 5 高级教育 土木学院报告 三角形面积求解方法三角形面积求解方法2 6 高级教育 土木学院报告 三角形面积

4、求解三角形面积求解 Private Sub Command4_Click() On Error Resume Next Dim AA() As String If Text3(0).Text Or Text3(1).Text Then If Option1(0).Value = True Then AA = Split(Text3(0).Text, ,) If Option1(1).Value = True Then AA = Split(Text3(1).Text, ) Else Text4 = 没有数据输入没有数据输入 End If 下续下续 7 高级教育 土木学院报告 三角形面积求解三角

5、形面积求解 Function Split(Expression As String, Delimiter, Limit As Long = -1, Compare As VbCompareMethod = vbBinaryCompare) VBA.Strings 的成员的成员 Split a string into an array 解释:解释:split把一个字符串按分隔符分成一个数组,把一个字符串按分隔符分成一个数组, 这个数组须是动态数组。这个数组须是动态数组。 空格分隔容易出现问题,但逗号分隔不会出现问题。空格分隔容易出现问题,但逗号分隔不会出现问题。 例如:例如: 8 高级教育 土木

6、学院报告 三角形面积求解三角形面积求解 多加几个空格没 有问题,但不能 有两个逗号连着 多加几个空格出 现问题,分解的 值有问题 9 高级教育 土木学院报告 代码续代码续 Dim A#, B#, C#, S#, Mianji# A = Val(AA(0) B = Val(AA(1) C = Val(AA(2) If A + B C And B + C A And A + C B Then S = (A + B + C) / 2 Mianji = Sqr(S * (S - A) * (S - B) * (S - C) Text4.Text = 三角形的三边分别为三角形的三边分别为a= 96.75

7、,1,86,52,30,1; 420.77,-1,39,18,30,1; 208.64,1,62,31,30,1; 436.79,1,25,56,30,-1; 56.48,-1,87,1,15,-1; 98.8,-1,53,22,0,-1; 68.62,1,36,38,0,-1; 95.1,1,59,29,0,-1; 207.41,-1,51,40,45,-1 11 高级教育 土木学院报告 Public Sub StrtoShuzhu(ByVal Str1 As String, A() As Double) Dim RowData As Variant Dim ColData As Varia

8、nt Dim RowtmpDat As Variant Dim ColTmpDat As Variant Dim r As Integer, C As Integer RowData = Split(Str1, ;) ReDim A(UBound(RowData), 1) r = -1 12 高级教育 土木学院报告 For Each RowtmpDat In RowData ColData = Split(RowtmpDat, ,) ReDim Preserve A(UBound(RowData), UBound(ColData) r = r + 1 C = -1 For Each ColTm

9、pDat In ColData C = C + 1 A(r, C) = ColTmpDat Next Next 13 高级教育 土木学院报告 14 高级教育 土木学院报告 含水率试验含水率试验 要求两组计算一个平均值, 当两个值求平均时,差值大 于规范要求时,用红色背景 显示该数据 15 高级教育 土木学院报告 含水率试验含水率试验 Private Sub KJSZ(ByVal Shu As Integer) On Error Resume Next Dim i As Integer If Shu = 10 Then Text55.BackColor = vbRed Text55 = 加载的试

10、验组数过多,本程序暂时不能处理加载的试验组数过多,本程序暂时不能处理 Exit Sub End If If Shu 1 And Shu 1 Then For i = 0 To Val(Text54) - 1 HSmst(i) = Format(Val(HSmhst(i) - Val(HSmh(i), #0.000) HSmgt(i) = Format(HSmhgt(i) - HSmh(i), #0.000) HSw(i) = Format(HSmhst(i) - HSmhgt(i) * 100 / HSmgt(i), #0.000) Next For i = 1 To Val(Text54)

11、If i Mod 2 = 0 Then If Abs(Val(HSw(i - 1) - Val(HSw(i - 2) = 1 And I Mod 2 = 1 Then Spreadsheet1.Cells(I + 2, 6) = (Spreadsheet1.Cells(I + 2, 5) + Spreadsheet1.Cells(I + 1, 5) / 2 End If Next 23 高级教育 土木学院报告 作业作业 1 添加添加Microsoft office xp控件控件 用表格法编写含水率或密度计算程序用表格法编写含水率或密度计算程序 学习用学习用split()和和strtoshuzh

12、u()函数把一个字符串函数把一个字符串 转变成数组。转变成数组。 有图的请抓图,作业可以是手写版也可以是打印有图的请抓图,作业可以是手写版也可以是打印 版。版。 24 高级教育 土木学院报告 密度试验密度试验 25 高级教育 土木学院报告 md md1 md2 md3 md4 md5 md6 md7 md8 26 高级教育 土木学院报告 加载试验组数加载试验组数 Private Sub Text5_Change() Dim i As Integer If Val(Text5) 10 Then MsgBox 输入数字出错输入数字出错, vbInformation, 请重新输入请重新输入 Exit

13、 Sub End If IIf Val(Text5) 0 Then 加载试验组数加载试验组数 If Val(Text5) MD1.Count Then For i = MD1.ubound + 1 To Val(Text5) - 1 Load MD1(i):Load MD2(i):Load MD3(i): Load MD4(i) Load MD5(i):Load MD6(i):Load MD7(i) Load MD8(i):MD1(i) = i + 1:MD2(i) = 423 + i 动态加载控件时,每个 控件的index属性设置为0 27 高级教育 土木学院报告 加载控件,控件显示位置加载

14、控件,控件显示位置 MD1(i).Top = MD1(i - 1).Top + 350 加载后的控件加载后的控件 位置位置 MD2(i).Top = MD2(i - 1).Top + 350 MD3(i).Top = MD1(i - 1).Top + 350 MD4(i).Top = MD2(i - 1).Top + 350 MD5(i).Top = MD1(i - 1).Top + 350 MD6(i).Top = MD2(i - 1).Top + 350 MD7(i).Top = MD1(i - 1).Top + 350 MD8(i).Top = MD2(i - 1).Top + 350

15、28 高级教育 土木学院报告 让控件显示在窗体上让控件显示在窗体上 MD1(i).Visible = True 显示加载后的控件显示加载后的控件 MD2(i).Visible = True MD3(i).Visible = True MD4(i).Visible = True MD5(i).Visible = True MD6(i).Visible = True MD7(i).Visible = True MD8(i).Visible = True Next 29 高级教育 土木学院报告 当界面上的控件多时,控件的卸载当界面上的控件多时,控件的卸载 ElseIf Val(Text5) 0 Th

16、en Unload MD1(i) Unload MD2(i): Unload MD3(i):Unload MD4(i) Unload MD5(i): Unload MD6(i):Unload MD7(i) Unload MD8(i) End If Next End If End If MD1(0) = 1 这些数据不重要,随便编个号这些数据不重要,随便编个号 MD2(0) = 423 End Sub 30 高级教育 土木学院报告 2演示数据演示数据 Private Sub MDYS_Click() Dim i As Integer Text5 = 3 设只有三组试验设只有三组试验 Text5_

17、Change 事件过程也可直接调用,加载试验组数事件过程也可直接调用,加载试验组数 For i = 0 To 2 试验自动编号与环刀自动编号试验自动编号与环刀自动编号 MD1(i) = i + 1 MD2(i) = 423 + i Next MD3(0) = 44.089:MD4(0) = 161.605:MD5(0) = 60 MD6(0) = 23.01 第一行数据第一行数据 MD3(1) = 41.089:MD4(1) = 169.605:MD5(1) = 60 MD6(1) = 22.6 MD3(2) = 43.089:MD4(2) = 169.607:MD5(2) = 60 MD6(

18、2) = 20.6 End Sub 31 高级教育 土木学院报告 计算过程计算过程1 Private Sub MDJS_Click() Dim i As Integer, K As Integer Dim tmp As Double, Strtmp As String For i = 0 To Val(Text5) - 1 tmp = (Val(MD4(i) - Val(MD3(i) / Val(MD5(i) MD7(i) = Format(tmp, 0.#) 湿密度湿密度 If Val(MD6(i) 0 Then tmp = Val(MD7(i) / (1 + Val(MD6(i) / 10

19、0) MD8(i) = Format(tmp, 0.#) 干密度干密度 End If Next 32 高级教育 土木学院报告 计算过程计算过程2 Strtmp = 试样编号试样编号,环刀号环刀号,刀质量刀质量(g),环刀环刀+湿土质量湿土质量(g),试样体积试样体积 (cm3),含水率含水率(%),湿密度湿密度(g/cm3),干密度干密度(g/cm3) & vbCrLf For i = 0 To Val(Text5) - 1 Strtmp = Strtmp & MD1(i) & , & MD2(i) & , & MD3(i) & , & MD4(i) & , & MD5(i) & , & MD

20、6(i) & , & MD7(i) & , & MD8(i) & vbCrLf Next tmp = 0 For i = 0 To MD1.ubound tmp = tmp + MD7(i) Next 把输入数据和计算结果 以逗号隔开,以便导入Excel中 33 高级教育 土木学院报告 计算过程计算过程3 tmp = Format(tmp / MD1.Count, 0.#) Strtmp = Strtmp & - & vbCrLf Strtmp = Strtmp & 湿密度平均值为湿密度平均值为, & tmp & g/cm3, tmp = 0 For i = 0 To MD1.ubound 获

21、得控件数组的下标最大值获得控件数组的下标最大值 tmp = tmp + MD8(i) Next tmp = Format(tmp / MD1.Count, 0.#) Strtmp = Strtmp & 干密度平均值为干密度平均值为, & tmp & g/cm3 Text70 = Text68 & Strtmp End Sub 显示到text70中,text70的mutiline 属性应设置成true 34 高级教育 土木学院报告 数据格式转换数据格式转换 35 高级教育 土木学院报告 以逗号隔开的数据分割以逗号隔开的数据分割 Private Sub Command31_Click() On E

22、rror Resume Next Dim AA() As String, bb() As String, i As Integer If Text6 Then 分割数据分割数据 AA = Split(Text6.Text, vbCrLf) 先分行,以回车符分隔先分行,以回车符分隔 End If Text5.Text = UBound(AA) + 1:Text5_Change 分配控件数组分配控件数组 If Option2(0).Value = True Then 逗号隔开的情况逗号隔开的情况 For i = 0 To UBound(AA) If AA(i) Then 不是空行的情况不是空行的情

23、况 bb = Split(AA(i), ,) MD1(i) = bb(0):MD2(i) = bb(1): MD3(i) = bb(2) MD4(i) = bb(3):MD5(i) = bb(4): MD6(i) = bb(5) Else 是空行的情况是空行的情况 Text5 = Text5.Text - 1 Text5_Change End If Next 36 高级教育 土木学院报告 其它分隔符情况其它分隔符情况 可以是单空格分隔,也可以是可以是单空格分隔,也可以是Excel数据复制过数据复制过 来的,其中来的,其中Excel复制的分隔符是复制的分隔符是chr(9),是个特是个特 殊字符。

24、殊字符。 其余的请仿此程序进行设计。其余的请仿此程序进行设计。 37 高级教育 土木学院报告 第五个问题第五个问题 线性插值计算线性插值计算 引言引言 一维线性插值原理及程序设计一维线性插值原理及程序设计 二维线性插值原理及程序设计二维线性插值原理及程序设计 结论结论 38 高级教育 土木学院报告 一、引言一、引言 如表如表1所示,当勘察出来的所示,当勘察出来的e指标为指标为0.75,IL指标为指标为 0.625时,且有很多组数据需要查表插值时,则计时,且有很多组数据需要查表插值时,则计 算量较大。在列表中,算量较大。在列表中,e最小值为最小值为0.5,如果是如果是0.45, 则计算者更难着手

25、计算。则计算者更难着手计算。 表表1 1 粘性土承载力基本值粘性土承载力基本值f0 0 IL e 0.50.50.750.75 0.70.7265265240240 0.80.8220220200200 39 高级教育 土木学院报告 二、一维线性插值原理及程序设计二、一维线性插值原理及程序设计 40 高级教育 土木学院报告 2.1一维线性插值原理一维线性插值原理 (1) 情况(情况(e1 e3 e2内部插值内部插值 情况)情况) 从图从图1(a)中可得:中可得: ABC ADE 当当f2f1时:时: 当当f2f1时,同理,作出相应图可得:时,同理,作出相应图可得: 12 13 12 13 ee

26、 ee AD AB ff ff DE BC 1 12 1312 3 )()( f ee eeff f 2 12 2132 3 )( )()( f ee ffee f (1)(1) (2)(2) 41 高级教育 土木学院报告 2.1一维线性插值原理一维线性插值原理 情况情况2(e3 e1外部插值情况)外部插值情况) 从图从图1(b)中可得:中可得: ABC ADE 当当f2f1时:时: 当当f2= e2 Then Temp1 = e1 e1 = e2 e2 = Temp1 Temp1 = f1 f1 = f2 f2 = Temp1 End If 注:设注:设e2e1,否,否 则则e1与与e2交换

27、,交换,f1 与与f2交换交换 45 高级教育 土木学院报告 2.3一维线性插值程序一维线性插值程序 If e3 = e1 And e3 = f1 Then Chazhi = (e3 - e1) * (f2 - f1) / (e2 - e1) + f1 Else Chazhi = (e2 - e3) * (f1 - f2) / (e2 - e1) + f2 End If ElseIf e3 = f1 Then Chazhi = (e1 - e3) * f2 - (e2 - e3) * f1) / (e1 - e2) Else Chazhi = (f1 - f2) * (e2 - e3) / (

28、e2 - e1) + f2 End If 注:内部插值计算注:内部插值计算,情况情况1 注:注:f2=f1的计算方法的计算方法(1) 注:注:f1f2的计算方法的计算方法(2) 注:外部插值计算,情况注:外部插值计算,情况2 注:计算方法注:计算方法(3) 注:计算方法注:计算方法(4) 46 高级教育 土木学院报告 2.3一维线性插值程序一维线性插值程序 ElseIf e3 e2 Then If f2 = f1 Then Chazhi = (f2 - f1) * (e3 - e1) / (e2 - e1) + f1 Else Chazhi = (e3 - e1) * f2 - (e3 - e

29、2) * f1) / (e2 - e1) End If End If 注:外部插值计算,情况注:外部插值计算,情况3 注:计算方法注:计算方法(5) 注:计算方法注:计算方法() 47 高级教育 土木学院报告 三、二维线性插值原理及程序设计三、二维线性插值原理及程序设计 3.1 二二 维维 线线 性性 插插 值值 原原 理理 48 高级教育 土木学院报告 3.2 二维插值程序设计界面二维插值程序设计界面 f3 f6 49 高级教育 土木学院报告 3.3二维插值程序设计二维插值程序设计 Private Sub Command1_Click() 注:注:Visual Basic事件调用过程事件调用

30、过程 Dim Aa1 As Double, Aa2 As Double, Aa3 As Double, Aa4 As Double If Text1 = Or Text2 = Or Text3 = Or Text4 = Or Text5 = Or Text6 = Or _ Text7 = Or Text8 = Or Text9 = Or Text10 = Then 注:注:Text1为为e1,Text2为为e2,Text3为为IL1,Text4为为IL2,Text5为为f1, Text6为为f2 注:注:Text7为为f4,Text8为为f5,Text9为为e3,Text10为为IL3 MsgBox 数字没有输入完全,请重新输入数字没有输入完全,请重新输入 Exit Sub End If Aa1 = chazhi(Val(Text1), Val(Text5), Val(Text2), Val(Text6), Val(Text9) Aa2 = chazhi(Val(Text1), Val(Text7), Val(Text2), Val(Text8), Val(Text9) Aa3 = chazhi(Val(Text3), Aa1, Val(Tex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论