1二維插值算法與實(shí)現(xiàn)[高教書苑]_第1頁
1二維插值算法與實(shí)現(xiàn)[高教書苑]_第2頁
1二維插值算法與實(shí)現(xiàn)[高教書苑]_第3頁
1二維插值算法與實(shí)現(xiàn)[高教書苑]_第4頁
1二維插值算法與實(shí)現(xiàn)[高教書苑]_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、土木學(xué)院報(bào)告 1 高級教育 土木學(xué)院報(bào)告 2 高級教育 土木學(xué)院報(bào)告 三角形面積求解三角形面積求解 可以采用一個(gè)界面的可以采用一個(gè)界面的 輸入方式,也可采用輸入方式,也可采用 inputbox的輸入方式,的輸入方式, 但要注意,因?yàn)檩斎氲⒁?,因?yàn)檩斎?的次數(shù)為三次,要用的次數(shù)為三次,要用 定數(shù)循環(huán),不能沒有定數(shù)循環(huán),不能沒有 條件的循環(huán)。條件的循環(huán)。 3 高級教育 土木學(xué)院報(bào)告 三角形面積求解三角形面積求解 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 = 輸入的不是數(shù)字,輸入的不是數(shù)字, 請重新輸入請重新輸入 Text1(Index).SetFocus Text1(Index).Text = Else Text2 = 輸入的數(shù)字是正確的輸入的數(shù)字是正確的 End If End Sub 初始化 判斷輸入的數(shù)據(jù) 4 高級教育 土木學(xué)院報(bào)告 三角形面積求解三角形面積求解 Private Sub Command1_Click()計(jì)算計(jì)算 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 = 輸入的三條邊不能構(gòu)成三角輸入的三條邊不能構(gòu)成三角 形形 End If End Sub 5 高級教育 土木學(xué)院報(bào)告 三角形面積求解方法三角形面積求解方法2 6 高級教育 土木學(xué)院報(bào)告 三角形面積

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 = 沒有數(shù)據(jù)輸入沒有數(shù)據(jù)輸入 End If 下續(xù)下續(xù) 7 高級教育 土木學(xué)院報(bào)告 三角形面積求解三角

5、形面積求解 Function Split(Expression As String, Delimiter, Limit As Long = -1, Compare As VbCompareMethod = vbBinaryCompare) VBA.Strings 的成員的成員 Split a string into an array 解釋:解釋:split把一個(gè)字符串按分隔符分成一個(gè)數(shù)組,把一個(gè)字符串按分隔符分成一個(gè)數(shù)組, 這個(gè)數(shù)組須是動態(tài)數(shù)組。這個(gè)數(shù)組須是動態(tài)數(shù)組。 空格分隔容易出現(xiàn)問題,但逗號分隔不會出現(xiàn)問題??崭穹指羧菀壮霈F(xiàn)問題,但逗號分隔不會出現(xiàn)問題。 例如:例如: 8 高級教育 土木

6、學(xué)院報(bào)告 三角形面積求解三角形面積求解 多加幾個(gè)空格沒 有問題,但不能 有兩個(gè)逗號連著 多加幾個(gè)空格出 現(xiàn)問題,分解的 值有問題 9 高級教育 土木學(xué)院報(bào)告 代碼續(xù)代碼續(xù) 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 高級教育 土木學(xué)院報(bào)告 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 高級教育 土木學(xué)院報(bào)告 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 高級教育 土木學(xué)院報(bào)告 14 高級教育 土木學(xué)院報(bào)告 含水率試驗(yàn)含水率試驗(yàn) 要求兩組計(jì)算一個(gè)平均值, 當(dāng)兩個(gè)值求平均時(shí),差值大 于規(guī)范要求時(shí),用紅色背景 顯示該數(shù)據(jù) 15 高級教育 土木學(xué)院報(bào)告 含水率試驗(yàn)含水率試驗(yàn) Private Sub KJSZ(ByVal Shu As Integer) On Error Resume Next Dim i As Integer If Shu = 10 Then Text55.BackColor = vbRed Text55 = 加載的試

10、驗(yàn)組數(shù)過多,本程序暫時(shí)不能處理加載的試驗(yàn)組數(shù)過多,本程序暫時(shí)不能處理 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 高級教育 土木學(xué)院報(bào)告 作業(yè)作業(yè) 1 添加添加Microsoft office xp控件控件 用表格法編寫含水率或密度計(jì)算程序用表格法編寫含水率或密度計(jì)算程序 學(xué)習(xí)用學(xué)習(xí)用split()和和strtoshuzh

