1二維插值算法與實(shí)現(xiàn)課件_第1頁(yè)
1二維插值算法與實(shí)現(xiàn)課件_第2頁(yè)
1二維插值算法與實(shí)現(xiàn)課件_第3頁(yè)
1二維插值算法與實(shí)現(xiàn)課件_第4頁(yè)
1二維插值算法與實(shí)現(xiàn)課件_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

幾個(gè)算例華東交通大學(xué)教師:趙秀紹1二維插值算法與實(shí)現(xiàn)第一個(gè)例題三角形的面積求解1二維插值算法與實(shí)現(xiàn)三角形面積求解可以采用一個(gè)界面的輸入方式,也可采用inputbox的輸入方式,但要注意,因?yàn)檩斎氲拇螖?shù)為三次,要用定數(shù)循環(huán),不能沒有條件的循環(huán)。1二維插值算法與實(shí)現(xiàn)三角形面積求解PrivateSubForm_Load()Text2=""EndSubPrivateSubText1_Change(IndexAsInteger)IfNotIsNumeric(Text1(Index).Text)ThenText2.Text="輸入的不是數(shù)字,請(qǐng)重新輸入"Text1(Index).SetFocusText1(Index).Text=""ElseText2="輸入的數(shù)字是正確的"EndIfEndSub初始化判斷輸入的數(shù)據(jù)1二維插值算法與實(shí)現(xiàn)三角形面積求解PrivateSubCommand1_Click()‘計(jì)算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="輸入的三條邊不能構(gòu)成三角形"EndIfEndSub1二維插值算法與實(shí)現(xiàn)三角形面積求解方法21二維插值算法與實(shí)現(xiàn)三角形面積求解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="沒有數(shù)據(jù)輸入"EndIf下續(xù)1二維插值算法與實(shí)現(xiàn)三角形面積求解FunctionSplit(ExpressionAsString,[Delimiter],[LimitAsLong=-1],[CompareAsVbCompareMethod=vbBinaryCompare])VBA.Strings的成員Splitastringintoanarray解釋:split把一個(gè)字符串按分隔符分成一個(gè)數(shù)組,這個(gè)數(shù)組須是動(dòng)態(tài)數(shù)組。空格分隔容易出現(xiàn)問題,但逗號(hào)分隔不會(huì)出現(xiàn)問題。例如:1二維插值算法與實(shí)現(xiàn)三角形面積求解多加幾個(gè)空格沒有問題,但不能有兩個(gè)逗號(hào)連著多加幾個(gè)空格出現(xiàn)問題,分解的值有問題1二維插值算法與實(shí)現(xiàn)代碼續(xù)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&"輸入的三條邊不能構(gòu)成三角形"EndIfEndSub1二維插值算法與實(shí)現(xiàn)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"1二維插值算法與實(shí)現(xiàn)PublicSubStrtoShuzhu(ByValStr1AsString,A()AsDouble)DimRowDataAsVariantDimColDataAsVariantDimRowtmpDatAsVariantDimColTmpDatAsVariantDimrAsInteger,CAsIntegerRowData=Split(Str1,";")ReDimA(UBound(RowData),1)r=-11二維插值算法與實(shí)現(xiàn)ForEachRowtmpDatInRowDataColData=Split(RowtmpDat,",")ReDimPreserveA(UBound(RowData),UBound(ColData))r=r+1C=-1ForEachColTmpDatInColDataC=C+1A(r,C)=ColTmpDatNextNext1二維插值算法與實(shí)現(xiàn)第二個(gè)例題含水率求解1二維插值算法與實(shí)現(xiàn)含水率試驗(yàn)要求兩組計(jì)算一個(gè)平均值,當(dāng)兩個(gè)值求平均時(shí),差值大于規(guī)范要求時(shí),用紅色背景顯示該數(shù)據(jù)1二維插值算法與實(shí)現(xiàn)含水率試驗(yàn)PrivateSubKJSZ(ByValShuAsInteger)OnErrorResumeNextDimiAsIntegerIfShu>=10ThenText55.BackColor=vbRedText55="加載的試驗(yàn)組數(shù)過多,本程序暫時(shí)不能處理"ExitSubEndIfIfShu>1AndShu<10ThenFori=2ToShuLoadHSBH(i-1)HSBH(i-1).Visible=TrueHSBH(i-1).Top=HSBH(i-2).Top+350

