收藏 分销(赏)

二维插值算法与实现.ppt

上传人:丰**** 文档编号:14501266 上传时间:2026-10-01 格式:PPT 页数:52 大小:448.54KB 下载积分:10 金币
下载 相关
二维插值算法与实现.ppt_第1页
第1页 / 共52页
二维插值算法与实现.ppt_第2页
第2页 / 共52页


点击查看更多>>
资源描述
土木学院报告,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,二维插值算法与实现,第一个例题,三角形的面积求解,三角形面积求解,可以采用一个界面的输入方式,也可采用,inputbox,的输入方式,但要注意,因为输入的次数为三次,要用定数循环,不能没有条件的循环。,三角形面积求解,Private Sub Form_Load(),Text2=,End Sub,Private Sub Text1_Change(Index As Integer),If Not IsNumeric(Text1(Index).Text)Then,Text2.Text=,输入的不是数字,请重新输入,Text1(Index).SetFocus,Text1(Index).Text=,Else,Text2=,输入的数字是正确的,End If,End Sub,初始化,判断输入的数据,三角形面积求解,Private Sub Command1_Click(),计算,Dim A#,B#,C#,S#,Mianji#,A=Val(Text1(0).Text),B=Val(Text1(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,三角形面积求解方法,2,三角形面积求解,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,下续,三角形面积求解,Function Split(Expression As String,Delimiter,Limit As Long=-1,Compare As VbCompareMethod=vbBinaryCompare)VBA.Strings,的成员,Split a string into an array,解释:,split,把一个字符串按分隔符分成一个数组,这个数组须是动态数组。,空格分隔容易出现问题,但逗号分隔不会出现问题。例如:,三角形面积求解,多加几个空格没有问题,但不能有两个逗号连着,多加几个空格出现问题,分解的值有问题,多加几个空格出现问题,分解的值有问题,第五个问题 线性插值计算,IIf Val(Text5)0 Then 加载试验组数,Chazhi=(e3-e1)*f2-(e3-e2)*f1)/(e2-e1),多加几个空格出现问题,分解的值有问题,Spreadsheet1.,ElseIf e3 e2 Then,If Option1(0).,For i=0 To Val(Text54)-1,HSmst(i-1).,Visible=True,HSBH(i-1).,Text5=Text5.,Dim RowtmpDat As Variant,HSmst(i)=Format(Val(HSmhst(i)-Val(HSmh(i),#0.,Visible=True,HSw(i-1).,代码续,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=&A&,b=&B&,c=&C&vbCrLf&Format(Mianji,三角形的面积为,0.#),Else,Text4.Text=,三角形的三边分别为,a=&A&,b=&B&,c=&C&vbCrLf&,输入的三条边不能构成三角形,End If,End Sub,103.75,-1,38,7,15,1;,96.75,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,Public Sub StrtoShuzhu(ByVal Str1 As String,A()As Double),Dim RowData As Variant,Dim ColData As Variant,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,For Each RowtmpDat In RowData,ColData=Split(RowtmpDat,),ReDim Preserve A(UBound(RowData),UBound(ColData),r=r+1,C=-1,For Each ColTmpDat In ColData,C=C+1,A(r,C)=ColTmpDat,Next,Next,第二个例题,含水率求解,含水率试验,要求两组计算一个平均值,当两个值求平均时,差值大于规范要求时,用红色背景显示该数据,含水率试验,Private Sub KJSZ(ByVal Shu As Integer),On Error Resume Next,Dim i As Integer,If Shu=10 Then,Text55.BackColor=vbRed,Text55=,加载的试验组数过多,本程序暂时不能处理,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),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,作业,1,添加,Microsoft office xp,控件,用表格法编写含水率或密度计算程序,学习用,split(),和,strtoshuzhu(),函数把一个字符串转变成数组。,有图的请抓图,作业可以是手写版也可以是打印版。,密度试验,第三个例题,密度求解,md md1 md2 md3 md4 md5 md6 md7 md8,加载试验组数,Private Sub Text5_Change(),Dim i As Integer,If Val(Text5)10 Then,MsgBox,输入数字出错,vbInformation,请重新输入,Exit 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,加载控件,控件显示位置,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,让控件显示在窗体上,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,当界面上的控件多时,控件的卸载,ElseIf Val(Text5)0 Then,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,2,演示数据,Private Sub MDYS_Click(),Dim i As Integer,Text5=3 ,设只有三组试验,Text5_Change ,事件过程也可直接调用,加载试验组数,For i=0 To 2 ,试验自动编号与环刀自动编号,MD1(i)=i+1,MD2(i)=423+i,Next,:,MD5(0)=60,MD6(0)=23.01 ,第一行数据,:,MD5(1)=60,:,MD5(2)=60,End Sub,计算过程,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)/100),MD8(i)=Format(tmp,0.#),干密度,End If,Next,计算过程,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)&,&MD6(i)&,&MD7(i)&,&MD8(i)&vbCrLf,Next,tmp=0,tmp=tmp+MD7(i),Next,把输入数据和计算结果,以逗号隔开,以便导入,Excel,中,计算过程,3,tmp=Format(tmp/MD1.Count,0.#),Strtmp=Strtmp&-&vbCrLf,Strtmp=Strtmp&,湿密度平均值为,&tmp&g/cm3,tmp=0,For i=0 To MD1.ubound ,获得控件数组的下标最大值,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,数据格式转换,以逗号隔开的数据分割,Private Sub Command31_Click(),On Error 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 ,不是空行的情况,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,其它分隔符情况,可以是单空格分隔,也可以是,Excel,数据复制过来的,其中,Excel,复制的分隔符是,chr(9),是个特殊字符。,其余的请仿此程序进行设计。,第五个问题 线性插值计算,引言,一维线性插值原理及程序设计,二维线性插值原理及程序设计,结论,一、引言,如表,1,所示,当勘察出来的,e,指标为,,I,L,指标为时,且有很多组数据需要查表插值时,则计算量较大。在列表中,,e,最小值为,0.5,如果是,则计算者更难着手计算。,表,1,粘性土承载力基本值,f,0,I,L,e,0.5,0.75,0.7,265,240,0.8,220,200,二、一维线性插值原理及程序设计,一维线性插值原理,(1),情况(,e,1,e,3,e,2,内部插值情况),从图,1(a),中可得:,ABC,ADE,当,f,2,f,1,时:,当,f,2,f,1,时,同理,作出相应图可得:,(1),(2),一维线性插值原理,情况,2,(,e,3,e,1,外部插值情况),从图,1(b),中可得:,ABC,ADE,当,f,2,f,1,时:,当,f,2=e2 Then,Temp1=e1,e1=e2,e2=Temp1,Temp1=f1,f1=f2,f2=Temp1,End If,注:设,e2e1,,否则,e1,与,e2,交换,,f1,与,f2,交换,一维线性插值程序,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)/(e2-e1)+f2,End If,注:内部插值计算,情况,1,注:,f2=f1,的计算方法,(1),注:,f1,f2,的计算方法,(2),注:外部插值计算,情况,2,注:计算方法(3),注:计算方法(4),一维线性插值程序,ElseIf e3 e2 Then,If f2=f1 Then,Chazhi=(f2-f1)*(e3-e1)/(e2-e1)+f1,Else,Chazhi=(e3-e1)*f2-(e3-e2)*f1)/(e2-e1),End If,End If,注:外部插值计算,情况,3,注:计算方法,(5),注:计算方法,(,),三、二维线性插值原理及程序设计,二维线性插值原理,3.2,二维插值程序设计界面,f,3,f,6,二维插值程序设计,Private Sub Command1_Click(),注:,Visual Basic,事件调用过程,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(Text4),Aa2,Val(Text10),Text11=Aa3,注:把最终计算结果显示到,Text11,文本框中,End Sub,注:根据二维插值原理,用三次一维插值实现,程序扩展应用,(1),二维插值计算是基于一维插值的基础上的,所以本程序也可进行,单指标插值计算,,例如只输入,e,1,,,e,2,,,e,3,,,f,1,,,f,2,,此时就可以计算,e,3,对应的插值指标,f,0,.,(2),二维插值计算程序为,通用程序,,不仅适合于粘性土孔隙比,e,与,I,L,插值地基承载力的情况,适合于所有具有双指标的插值计算,例如可用于地基应力分布(,a/b,l/b),。,(3),如果把地基承载力的基本值存到相应的数据库或数据表中,则可以实现,完整的地基承载力,查表插值计算。,谢谢观看!,
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服