12、u()函數(shù)把一個(gè)字符串函數(shù)把一個(gè)字符串 轉(zhuǎn)變成數(shù)組。轉(zhuǎn)變成數(shù)組。 有圖的請抓圖,作業(yè)可以是手寫版也可以是打印有圖的請抓圖,作業(yè)可以是手寫版也可以是打印 版。版。 24 高級教育 土木學(xué)院報(bào)告 密度試驗(yàn)密度試驗(yàn) 25 高級教育 土木學(xué)院報(bào)告 md md1 md2 md3 md4 md5 md6 md7 md8 26 高級教育 土木學(xué)院報(bào)告 加載試驗(yàn)組數(shù)加載試驗(yàn)組數(shù) Private Sub Text5_Change() Dim i As Integer If Val(Text5) 10 Then MsgBox 輸入數(shù)字出錯輸入數(shù)字出錯, vbInformation, 請重新輸入請重新輸入 Exit

13、 Sub End If IIf Val(Text5) 0 Then 加載試驗(yàn)組數(shù)加載試驗(yàn)組數(shù) 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 動態(tài)加載控件時(shí),每個(gè) 控件的index屬性設(shè)置為0 27 高級教育 土木學(xué)院報(bào)告 加載控件,控件顯示位置加載

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 高級教育 土木學(xué)院報(bào)告 讓控件顯示在窗體上讓控件顯示在窗體上 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 高級教育 土木學(xué)院報(bào)告 當(dāng)界面上的控件多時(shí),控件的卸載當(dāng)界面上的控件多時(shí),控件的卸載 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 這些數(shù)據(jù)不重要,隨便編個(gè)號這些數(shù)據(jù)不重要,隨便編個(gè)號 MD2(0) = 423 End Sub 30 高級教育 土木學(xué)院報(bào)告 2演示數(shù)據(jù)演示數(shù)據(jù) Private Sub MDYS_Click() Dim i As Integer Text5 = 3 設(shè)只有三組試驗(yàn)設(shè)只有三組試驗(yàn) Text5_

