二维插值算法与实现演示文稿_第1页
二维插值算法与实现演示文稿_第2页
二维插值算法与实现演示文稿_第3页
二维插值算法与实现演示文稿_第4页
二维插值算法与实现演示文稿_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

二维插值算法与实现演示文稿目前一页\总数五十一页\编于十六点第一个例题三角形的面积求解2目前二页\总数五十一页\编于十六点三角形面积求解可以采用一个界面的输入方式,也可采用inputbox的输入方式,但要注意,因为输入的次数为三次,要用定数循环,不能没有条件的循环。3目前三页\总数五十一页\编于十六点三角形面积求解PrivateSubForm_Load()Text2=""EndSubPrivateSubText1_Change(IndexAsInteger)IfNotIsNumeric(Text1(Index).Text)ThenText2.Text="输入的不是数字,请重新输入"Text1(Index).SetFocusText1(Index).Text=""ElseText2="输入的数字是正确的"EndIfEndSub初始化判断输入的数据4目前四页\总数五十一页\编于十六点三角形面积求解PrivateSubCommand1_Click()‘计算DimA#,B#,C#,S#,Mianji#A=Val(Text1(0).Text)B=Val(Text1(1).Text)C=Val(Text1(2).Text)IfA+B>CAndB+C>AAndA+C>BThenS=(A+B+C)/2Mianji=Sqr(S*(S-A)*(S-B)*(S-C))Text2.Text=Format(Mianji,"三角形的面积为0.###")ElseText2.Text="输入的三条边不能构成三角形"EndIfEndSub5目前五页\总数五十一页\编于十六点三角形面积求解方法26目前六页\总数五十一页\编于十六点三角形面积求解PrivateSubCommand4_Click()OnErrorResumeNextDimAA()AsStringIfText3(0).Text<>""OrText3(1).Text<>""ThenIfOption1(0).Value=TrueThenAA=Split(Text3(0).Text,",")IfOption1(1).Value=TrueThenAA=Split(Text3(1).Text,"")ElseText4="没有数据输入"EndIf下续7目前七页\总数五十一页\编于十六点三角形面积求解FunctionSplit(ExpressionAsString,[Delimiter],[LimitAsLong=-1],[CompareAsVbCompareMethod=vbBinaryCompare])VBA.Strings的成员Splitastringintoanarray解释:split把一个字符串按分隔符分成一个数组,这个数组须是动态数组。空格分隔容易出现问题,但逗号分隔不会出现问题。例如:8目前八页\总数五十一页\编于十六点三角形面积求解多加几个空格没有问题,但不能有两个逗号连着多加几个空格出现问题,分解的值有问题9目前九页\总数五十一页\编于十六点代码续DimA#,B#,C#,S#,Mianji#A=Val(AA(0))B=Val(AA(1))C=Val(AA(2))IfA+B>CAndB+C>AAndA+C>BThenS=(A+B+C)/2Mianji=Sqr(S*(S-A)*(S-B)*(S-C))Text4.Text="三角形的三边分别为a="&A&",b="&B&",c="&C&vbCrLf&Format(Mianji,"三角形的面积为0.###")ElseText4.Text="三角形的三边分别为a="&A&",b="&B&",c="&C&vbCrLf&"输入的三条边不能构成三角形"EndIfEndSub10目前十页\总数五十一页\编于十六点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"11目前十一页\总数五十一页\编于十六点PublicSubStrtoShuzhu(ByValStr1AsString,A()AsDouble)DimRowDataAsVariantDimColDataAsVariantDimRowtmpDatAsVariantDimColTmpDatAsVariantDimrAsInteger,CAsIntegerRowData=Split(Str1,";")ReDimA(UBound(RowData),1)r=-112目前十二页\总数五十一页\编于十六点ForEachRowtmpDatInRowDataColData=Split(RowtmpDat,",")ReDimPreserveA(UBound(RowData),UBound(ColData))r=r+1C=-1ForEachColTmpDatInColDataC=C+1A(r,C)=ColTmpDatNextNext13目前十三页\总数五十一页\编于十六点第二个例题含水率求解14目前十四页\总数五十一页\编于十六点含水率试验要求两组计算一个平均值,当两个值求平均时,差值大于规范要求时,用红色背景显示该数据15目前十五页\总数五十一页\编于十六点含水率试验PrivateSubKJSZ(ByValShuAsInteger)OnErrorResumeNextDimiAsIntegerIfShu>=10ThenText55.BackColor=vbRedText55="加载的试验组数过多,本程序暂时不能处理"ExitSubEndIfIfShu>1AndShu<10ThenFori=2ToShuLoadHSBH(i-1)HSBH(i-1).Visible=TrueHSBH(i-1).Top=HSBH(i-2).Top+350