加載控件數(shù)組1二維插值算法與實(shí)現(xiàn)含水率試驗(yàn)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_ClickEndSub1二維插值算法與實(shí)現(xiàn)含水率試驗(yàn)PrivateSubCommand16_Click()OnErrorResumeNextDimiAsIntegerFori=HSBH.UBoundTo1Step-1UnloadHSBH(i)UnloadHShh(i)UnloadHSmh(i)UnloadHSmhst(i)UnloadHSmhgt(i)UnloadHSmst(i)UnloadHSmgt(i)UnloadHSw(i)UnloadHSpjw(i)Nexti控件是不能重復(fù)加載的,如需重復(fù)加載,可以用錯(cuò)誤捕捉也可以先缷載要加載的控件1二維插值算法與實(shí)現(xiàn)含水率試驗(yàn)KJSZ(Val(Text54))'UShu=Val(Text54)Label66.ForeColor=vbGreenLabel66.FontBold=TrueLabel66.Caption="計(jì)算成功,請(qǐng)保存數(shù)據(jù)"ExitSuberr1:Label66.ForeColor=vbRedLabel66.FontBold=TrueLabel66.Caption="計(jì)算出錯(cuò)了,請(qǐng)確認(rèn)是否輸入數(shù)據(jù)有誤,注意試樣體積和含水率的輸入"EndSub函數(shù)調(diào)用,有兩種方法1二維插值算法與實(shí)現(xiàn)含水率試驗(yàn)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計(jì)算含水率的程序濕土計(jì)算干土計(jì)算含水率計(jì)算含水率差值計(jì)算1二維插值算法與實(shí)現(xiàn)含水率試驗(yàn)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="計(jì)算成功,請(qǐng)保存數(shù)據(jù)"ExitSuberr1:Label66.ForeColor=vbRedLabel66.FontBold=TrueLabel66.Caption="計(jì)算出錯(cuò)了,請(qǐng)確認(rèn)是否輸入數(shù)據(jù)有誤"EndSub提示計(jì)算成功還是失敗的信息1二維插值算法與實(shí)現(xiàn)表格法實(shí)現(xiàn)方法DimStr1AsString,AA()AsDoubleSpreadsheet1.Cells(1,1)="盒號(hào)"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)'把字符串分開填入表格中,以備以后測(cè)試用

NextJNext1二維插值算法與實(shí)現(xiàn)含水率計(jì)算DimIAsInteger,JAsInteger,AA()I=Spreadsheet1.ActiveSheet.UsedRange.Rows.CountReDimAA(I-2,2)ForI=0ToSpreadsheet1.ActiveSheet.UsedRange.Rows.Count-2ForJ=0To2AA(I,J)=Spreadsheet1.Cells(I+2,J+2)‘讀入表格數(shù)據(jù)

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

Next1二維插值算法與實(shí)現(xiàn)作業(yè)1添加Microsoftofficexp控件用表格法編寫含水率或密度計(jì)算程序?qū)W習(xí)用split()和strtoshuzhu()函數(shù)把一個(gè)字符串轉(zhuǎn)變成數(shù)組。有圖的請(qǐng)抓圖,作業(yè)可以是手寫版也可以是打印版。1二維插值算法與實(shí)現(xiàn)密度試驗(yàn)第三個(gè)例題密度求解1二維插值算法與實(shí)現(xiàn)mdmd1md2md3md4md5md6md7md81二維插值算法與實(shí)現(xiàn)加載試驗(yàn)組數(shù)PrivateSubText5_Change()DimiAsIntegerIfVal(Text5)<=0orVal(Text5)>10ThenMsgBox"輸入數(shù)字出錯(cuò)",vbInformation,"請(qǐng)重新輸入"ExitSubEndIfIIfVal(Text5)>0Then'加載試驗(yàn)組數(shù)

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動(dòng)態(tài)加載控件時(shí),每個(gè)控件的index屬性設(shè)置為01二維插值算法與實(shí)現(xiàn)加載控件,控件顯示位置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+3501二維插值算法與實(shí)現(xiàn)讓控件顯示在窗體上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=TrueNext1二維插值算法與實(shí)現(xiàn)當(dāng)界面上的控件多時(shí),控件的卸載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'這些數(shù)據(jù)不重要,隨便編個(gè)號(hào)MD2(0)=423EndSub1二維插值算法與實(shí)現(xiàn)2演示數(shù)據(jù)PrivateSubMDYS_Click()DimiAsIntegerText5=3’設(shè)只有三組試驗(yàn)Text5_Change‘事件過程也可直接調(diào)用,加載試驗(yàn)組數(shù)Fori=0To2’試驗(yàn)自動(dòng)編號(hào)與環(huán)刀自動(dòng)編號(hào)

MD1(i)=i+1MD2(i)=423+iNextMD3(0)=44.089:MD4(0)=161.605:MD5(0)=60MD6(0)=23.01‘第一行數(shù)據(jù)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.6EndSub1二維插值算法與實(shí)現(xiàn)計(jì)算過程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.####")‘干密度