17、Change 事件過程也可直接調(diào)用,加載試驗(yàn)組數(shù)事件過程也可直接調(diào)用,加載試驗(yàn)組數(shù) For i = 0 To 2 試驗(yàn)自動編號與環(huán)刀自動編號試驗(yàn)自動編號與環(huán)刀自動編號 MD1(i) = i + 1 MD2(i) = 423 + i Next MD3(0) = 44.089:MD4(0) = 161.605:MD5(0) = 60 MD6(0) = 23.01 第一行數(shù)據(jù)第一行數(shù)據(jù) 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 高級教育 土木學(xué)院報(bào)告 計(jì)算過程計(jì)算過程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 高級教育 土木學(xué)院報(bào)告 計(jì)算過程計(jì)算過程2 Strtmp = 試樣編號試樣編號,環(huán)刀號環(huán)刀號,刀質(zhì)量刀質(zhì)量(g),環(huán)刀環(huán)刀+濕土質(zhì)量濕土質(zhì)量(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 把輸入數(shù)據(jù)和計(jì)算結(jié)果 以逗號隔開,以便導(dǎo)入Excel中 33 高級教育 土木學(xué)院報(bào)告 計(jì)算過程計(jì)算過程3 tmp = Format(tmp / MD1.Count, 0.#) Strtmp = Strtmp & - & vbCrLf Strtmp = Strtmp & 濕密度平均值為濕密度平均值為, & tmp & g/cm3, tmp = 0 For i = 0 To MD1.ubound 獲

21、得控件數(shù)組的下標(biāo)最大值獲得控件數(shù)組的下標(biāo)最大值 tmp = tmp + MD8(i) Next tmp = Format(tmp / MD1.Count, 0.#) Strtmp = Strtmp & 干密度平均值為干密度平均值為, & tmp & g/cm3 Text70 = Text68 & Strtmp End Sub 顯示到text70中,text70的mutiline 屬性應(yīng)設(shè)置成true 34 高級教育 土木學(xué)院報(bào)告 數(shù)據(jù)格式轉(zhuǎn)換數(shù)據(jù)格式轉(zhuǎn)換 35 高級教育 土木學(xué)院報(bào)告 以逗號隔開的數(shù)據(jù)分割以逗號隔開的數(shù)據(jù)分割 Private Sub Command31_Click() On E

22、rror Resume Next Dim AA() As String, bb() As String, i As Integer If Text6 Then 分割數(shù)據(jù)分割數(shù)據(jù) AA = Split(Text6.Text, vbCrLf) 先分行,以回車符分隔先分行,以回車符分隔 End If Text5.Text = UBound(AA) + 1:Text5_Change 分配控件數(shù)組分配控件數(shù)組 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 高級教育 土木學(xué)院報(bào)告 其它分隔符情況其它分隔符情況 可以是單空格分隔,也可以是可以是單空格分隔,也可以是Excel數(shù)據(jù)復(fù)制過數(shù)據(jù)復(fù)制過 來的,其中來的,其中Excel復(fù)制的分隔符是復(fù)制的分隔符是chr(9),是個(gè)特是個(gè)特 殊字符。

24、殊字符。 其余的請仿此程序進(jìn)行設(shè)計(jì)。其余的請仿此程序進(jìn)行設(shè)計(jì)。 37 高級教育 土木學(xué)院報(bào)告 第五個(gè)問題第五個(gè)問題 線性插值計(jì)算線性插值計(jì)算 引言引言 一維線性插值原理及程序設(shè)計(jì)一維線性插值原理及程序設(shè)計(jì) 二維線性插值原理及程序設(shè)計(jì)二維線性插值原理及程序設(shè)計(jì) 結(jié)論結(jié)論 38 高級教育 土木學(xué)院報(bào)告 一、引言一、引言 如表如表1所示,當(dāng)勘察出來的所示,當(dāng)勘察出來的e指標(biāo)為指標(biāo)為0.75,IL指標(biāo)為指標(biāo)為 0.625時(shí),且有很多組數(shù)據(jù)需要查表插值時(shí),則計(jì)時(shí),且有很多組數(shù)據(jù)需要查表插值時(shí),則計(jì) 算量較大。在列表中,算量較大。在列表中,e最小值為最小值為0.5,如果是如果是0.45, 則計(jì)算者更難著手

25、計(jì)算。則計(jì)算者更難著手計(jì)算。 表表1 1 粘性土承載力基本值粘性土承載力基本值f0 0 IL e 0.50.50.750.75 0.70.7265265240240 0.80.8220220200200 39 高級教育 土木學(xué)院報(bào)告 二、一維線性插值原理及程序設(shè)計(jì)二、一維線性插值原理及程序設(shè)計(jì) 40 高級教育 土木學(xué)院報(bào)告 2.1一維線性插值原理一維線性插值原理 (1) 情況(情況(e1 e3 e2內(nèi)部插值內(nèi)部插值 情況)情況) 從圖從圖1(a)中可得:中可得: ABC ADE 當(dāng)當(dāng)f2f1時(shí):時(shí): 當(dāng)當(dāng)f2f1時(shí),同理,作出相應(yīng)圖可得:時(shí),同理,作出相應(yīng)圖可得: 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 高級教育 土木學(xué)院報(bào)告 2.1一維線性插值原理一維線性插值原理 情況情況2(e3 e1外部插值情況)外部插值情況) 從圖從圖1(b)中可得:中可得: ABC ADE 當(dāng)當(dāng)f2f1時(shí):時(shí): 當(dāng)當(dāng)f2= e2 Then Temp1 = e1 e1 = e2 e2 = Temp1 Temp1 = f1 f1 = f2 f2 = Temp1 End If 注:設(shè)注:設(shè)e2e1,否,否 則則e1與與e2交換

27、,交換,f1 與與f2交換交換 45 高級教育 土木學(xué)院報(bào)告 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 注:內(nèi)部插值計(jì)算注:內(nèi)部插值計(jì)算,情況情況1 注:注:f2=f1的計(jì)算方法的計(jì)算方法(1) 注:注:f1f2的計(jì)算方法的計(jì)算方法(2) 注:外部插值計(jì)算,情況注:外部插值計(jì)算,情況2 注:計(jì)算方法注:計(jì)算方法(3) 注:計(jì)算方法注:計(jì)算方法(4) 46 高級教育 土木學(xué)院報(bào)告 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 注:外部插值計(jì)算,情況注:外部插值計(jì)算,情況3 注:計(jì)算方法注:計(jì)算方法(5) 注:計(jì)算方法注:計(jì)算方法() 47 高級教育 土木學(xué)院報(bào)告 三、二維線性插值原理及程序設(shè)計(jì)三、二維線性插值原理及程序設(shè)計(jì) 3.1 二二 維維 線線 性性 插插 值值 原原 理理 48 高級教育 土木學(xué)院報(bào)告 3.2 二維插值程序設(shè)計(jì)界面二維插值程序設(shè)計(jì)界面 f3 f6 49 高級教育 土木學(xué)院報(bào)告 3.3二維插值程序設(shè)計(jì)二維插值程序設(shè)計(jì) Private Sub Command1_Click() 注:注:Visual Basic事件調(diào)用過程事件調(diào)用

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 數(shù)字沒有輸入完全,請重新輸入數(shù)字沒有輸入完全,請重新輸入 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論