采矿系统工程-上机实验报告
- 格式:doc
- 大小:292.00 KB
- 文档页数:12
中国矿业大学 矿业工程学院
采矿系统工程
实验报告
姓 名
学 号 0110
班 级 采矿工程
指导教师 周伟
日 期 2013年12月 实验报告一
1. 实验名称:用半变异函数解决地质学统计问题
2. 题目
设Z(x)为二维区域化变量,满足本征假设,在图所示的正方形网格节点处有一批已知数据,小正方形的边长为a,试计算出图所示α1(东西) ,α2(南北) , α3(北东) ,α4(北西)四个方向的实验变差函数值,只计算前三个的h值,并做出α 1(东), α3(北) 两个方向的实验变图案来。
35 35 33 33 34 31 35 37 41 41
35 35 35 35 33 41
37 35 37 35 37 37 39 39 41
37 40 42 34 35 41 34
37 41 33
35 42 33
39 31
30
注:以上每个数字的位置本应在其所在表格的左上角点处 3. 程序流程图
4. 实验思路
1、 建立源数据文本文档xtgc.txt,作为输入数据源;
2、 在vb窗体中绘制所需图框,其中text1,text2作为接收输入的计算起始和终止步距;4个复选框为选择计算的方向,text3用于输出结果,picture1用于输出绘图内容;
3、 编写代码,先编写输入数据的代码,再编写东西、南北、北东、北西四个方向计算方法的子函数,其中子函数的设计是根据方向和输入数据维数的不同运用数组编写,再编写调用子函数的过程,最后根据计算结果编写绘图程序。
4、 运行程序,输入步距分别为100,300,再选择计算方向,点击输入数据按钮,再点击计算,文本框中出现显示结果,再点击绘图,在绘图框中出现r(h)的图像。 开始
输入原始数据
输入起始和终止步距
选择计算方向
计算
绘图
结束 5. 程序代码
Option Base 1
Dim a(8, 10) As Integer '数组a用于存放输入数据
Dim b(3) As Single
Dim c(3) As Single
Dim d(3) As Single
Dim e(3) As Single
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Open "c:\ckxtgc1\xtgc.txt" For Input As #1
Do While Not EOF(1)
For i = 1 To 8
For j = 1 To 10
Input #1, a(i, j)
Next j
Next i
Loop
Close #1
End Sub
Private Sub command2_click()
Dim h As Integer, r1 As Single, r2 As Single, r3 As Single, r4 As Single, b1 As
Integer, b2 As Integer, k As Integer
b1 = Val(h1.Text)
b2 = Val(hn.Text)
For k = 1 To (b2 - b1 + 100) / 100
If Check1.Value = 1 Then
Call ewr(k, r1)
b(k) = r1
xtr.Text = xtr.Text & "东西方向r(" & k * 100 & "):" & Str(r1) & vbCrLf
End If
If Check2.Value = 1 Then
Call snr(k, r2)
c(k) = r2
xtr.Text = xtr.Text & "南北方向r(" & k * 100 & "):" & Str(r2) & vbCrLf
End If
If Check3.Value = 1 Then
Call ner(k, r3)
d(k) = r3
xtr.Text = xtr.Text & "北东方向r(" & k * 100 & "):" & Str(r3) & vbCrLf
End If
If Check4.Value = 1 Then
Call nwr(k, r4) e(k) = r4
xtr.Text = xtr.Text & "北西方向r(" & k * 100 & "):" & Str(r4) & vbCrLf
End If
Next k
End Sub
Private Sub ewr(ByVal b As Integer, r As Single) '东西方向变异函数
Dim i As Integer, j As Integer, a(8, 10) As Integer, js As Integer
r = 0
Open "c:\ckxtgc1\xtgc.txt" For Input As #1
Do While Not EOF(1)
For i = 1 To 8
For j = 1 To 10
Input #1, a(i, j)
Next j
Next i
Loop
Close #1
For i = 1 To 8
For j = 1 To 10 - b
If (a(i, j) <> 0 And a(i, j + b) <> 0) Then
r = r + (a(i, j) - a(i, j + b)) * (a(i, j) - a(i, j + b))
js = js + 1
End If
Next j
Next i
r = r / (2 * js)
End Sub
Private Sub snr(ByVal b As Integer, r As Single) '南北方向半变异函数
Dim i As Integer, j As Integer, js As Integer
r = 0
Open "c:\ckxtgc1\xtgc.txt" For Input As #1
Do While Not EOF(1)
For i = 1 To 8
For j = 1 To 10
Input #1, a(i, j)
Next j
Next i
Loop
Close #1
For i = 1 To 8 - b
For j = 1 To 10
If (a(i, j) <> 0 And a(i + b, j) <> 0) Then
r = r + (a(i, j) - a(i + b, j)) * (a(i, j) - a(i + b, j))
js = js + 1 End If
Next j
Next i
r = r / (2 * js)
End Sub
Private Sub ner(ByVal b As Integer, r As Single) '北东方向半变异函数
Dim i As Integer, j As Integer, js As Integer
r = 0
Open "c:\ckxtgc1\xtgc.txt" For Input As #1
Do While Not EOF(1)
For i = 1 To 8
For j = 1 To 10
Input #1, a(i, j)
Next j
Next i
Loop
Close #1
For i = 1 + b To 8
For j = 1 To 10 - b
If (a(i, j) <> 0 And a(i - b, j + b) <> 0) Then
r = r + (a(i, j) - a(i - b, j + b)) * (a(i, j) - a(i - b, j + b))
js = js + 1
End If
Next j
Next i
r = r / (2 * js)
End Sub
Private Sub nwr(ByVal b As Integer, r As Single) '北西方向半变异函数
Dim i As Integer, j As Integer, js As Integer
r = 0
Open "c:\ckxtgc1\xtgc.txt" For Input As #1
Do While Not EOF(1)
For i = 1 To 8
For j = 1 To 10
Input #1, a(i, j)
Next j
Next i
Loop
Close #1
For i = 1 + b To 8
For j = 1 + b To 10
If (a(i, j) <> 0 And a(i - b, j - b) <> 0) Then
r = r + (a(i, j) - a(i - b, j - b)) * (a(i, j) - a(i - b, j - b))
js = js + 1