EndIfNext1二維插值算法與實(shí)現(xiàn)計(jì)算過程2Strtmp="試樣編號(hào),環(huán)刀號(hào),刀質(zhì)量(g),環(huán)刀+濕土質(zhì)量(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把輸入數(shù)據(jù)和計(jì)算結(jié)果以逗號(hào)隔開,以便導(dǎo)入Excel中1二維插值算法與實(shí)現(xiàn)計(jì)算過程3tmp=Format(tmp/MD1.Count,"0.####")Strtmp=Strtmp&"-----------------"&vbCrLfStrtmp=Strtmp&"濕密度平均值為,"&tmp&"g/cm3,"tmp=0Fori=0ToMD1.ubound‘獲得控件數(shù)組的下標(biāo)最大值

tmp=tmp+MD8(i)Nexttmp=Format(tmp/MD1.Count,"0.####")Strtmp=Strtmp&"干密度平均值為,"&tmp&"g/cm3"Text70=Text68&StrtmpEndSub顯示到text70中,text70的mutiline屬性應(yīng)設(shè)置成true1二維插值算法與實(shí)現(xiàn)數(shù)據(jù)格式轉(zhuǎn)換1二維插值算法與實(shí)現(xiàn)以逗號(hào)隔開的數(shù)據(jù)分割PrivateSubCommand31_Click()OnErrorResumeNextDimAA()AsString,bb()AsString,iAsIntegerIfText6<>""Then'分割數(shù)據(jù)

AA=Split(Text6.Text,vbCrLf)‘先分行,以回車符分隔EndIfText5.Text=UBound(AA)+1:Text5_Change‘分配控件數(shù)組IfOption2(0).Value=TrueThen’逗號(hào)隔開的情況

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_ChangeEndIfNext1二維插值算法與實(shí)現(xiàn)其它分隔符情況可以是單空格分隔,也可以是Excel數(shù)據(jù)復(fù)制過來的,其中Excel復(fù)制的分隔符是chr(9),是個(gè)特殊字符。其余的請(qǐng)仿此程序進(jìn)行設(shè)計(jì)。1二維插值算法與實(shí)現(xiàn)第五個(gè)問題線性插值計(jì)算引言一維線性插值原理及程序設(shè)計(jì)二維線性插值原理及程序設(shè)計(jì)結(jié)論1二維插值算法與實(shí)現(xiàn)一、引言如表1所示,當(dāng)勘察出來的e指標(biāo)為0.75,IL指標(biāo)為0.625時(shí),且有很多組數(shù)據(jù)需要查表插值時(shí),則計(jì)算量較大。在列表中,e最小值為0.5,如果是0.45,則計(jì)算者更難著手計(jì)算。表1粘性土承載力基本值f0ILe0.50.750.72652400.82202001二維插值算法與實(shí)現(xiàn)二、一維線性插值原理及程序設(shè)計(jì)1二維插值算法與實(shí)現(xiàn)2.1一維線性插值原理(1)情況1(e1≤e3≤e2內(nèi)部插值情況)從圖1(a)中可得: △ABC≌△ADE

當(dāng)f2≥f1時(shí):

當(dāng)f2<f1時(shí),同理,作出相應(yīng)圖可得:

(1)(2)1二維插值算法與實(shí)現(xiàn)2.1一維線性插值原理情況2(e3<e1外部插值情況)從圖1(b)中可得:△ABC≌△ADE當(dāng)f2≥f1時(shí):

當(dāng)f2<f1時(shí),同理,作出相應(yīng)圖可得:

(3)(4)1二維插值算法與實(shí)現(xiàn)2.1一維線性插值原理第三種情況的外插情況,作出相應(yīng)圖形,同理可得(5)(6)1二維插值算法與實(shí)現(xiàn)2.2線性插值計(jì)算的流程圖1二維插值算法與實(shí)現(xiàn)2.3一維線性插值程序PrivateFunctionChazhi(ByVale1AsDouble,ByValf1AsDouble,ByVale2AsDouble,ByValf2AsDouble,ByVale3AsDouble)’注:(e1,f1)與(e2,f2)已知,求e3對(duì)應(yīng)值f3DimTemp1AsDoubleIfe1>=e2Then

Temp1=e1e1=e2e2=Temp1Temp1=f1f1=f2f2=Temp1EndIf‘注:設(shè)e2>e1,否則e1與e2交換,f1與f2交換1二維插值算法與實(shí)現(xiàn)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‘注:內(nèi)部插值計(jì)算,情況1‘注:f2>=f1的計(jì)算方法(1)’

注:f1>=f2的計(jì)算方法(2)’‘注:外部插值計(jì)算,情況2’注:計(jì)算方法(3)’注:計(jì)算方法(4)1二維插值算法與實(shí)現(xiàn)2.3一維線性插值程序ElseIfe3>e2Then

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論