加载控件数组16目前十六页\总数五十一页\编于十六点含水率试验LoadHShh(i-1)HShh(i-1).Visible=TrueHShh(i-1).Top=HShh(i-2).Top+350LoadHSmh(i-1)HSmh(i-1).Visible=TrueHSmh(i-1).Top=HSmh(i-2).Top+350LoadHSmhst(i-1)HSmhst(i-1).Visible=TrueHSmhst(i-1).Top=HSmhst(i-2).Top+350LoadHSmhgt(i-1)HSmhgt(i-1).Visible=TrueHSmhgt(i-1).Top=HSmhgt(i-2).Top+350

LoadHSmst(i-1)HSmst(i-1).Visible=True

'HSmst(i-2).Enabled=FalseHSmst(i-1).Top=HSmst(i-2).Top+350

LoadHSmgt(i-1)HSmgt(i-1).Visible=True

'HSmgt(i-2).Enabled=FalseHSmgt(i-1).Top=HSmgt(i-2).Top+350

LoadHSw(i-1)HSw(i-1).Visible=True

'HSw(i-2).Enabled=FalseHSw(i-1).Top=HSw(i-2).Top+350

LoadHSpjw(i-1)HSpjw(i-1).Visible=True

'HSpjw(i-2).Enabled=FalseHSpjw(i-1).Top=HSpjw(i-2).Top+350NextiEndIfHSQK_ClickEndSub17目前十七页\总数五十一页\编于十六点含水率试验PrivateSubCommand16_Click()OnErrorResumeNextDimiAsIntegerFori=HSBH.UBoundTo1Step-1UnloadHSBH(i)UnloadHShh(i)UnloadHSmh(i)UnloadHSmhst(i)UnloadHSmhgt(i)UnloadHSmst(i)UnloadHSmgt(i)UnloadHSw(i)UnloadHSpjw(i)Nexti控件是不能重复加载的,如需重复加载,可以用错误捕捉也可以先缷载要加载的控件18目前十八页\总数五十一页\编于十六点含水率试验KJSZ(Val(Text54))'UShu=Val(Text54)Label66.ForeColor=vbGreenLabel66.FontBold=TrueLabel66.Caption="计算成功,请保存数据"ExitSuberr1:Label66.ForeColor=vbRedLabel66.FontBold=TrueLabel66.Caption="计算出错了,请确认是否输入数据有误,注意试样体积和含水率的输入"EndSub函数调用,有两种方法19目前十九页\总数五十一页\编于十六点含水率试验PrivateSubHSJS_Click()OnErrorGoToerr1DimiAsIntegerIfVal(Text54)>1ThenFori=0ToVal(Text54)-1HSmst(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")NextFori=1ToVal(Text54)IfiMod2=0ThenIfAbs(Val(HSw(i-1))-Val(HSw(i-2)))<2ThenHSpjw(i-2).ForeColor=vbBlackElseHSpjw(i-2).BackColor=vbRedHSpjw(i-2).FontBold=TrueEndIf

HSpjw(i-2).Text=(Val(HSw(i-1))+Val(HSw(i-2)))/2UnloadHSpjw(i-1)

EndIfNext计算含水率的程序湿土计算干土计算含水率计算含水率差值计算20目前二十页\总数五十一页\编于十六点含水率试验Elsei=0HSmst(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")HSpjw(i)=HSw(i)EndIfLabel66.ForeColor=vbGreenLabel66.FontBold=TrueLabel66.Caption="计算成功,请保存数据"ExitSuberr1:Label66.ForeColor=vbRedLabel66.FontBold=TrueLabel66.Caption="计算出错了,请确认是否输入数据有误"EndSub提示计算成功还是失败的信息21目前二十一页\总数五十一页\编于十六点表格法实现方法DimStr1AsString,AA()AsDoubleSpreadsheet1.Cells(1,1)="盒号"Spreadsheet1.Cells(1,2)="m盒(g)"Spreadsheet1.Cells(1,3)="m盒+湿土(g)"Spreadsheet1.Cells(1,4)="m盒+干土(g)"Spreadsheet1.Cells(1,5)="含水率(%)"Spreadsheet1.Cells(1,6)="平均含水率(%)"Str1="314,14.414,84.355,75.614;345,14.397,82.576,73.323"StrtoShuzhuStr1,AA()DimIAsInteger,JAsIntegerForI=0ToUBound(AA,1)ForJ=0ToUBound(AA,2)Spreadsheet1.Cells(I+2,J+1)=AA(I,J)'把字符串分开填入表格中,以备以后测试用

NextJNext22目前二十二页\总数五十一页\编于十六点含水率计算DimIAsInteger,JAsInteger,AA()ReDimAA(I-2,2)ForI=0ToSpreadsheet1.ActiveSheet.UsedRange.Rows.Count-2ForJ=0To2AA(I,J)=Spreadsheet1.Cells(I+2,J+2)‘读入表格数据

NextJSpreadsheet1.Cells(I+2,5)=Format((AA(I,1)-AA(I,2))/(AA(I,2)-AA(I,0))*100,"#.000")'含水率

IfI>=1AndIMod2=1ThenSpreadsheet1.Cells(I+2,6)=(Spreadsheet1.Cells(I+2,5)+Spreadsheet1.Cells(I+1,5))/2

EndIf

Next23目前二十三页\总数五十一页\编于十六点作业1添加Microsoftofficexp控件用表格法编写含水率或密度计算程序学习用split()和strtoshuzhu()函数把一个字符串转变成数组。有图的请抓图,作业可以是手写版也可以是打印版。24目前二十四页\总数五十一页\编于十六点密度试验第三个例题密度求解25目前二十五页\总数五十一页\编于十六点mdmd1md2md3md4md5md6md7md826目前二十六页\总数五十一页\编于十六点加载试验组数PrivateSubText5_Change()DimiAsIntegerIfVal(Text5)<=0orVal(Text5)>10ThenMsgBox"输入数字出错",vbInformation,"请重新输入"ExitSubEndIfIIfVal(Text5)>0Then'加载试验组数

IfVal(Text5)>MD1.CountThenFori=MD1.ubound+1ToVal(Text5)-1LoadMD1(i):LoadMD2(i):LoadMD3(i):LoadMD4(i)LoadMD5(i):LoadMD6(i):LoadMD7(i)LoadMD8(i):MD1(i)=i+1:MD2(i)=423+i动态加载控件时,每个控件的index属性设置为027目前二十七页\总数五十一页\编于十六点加载控件,控件显示位置MD1(i).Top=MD1(i-1).Top+350'加载后的控件位置

MD2(i).Top=MD2(i-1).Top+350

MD3(i).Top=MD1(i-1).Top+350MD4(i).Top=MD2(i-1).Top+350MD5(i).Top=MD1(i-1).Top+350MD6(i).Top=MD2(i-1).Top+350MD7(i).Top=MD1(i-1).Top+350MD8(i).Top=MD2(i-1).Top+35028目前二十八页\总数五十一页\编于十六点让控件显示在窗体上MD1(i).Visible=True'显示加载后的控件

MD2(i).Visible=True

MD3(i).Visible=TrueMD4(i).Visible=TrueMD5(i).Visible=TrueMD6(i).Visible=TrueMD7(i).Visible=TrueMD8(i).Visible=TrueNext29目前二十九页\总数五十一页\编于十六点当界面上的控件多时,控件的卸载ElseIfVal(Text5)<MD1.CountThen'如果加载的控件比目前显示的少,卸载控件

Fori=MD1.uboundToVal(Text5)Step-1Ifi>0ThenUnloadMD1(i)UnloadMD2(i):UnloadMD3(i):UnloadMD4(i)UnloadMD5(i):UnloadMD6(i):UnloadMD7(i)UnloadMD8(i)EndIfNextEndIfEndIfMD1(0)=1'这些数据不重要,随便编个号MD2(0)=423EndSub30目前三十页\总数五十一页\编于十六点2演示数据PrivateSubMDYS_Click()DimiAsIntegerText5=3’设只有三组试验Text5_Change‘事件过程也可直接调用,加载试验组数Fori=0To2’试验自动编号与环刀自动编号

MD1(i)=i+1MD2(i)=423+iNextMD3(0)=44.089:MD4(0)=161.605:MD5(0)=60MD6(0)=23.01‘第一行数据MD3(1)=41.089:MD4(1)=169.605:MD5(1)=60MD6(1)=22.6MD3(2)=43.089:MD4(2)=169.607:MD5(2)=60MD6(2)=20.6EndSub31目前三十一页\总数五十一页\编于十六点计算过程1PrivateSubMDJS_Click()DimiAsInteger,KAsIntegerDimtmpAsDouble,StrtmpAsStringFori=0ToVal(Text5)-1tmp=(Val(MD4(i))-Val(MD3(i)))/Val(MD5(i))MD7(i)=Format(tmp,"0.####")‘湿密度

IfVal(MD6(i))>0Thentmp=Val(MD7(i))/(1+Val(MD6(i))/100)MD8(i)=Format(tmp,"0.####")‘干密度

EndIfNext32目前三十二页\总数五十一页\编于十六点计算过程2Strtmp="试样编号,环刀号,刀质量(g),环刀+湿土质量(g),试样体积(cm3),含水率(%),湿密度(g/cm3),干密度(g/cm3)"&vbCrLfFori=0ToVal(Text5)-1Strtmp=Strtmp&MD1(i)&","&MD2(i)&","&MD3(i)&","&MD4(i)&","&MD5(i)&","&MD6(i)&","&MD7(i)&","&MD8(i)&vbCrLfNexttmp=0Fori=0ToMD1.uboundtmp=tmp+MD7(i)Next把输入数据和计算结果以逗号隔开,以便导入Excel中33目前三十三页\总数五十一页\编于十六点计算过程3tmp=Format(tmp/MD1.Count,"0.####")Strtmp=Strtmp&"-----------------"&vbCrLfStrtmp=Strtmp&"湿密度平均值为,"&tmp&"g/cm3,"tmp=0Fori=0ToMD1.ubound‘获得控件数组的下标最大值

tmp=tmp+MD8(i)Nexttmp=Format(tmp/MD1.Count,"0.####")Strtmp=Strtmp&"干密度平均值为,"&tmp&"g/cm3"Text70=Text68&StrtmpEndSub显示到text70中,text70的mutiline属性应设置成true34目前三十四页\总数五十一页\编于十六点数据格式转换35目前三十五页\总数五十一页\编于十六点以逗号隔开的数据分割PrivateSubCommand31_Click()OnErrorResumeNextDimAA()AsString,bb()AsString,iAsIntegerIfText6<>""Then'分割数据

AA=Split(Text6.Text,vbCrLf)‘先分行,以回车符分隔EndIfText5.Text=UBound(AA)+1:Text5_Change‘分配控件数组IfOption2(0).Value=TrueThen’逗号隔开的情况

Fori=0ToUBound(AA)IfAA(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-1Text5_ChangeEndIfNext36目前三十六页\总数五十一页\编于十六点其它分隔符情况可以是单空格分隔,也可以是Excel数据复制过来的,其中Excel复制的分隔符是chr(9),是个特殊字符。其余的请仿此程序进行设计。37目前三十七页\总数五十一页\编于十六点第五个问题线性插值计算引言一维线性插值原理及程序设计二维线性插值原理及程序设计结论38目前三十八页\总数五十一页\编于十六点一、引言如表1所示,当勘察出来的e指标为0.75,IL指标为0.625时,且有很多组数据需要查表插值时,则计算量较大。在列表中,e最小值为0.5,如果是0.45,则计算者更难着手计算。表1粘性土承载力基本值f0

ILe0.50.750.72652400.822020039目前三十九页\总数五十一页\编于十六点二、一维线性插值原理及程序设计40目前四十页\总数五十一页\编于十六点2.1一维线性插值原理(1)情况1(e1≤e3≤e2内部插值情况)从图1(a)中可得: △ABC≌△ADE

当f2≥f1时:

当f2<f1时,同理,作出相应图可得:

(1)(2)41目前四十一页\总数五十一页\编于十六点2.1一维线性插值原理情况2(e3<e1外部插值情况)从图1(b)中可得:△ABC≌△ADE当f2≥f1时:

当f2<f1时,同理,作出相应图可得:

(3)(4)42目前四十二页\总数五十一页\编于十六点2.1一维线性插值原理第三种情况的外插情况,作出相应图形,同理可得(5)(6)43目前四十三页\总数五十一页\编于十六点2.2线性插值计算的流程图44目前四十四页\总数五十一页\编于十六点2.3一维线性插值程序PrivateFunctionChazhi(ByVale1AsDouble,ByValf1AsDouble,ByVale2AsDouble,ByValf2AsDouble,ByVale3AsDouble)’注:(e1,f1)与(e2,f2)已知,求e3对应值f3DimTemp1AsDoubleIfe1>=e2Then

Temp1=e1e1=e2e2=Temp1Temp1=f1f1=f2f2=Temp1EndIf‘注:设e2>e1,否则e1与e2交换,f1与f2交换45目前四十五页\总数五十一页\编于十六点2.3一维线性插值程序Ife3>=e1Ande3<=e2Then

Iff2>=f1ThenChazhi=(e3-e1)*(f2-f1)/(e2-e1)+f1ElseChazhi=(e2-e3)*(f1-f2)/(e2-e1)+f2EndIfElseIfe3<e1Then

Iff2>=f1ThenChazhi=((e1-e3)*f2-(e2-e3)*f1)/(e1-e2)

ElseChazhi=(f1-f2)*(e2-e3)/(e2-e1)+f2

EndIf‘注:内部插值计算,情况1‘注:f2>=f1的计算方法(1)’

注:f1>=f2的计算方法(2)’‘注:外部插值计算,情况2’注:计算方法(3)’注:计算方法(4)46目前

温馨提示

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

评论

0/150

提交评论