Với sự hỗ trợ đặc lực của công nghệ máy tính kết quả việc tìm, đánh 
giá kiểm nghiệm các cặp hệ số A và b trở nên hiện thực hơn. Công thức thực 
nghiệm với cặp hệsố thu được có độchính xác tốt hơn công thức kinh điển 
của Marshall – Palmer (tính trên vùng Trung Trung Bộcủa Việt Nam). Đây là 
một kết quả ban đầu của một quá trình thực hiện nhiều giai đoạn từtriển khai 
hệthống đo mưa tự động, thu thập số liệu mưa và truyền sốliệu trực tuyến 
đến trích xuất các giá trị từ số liệu phản hồi vô tuyến rađa, tính toán, đánh giá. 
Từ đó có thểlà cơ sở đểchúng ta có thể tiến hành những bước tiếp theo với 
mong muốn ứng dụng vào thực tếmột cách trực tuyến để tăng độchính xác 
của việc tính toán lượng mưa. Tuy nhiên đây mới chỉ là kết quả bước đầu, để
cần tăng thêm độchính xác, chúng ta cần tăng cườngđầu tưtừthiết bị, đến
nghiên cứu chi tiết hơn, cụthểhơn cho từnggia đoạn mưa hoặc xem xét cơ
chếgây mưa từ đócó thểtiệm cận và tạo ra một bức tranh về mưa chân thực 
hơn cho các nhà dự báo khí tượng thuỷ văn hoặc cho đầu vào của các mô hình 
sốtrị.
                
              
                                            
                                
            
 
            
                 92 trang
92 trang | 
Chia sẻ: lylyngoc | Lượt xem: 2749 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang tài liệu Xây dựng công thức tính lượng mưa từ số liệu ra đa Đốp-Le cho khu vực trung Trung Bộ, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
o mưa này sẽ truyền tự động trong 
năm 2009.
Số liệu rađa thời tiết Tam Kỳ năm 2006 và năm 2007 không đầy đủ do 
rađa hỏng và giãn đoạn trong thời gian khá dài, tuy có số liệu nhưng không 
chính xác. Cuối năm 2007 rađa này đã được sửa chữa và hoạt động ổn định 
hơn chính vì vậy do đó tôi đã lựa chọn bộ số liệu đồng bộ rađa và đo mưa tự
động từ tháng 1 năm 2008 đến tháng 10 năm 2008.(Xem phần phụ lục PL1). 
4.1.2 Xử lí số liệu và đồng bộ số liệu theo thời gian.
Để thực hiện phương pháp so sánh, đánh giá giữa giá trị cường độ mưa 
rađa với giá trị cường độ mưa tại mặt đất cần đưa về cùng điều kiện không 
gian và thời gian của các yếu tố đầu vào. Từ tập số liệu thu thập được ta cần 
xử lí ban đầu để lựa chọn làm các cặp tính toán đồng nhất là: Cường độ mưa 
mặt đất (I) và giá trị Phản hồi vô tuyến rađa (dBZ) ta thực hiện như sau:
Giá trị cường độ mưa mặt đất (I): là giá trị lượng mưa đo được trong 
10 phút của mặt đất phải >0 ta đổi về cường độ mưa (mm/h). Do đầu vào là 
các loại datalogger khác nhau, nên khi tiến hành cần thực hiện đăng ký 
format cho phần mềm tính toán nhận dạng. Để thực hiện điều đó cần mô tả vị
trí các giá trị thời gian và giá trị đo được từ sensor đo mưa, bởi một số
datalogger ghi giá trị đếm số lần chao lật được và số datalogger còn lại ghi giá 
trị thực của lượng mưa. Bước tiếp theo tuỳ thuộc dạng sensor sẽ có những 
bước tính toán cơ bản đảm bảo chuyển toàn bộ số liệu cường độ mưa của các 
trạm về cùng một dạng thống nhất
50
Hình 4.1 Đồ thị biểu diễn lượng mưa ghi được theo thời gian của datalogger 
Hobo tại trạm Hội Khách
Hình 4.2 Đồ thị biểu diễn lượng mưa ghi được theo thời gian của datalogger 
Hobo tại trạm Thành Mỹ
Hình 4.3 Đồ thị biểu diễn lượng mưa ghi được theo thời gian của datalogger
RF3 tại trạm Lý Sơn.
51
Giá trị độ PHVT (tính ra dBZ): được lấy từ sản phẩm CAPPI tại độ
cao 3 km trung bình trong một miền tròn bán kính 1km có tâm trùng với toạ
độ của trạm đo mưa tự động (Hình 4.4). Với giá trị độ cao 3 km chúng ta có 
thể tránh được ảnh hưởng của địa hình nếu lấy thấp hơn 3 km và nếu lấy cao 
hơn 3 km cánh sóng sẽ “quệt” vào dải sáng (mức tan băng H-H00c) sẽ làm 
cho độ PHVT thu được trở nên bất thường.
Hình 4.4 Vị trí lấy giá trị PHVT tương ứng với toạ độ trạm đo mưa mặt đất
Một trình quét bình thường của rađa Thời tiết Tam kỳ tạo ra tập số liệu
quét khối ( VolumeScan). VolumeScan này thường là tập hợp 10 góc nâng 
quét tròn PPI (Hình 4.5) 
 . 
Hình 4.5 Sản phẩm Volumescan rađa Thời tiết Tam Kỳ-thường là tập 
hợp các góc nâng quét tròn PPI khác nhau. 
52
Từ tập số liệu quét khối VolumeScan có thể tạo ra các sản phẩm thứ
cấp khác nhau, trong đó có sản phẩm CAPPI 3km và có thể có CAPPI với độ
cao khác nhau như 0.5 km, 1km, 1.5 km, 2 km, 2.5 km .v.v... 
Hình 4.6 Hình a là các quét tròng PPI, hình b Sản phẩm mặt cắt 
CAPPI 3km .
Hình 4.7 Sản phẩm mặt cắt CAPPI 3km tại Trạm Rađa thời tiết TamKỳ
lúc 03:30 ngày 13 tháng 8 năm 2008.
Ở đây với mục tiêu là tính toán công thức liên hệ giữa độ PHVT của
rađa và cường độ mưa của hệ thống đo mưa tự động trong thời điểm có mưa,
53
nên loại bỏ những số liệu không đồng bộ như: chỉ tồn tại 1 giá trị độc lập rađa
hoặc cường độ mưa mặt đất. Thông thường thời gian có mưa là nhỏ hơn rất 
nhiều so với không mưa, (một phần do thỉnh thoảng một số máy trong hệ
thống máy móc ngưng hoạt động hoặc hoạt động chưa ổn định). 
Sau khi xử lí đã thu được 2.048 cặp giá trị dBZ-I trùng nhau về mặt 
thời gian (±3 phút) và không gian từ 27.415 giá trị phản hồi vô tuyến dBZ và 
19.191 giá trị cường độ đo mưa mặt đất I. (Xem phần phụ lục PL3)
Sau đây là đồ thị biến trình của độ PHVT (dBZ) và cường độ mưa của 
một số trạm sau khi đã đồng bộ về thời gian (Hình 4.8-.4.11)
Hình 4.8.Trạm Hội Khách
Hình 4.9.Trạm Hiên
I mm/h
mm/h
DBZ
DBZ
mm/hmm/h
số thứ tự cặp
 DBZ
số thứ tự cặp
54
Hình 4.10.Trạm Tiên Phước. . 
Sau đây là đồ thị của quan hệ giữa độ PHVT-Z’ (dBZ) với I (mm/h)tại 
một số trạm.(Hình 4.12-4.14)
Hình 4.12 . Z’-Imđ Tại trạm Trà My.
Hình 4.13. Z’-Imđ Tại trạm Hội Khách
I mm/h
mm/h
DBZ
DBZ
I mm/h
mm/h
DBZ
DBZ
Hình 4.11.Trạm Trà My
số thứ tự cặp
số thứ tự cặp
55
Hình 4.14a. Z’-Imđ Tại trạm Thành Mỹ.
Hình 4.14b. Z’-Imđ Tại trạm Hiên.
Hình 4.14c. Z’-Imđ Tại trạm Quảng Ngãi
Hình 4.14d. Z’-Imđ Tại trạm Thượng Nhật.
Hình 4.14e. Z’-Imđ Tại trạm Hiệp Đức.
56
Với những đánh giá ban đầu cho thấy từ tấp số liệu khảo sát, tuy những 
biến đổi theo thời gian trên đồ thị của giá trị Z’ và lượng mưa đo được không 
tương quan với nhau một cách chặt chẽ( có những điểm cự trị của lượng mưa 
tương ứng với điểm cực trị của Z’, nhưng cũng có những điểm cực trị của Z’ 
không tương ứng. Điều đó có thể là sự trễ pha theo thời gian và nằm trong nó
ẩn chứa nhiều sai số. Nhưng ta vẫn cảm nhận được sự tồn tại mối quan hệ của
Z’ với cường độ mưa. Các hình từ 4.11-4.17 cho thấy mối quan hệ này có
dạng logarit, cụ thể là các hình dạng Z’=b1 lgI+ a1
Đặt: lgI=x; Z’=Y
Ta có: Y=a1+b1X
4.1.3 Tính toán và đánh giá công thức
Với sự phát triển vượt bậc của khoa học máy tính, việc tính toán với 
chuỗi số liệu lớn đó là điều đơn giản, để tìm một cặp hệ số thực nghiệm A,b 
tham gia vào công thức thực nghiệm một cách phi tuyến, ta có thể dùng 
phương pháp bình phương tối thiểu sau khi đã tuyến tính hoá (còn gọi là san 
bằng) công thức. Chúng tôi đã thử tính theo phương pháp hồi qui tuyến tính.
Kết quả thu được một công thức như sau:
Y=a1+b1X Để dễ so sánh với công thức Marshall Palmer, ta chuyển 
sang dạng Z=A.Ib trong đó Z’=10 logZ hay Z=10(Z’/10) trong đơn vị mm6/m3.
Kết quả tìm được:
Y = 0.2097 + 0.0239 X 
A= 10(a1/10)=1.04946260728285 
 b= 0.0024
Tuy nhiên sai số lớn sẽ xảy ra khi quay trở lại kiểm nghiệm với ngay 
chuỗi số liệu phụ thuộc, vì công thức cuối là phi tuyến trong khi ta đã dùng
phương pháp hồi qui tuyến tính. Do đó để tìm cặp hệ số thực nghiệm A,b 
57
chúng tôi xây dựng một phần mềm tính sai số trung bình bình phương của
công thực nghiệm phi tuyến dạng Z=A.Ib , với các giá trị A và b lần lượt biến 
đổi trong các khoảng giá trị khác nhau và dừng lại khi sai số này đủ nhỏ (nhỏ
hơn một giá tới nào đó), cách làm như sau:
Ban đầu lấy A, b lớn(tương ứng MSE lớn), A cố định và cho b biến đổi
ta liên tục tính sai số MSE(i), sẽ thấy lúc đầu nó giảm sau lại tăng. Cho sai số
này tăng tới khi bằng một phần sai số ban đầu hoặc tăng bằng giá trị biên độ
thì dừng lại biến đổi b, Sau đó lại giữ b cố định và cho biến đổi A và cũng
thấy sai số ban đầu giảm sau đó lại tăng nhưng cũng chỉ cho tăng đến giá trị
bằng một phần sai số bắt đầu cho b biến động thì dừng b lại và cho A biến
đổi, cứ như vậy cho đến khi sai số dao động không đáng kể thì dừng lại
Giá trị ban đầu của A là n chạy từ 2000 của b là 5, cuối cùng giá trị sai 
số MSE không đổi hay biến đổi không đáng kể (MSEi-MSEi+1)<0.001 thì
dừng lại, chúng tôi thu được một số cặp giá trị (A,b) cho sai số của công thức 
xấp xỉ như sau. Để chọn ra 1 cặp thích hợp nhất, chúng tôi sử dụng thêm các
sai số MAE và ME
Từ kết quả của chương trình thông qua các chỉ số: sai số trung bình 
bình phương (MSE), sai số tuyệt đối trung bình (MAE), sai số trung bình 
(ME), chúng tôi lựa chọn hệ số A=45 và b=3.0, với ME=-0.034 và 
MAE=1.356 mm/h, MSE =4.584(mm/h)2 có giá trị nhỏ nhất trong dãy MSE. 
Tuy và MAE=1.369 không phải là nhỏ nhất nhưng cũng khá là tiệm cận giá 
trị này (MSEmin= 4.584(mm/h)2 , MAEmin=1.195(mm/h) và MEmin = -
0.034(mm/h) ).
Công thức (2.6) viết lại là: Z=45.I3.0 (4.1)
58
Cặp hệ số A và b trong (4.1) có sai số nhỏ nhất thu được đó chính là 
mục tiêu của luận văn. Đồng thời các cặp hệ số A và b của các tác giả khác 
cũng sẽ được đánh giá với chuỗi số liệu này.
4.1.3 Giới thiệu phần mềm tính toán và kiểm nghiệm
Chúng tôi đã tự viết được một phần mềm tính toán và kiểm nghiệm
công thức thực nghiệm, phần mềm được viết trong 3 tháng, sử dụng khoảng 
1.576 dòng mã lệnh lập trình trên ngôn ngữ lập trình visual Basic 6.0-
Microsoft, với giao diện đẹp (Hình 4.15 và hình 4.16), cách lập trình theo 
hướng đối tượng, mã lệnh đơn giản.
Bao gồm các tính năng sau:
Nạp số liệu mưa tự động: chức năng nạp số liệu mưa mặt đất từ các 
tệp số liệu thu được ở các dạng datalogger khác nhau (theo phần thông kê 
1.3), toàn bộ các tệp số liệu để trong một thư mục tuỳ chọn, sẽ được lần lượt 
nhận dạng theo một định dạng (format) đăng ký trước. Khi tiến hành nạp sẽ tự
động nhận dạng và đưa số liệu về một dạng thống nhất phục vụ các bước sau.
Nạp số liệu ra đa: tệp số liệu để trong một thư mục tuỳ chọn với định 
dạng dạng text trích xuất từ một phần mềm trung gian của Đài Khí Tượng 
Cao Không 
Phần tính toán: sau khi số liệu rađa và mưa tự động được kết hợp với 
nhau thành các cặp (Ir -Imđ). Từ đó sẽ được thực hiện theo các yêu cầu khác 
nhau như: đánh giá, tìm hệ số, lặp.(Xem sơ đồ thuật toán hình 4.17)
59
Hình 4.15 Giao diện phần mềm.
Hình 4.16.Giao diện chương trình khi tiến hành chạy
60
MSEmin Ak,Bp
MSEmin(i)=MSEmin(i-1) 
OR MSEmin(i)-MSEmin(i-1) <α
MSEmin,MAE
min
=>A,B
SỐ LIỆU CƯỜNG ĐỘ MƯA MẶT ĐẤT
VÀ GIÁ TRỊ PHẢN HỒI VÔ TUYẾN RAĐA
HOÀ HỢP THEO THỜI 
GIAN VÀ KHÔNG GIAN 
THÀNH CẶP I-dBZ
FALSE
STEPB STEPB/10
VÒNG LẶP
An,Bm Imđ-Irđ > 
MSEmin
Y b1X+a1
STEP
TRUE
FALSE
STEPA STEPA-1
Hình 4.17. Sơ đồ thuật toán: 
61
 So sánh với công thức của Marshall – Palmer 6.1200IZ 
Trên tập số liệu phụ thuộc đánh giá công thức của Marshall – Palmer và 
các cặp số trong phụ lục 4 chúng tôi thu được MSEMarshall – Palmer
=4,975(mm/h)2 , MAEMarshall – Palmer=1,242(mm/h) và MEMarshall – Palmer = -
0,521(mm/h). Ta thấy chỉ số MSEMarshall – Palmer lớn hơn 0,517mm/h tuy chỉ số
tương ứng của chung tôi tại (4.1) là MAE nhỏ hơn 0,114 mm/h nhưng chỉ số
ME lại lệch nhiều hơn -0,487mm/h. Dựa trên cả 3 chỉ số thì cặp hệ số đã lựa 
chọn có độ chính xác tốt hơn so với cặp hệ số a và b của Marshall – Palmer
(tính trên vùng Trung Trung Bộ của Việt Nam).
Kiểm nghiệm đối với chuỗi số liệu độc lập của 10 trạm truyền về tự
động ở tháng 11 và 12 tháng năm 2008. Bao gồm : 3.260 giá trị Z’ và 12.552 
giá trị cường độ mưa tại mặt đất. Sau khi xử lý thu được 320 cặp Z’-Imđ (xem 
đồ thị và bảng sau)
.
Hình 4.18. Các chỉ số qua kiểm nghiệm thực tế chuỗi số liệu độc lập
Với Z=45.I3.0
62
Ta được giá trị MSE và ME bé nhất với chuỗi số liệu độc lập là (1.247 
(mm/h)2 và 0.027 mm/h). Tuy hệ số MAE của chúng tôi lớn hơn so với công 
thức Marshall – Palmer nhưng sai số ME của chúng tôi lại nhỏ hơn
 Bảng 4.1. Sai số của một số công thức trên tập số liệu độc lập
TT
A b
MSE
(mm/h)2
MAE
(mm/h)
ME
(mm/h)
Tên công thức
1 45 3 1.247 0.742 0.227 Tác giả
2 200 1.6 1.329 0.622 -0.346 Marshall và Palmer (1948)
3 140 1.5 1.372 0.649 -0.162 Joss và cộng sự (1970) Cho mưa phùn
4 250 1.5 1.394 0.648 -0.447 Joss và cộng sự (1970) Cho mưa diện rộng
5 500 1.5 1.615 0.723 -0.67 Joss và cộng sự (1970) Cho mưa diện dông
6 2000 2.0 1.89 0.826 -0.821 Gunn và Marshall(1958)
4.2 KẾT LUẬN 
Với sự hỗ trợ đặc lực của công nghệ máy tính kết quả việc tìm, đánh 
giá kiểm nghiệm các cặp hệ số A và b trở nên hiện thực hơn. Công thức thực 
nghiệm với cặp hệ số thu được có độ chính xác tốt hơn công thức kinh điển 
của Marshall – Palmer (tính trên vùng Trung Trung Bộ của Việt Nam). Đây là 
một kết quả ban đầu của một quá trình thực hiện nhiều giai đoạn từ triển khai 
hệ thống đo mưa tự động, thu thập số liệu mưa và truyền số liệu trực tuyến 
đến trích xuất các giá trị từ số liệu phản hồi vô tuyến rađa, tính toán, đánh giá. 
Từ đó có thể là cơ sở để chúng ta có thể tiến hành những bước tiếp theo với 
mong muốn ứng dụng vào thực tế một cách trực tuyến để tăng độ chính xác 
của việc tính toán lượng mưa. Tuy nhiên đây mới chỉ là kết quả bước đầu, để
cần tăng thêm độ chính xác, chúng ta cần tăng cường đầu tư từ thiết bị, đến
nghiên cứu chi tiết hơn, cụ thể hơn cho từng gia đoạn mưa hoặc xem xét cơ
chế gây mưa từ đó có thể tiệm cận và tạo ra một bức tranh về mưa chân thực 
hơn cho các nhà dự báo khí tượng thuỷ văn hoặc cho đầu vào của các mô hình 
số trị.
63
TÀI LIỆU THAM KHẢO
Tiếng Việt
1. Nguyễn Hướng Điền, Tạ Văn Đa (2007), Khí tượng Rađa, giáo trình 
giảng dạy của trường ĐHKHTN, ĐHQGHN
2. Tạ Văn Đĩnh, (1991), Phương pháp tính,NXB Giáo dục.
3. Dương Bích Ngọc (2008), xây dựng công thức thực nghiệm về mối 
quan hệ giữa độ phản hồi rađa và cường độ mưa(khoá luận tốt nghiệp).
4. Phan Văn Tân,(1999) Phương pháp thống kê trong khí hậu, giáo trình 
giảng dạy của trường ĐHKHTN, ĐHQGHN
5. Phan Văn Tân,(2007) Tài liệu Tin học ứng dụng trong khí tượng.
6. Phạm Ngọc Toàn, Phan Tất Đắc (1992), Khí hậu Việt Nam, Nhà xuất 
bản khoa học kỹ thuật Hà Nội.
7. Tài liệu tập huấn khí tượng rađa. (2002). Đài Khí Tượng Cao Không.
8. Google Earth,NASA. Hình ảnh và ứng dụng đồ hoạ
Tiếng Anh
9. F.Amiryazdani, M.Khalili, F.Golkar, M.Kalantarzadeh (2004) .Weather 
radar calibration in central iran applying ground based rain gauges data. 
National Cloud Seeding Research Centre, IRAN.
10. Curtis Neal James (2004). Radar Observations of Orographic 
Precipitation. University of Washington.
11.Márcia Cristina da Silva Moraes (2003). Z-R relationships for a 
weather radar in the eastern coast of northeastern brazil .Fundação para 
Estudos Avançados do Trópico Semi-Árido - Brazil.
12. Frédéric Fabry.(1994). Observations and uses of high resolution radar 
data from precipitation.The Faculty of Graduate Studies and Research 
of McGill University.
13.Md Rashedul Islam (2005). Improved quantitative estimation of rainfall 
by radar. Manitoba University.
64
14.Jennifer Lyn Hadley (2003). Near real-time runoff estimation using 
spatially distributed radar rainfall data. Master of science. Texas 
A&M University 
15.Ki-Ho Chang, Kyung-Yeub Nam, Kum-Lan Kim.(2008). Real-time 
Quantitative Precipitation Estimation using Radar Reflectivity over the 
Korean Peninsula.
16.Deon Terblanche.WEATHER RADAR BASICS.2005.University of 
São Paulo.Brazin.
17.Probert and Jones.  m407_
707/Monteverdi/Radar/RadarEquation.html
65
PHỤ LỤC
PL1. Dạng đầu vào số liệu rađa
Ngày Giờ LoạiSản phẩm Bkính Độcao Trạm Kinh Vĩ độ Giá trịPHVT
2008-01-24 0:02 CAPPI - 240 3 CAULAU 108.27 15.86 16.12
2008-01-24 0:02 CAPPI - 240 3 HIEPDUC 108.11 15.58 16.12
2008-01-24 0:02 CAPPI - 240 3 NONGSON 108.03 15.7 23.88
2008-01-24 0:02 CAPPI - 240 3 HOIKHACH 107.91 15.82 22.82
2008-01-24 0:02 CAPPI - 240 3 THANHMY 107.83 15.77 20.35
2008-01-24 0:02 CAPPI - 240 3 KHAMDUC 107.83 15.46 18.24
2008-01-24 0:02 CAPPI - 240 3 QUANGNGAI 108.8 15.12 16.47
2008-01-24 0:02 CAPPI - 240 3 DUNGQUAT 108.81 15.41 17.88
2008-01-24 0:02 CAPPI - 240 3 LYSON 109.14 15.39 20.71
2008-01-24 0:02 CAPPI - 240 3 AINGHIA 108.11 15.88 16.82
2008-01-24 0:10 CAPPI - 240 3 HIEPDUC 108.11 15.58 22.82
2008-01-24 0:10 CAPPI - 240 3 NONGSON 108.03 15.7 19.65
2008-01-24 0:10 CAPPI - 240 3 HOIKHACH 107.91 15.82 17.53
2008-01-24 0:10 CAPPI - 240 3 THANHMY 107.83 15.77 20
2008-01-24 0:10 CAPPI - 240 3 DUCPHO 108.94 14.85 20
2008-01-24 0:10 CAPPI - 240 3 ANCHI 108.81 14.99 20
2008-01-24 0:10 CAPPI - 240 3 QUANGNGAI 108.8 15.12 22.47
2008-01-24 0:10 CAPPI - 240 3 DUNGQUAT 108.81 15.41 15.41
2008-01-24 0:10 CAPPI - 240 3 TIENPHUOC 108.31 15.49 10.12
2008-01-24 0:10 CAPPI - 240 3 LYSON 109.14 15.39 22.47
2008-01-24 0:28 CAPPI - 240 3 HIEPDUC 108.11 15.58 15.41
2008-01-24 0:28 CAPPI - 240 3 NONGSON 108.03 15.7 22.12
2008-01-24 0:28 CAPPI - 240 3 THANHMY 107.83 15.77 18.24
2008-01-24 0:28 CAPPI - 240 3 CAMLE 108.21 16.01 16.12
2008-01-24 0:28 CAPPI - 240 3 KHAMDUC 107.83 15.46 23.18
2008-01-24 0:28 CAPPI - 240 3 DUCPHO 108.94 14.85 23.88
2008-01-24 0:28 CAPPI - 240 3 DUNGQUAT 108.81 15.41 21.41
2008-01-24 0:28 CAPPI - 240 3 PHUNINH 108.51 15.4 11.88
2008-01-24 0:28 CAPPI - 240 3 LYSON 109.14 15.39 20.71
2008-01-24 2:06 CAPPI - 240 3 HIEN 107.64 15.93 21.41
2008-01-24 2:06 CAPPI - 240 3 CAMLE 108.21 16.01 18.94
2008-01-24 2:06 CAPPI - 240 3 DUNGQUAT 108.81 15.41 15.76
2008-01-24 2:06 CAPPI - 240 3 PHUNINH 108.51 15.4 9.76
2008-01-24 2:30 CAPPI - 240 3 HIEPDUC 108.11 15.58 19.65
2008-01-24 2:30 CAPPI - 240 3 DUCPHO 108.94 14.85 20
2008-01-24 2:30 CAPPI - 240 3 DUNGQUAT 108.81 15.41 16.12
2008-01-24 2:30 CAPPI - 240 3 PHUNINH 108.51 15.4 14.71
2008-01-24 2:30 CAPPI - 240 3 CULAOCHAM 108.5 15.96 18.59
………………..
66
PL2. Dạng đầu vào của đo mưa tự động mặt đất.
Ngày Giờ Giá trị mưa Trạm
2008/10/02 17:37 2.5 AINGHIA
2008/10/04 17:31 1.5 AINGHIA
2008/10/04 17:41 0.5 AINGHIA
2008/10/04 19:41 0.5 AINGHIA
2008/10/05 20:42 0.5 AINGHIA
….
2008/10/01 14:10 0.5 ALUOI
2008/10/01 14:20 0.5 ALUOI
2008/10/01 14:30 0.5 ALUOI
2008/10/01 15:00 0.5 ALUOI
2008/10/01 15:50 2.5 ALUOI
….
2008/09/12 23:40 0.5 ANCHI
2008/09/13 00:00 0.5 ANCHI
2008/09/13 00:40 0.5 ANCHI
2008/09/13 01:10 0.5 ANCHI
2008/09/13 01:30 0.5 ANCHI
…
2008/09/08 05:10 0.5 BATO
2008/09/08 05:20 1.5 BATO
2008/09/08 05:30 1.5 BATO
2008/09/08 05:40 5.0 BATO
2008/09/08 05:50 4.5 BATO
2008/09/08 06:00 2.0 BATO
2008/09/08 07:30 0.5 BATO
2008/09/08 12:40 0.5 BATO
2008/09/14 17:30 0.5 BATO
….
2008/03/04 14:40 1.5 CAMLE
2008/03/05 00:50 0.5 CAMLE
2008/03/05 03:30 0.5 CAMLE
2008/03/05 03:50 1 CAMLE
2008/03/05 04:20 0.5 CAMLE
2008/03/05 04:30 1 CAMLE
….
2008/08/18 19:00 2.5 CAULAU
2008/08/18 19:10 1.5 CAULAU
2008/08/18 19:20 2 CAULAU
2008/08/18 19:30 3.5 CAULAU
2008/08/18 19:40 6.5 CAULAU
2008/08/18 19:50 1 CAULAU
2008/09/14 17:00 0.5 DUCPHO
2008/09/14 17:30 0.5 DUCPHO
2008/10/19 13:23 1 HIEN
67
2008/10/19 13:33 0.5 HIEN
2008/10/19 17:03 0.5 HIEN
2008/10/19 17:43 0.5 HIEN
2008/10/19 17:53 0.5 HIEN
…
2008/10/02 11:42 0.5 HIEPDUC
2008/10/02 11:52 0.5 HIEPDUC
2008/10/02 12:02 1 HIEPDUC
2008/10/02 13:12 0.5 HIEPDUC
2008/10/02 13:22 1 HIEPDUC
2008/10/02 13:32 0.5 HIEPDUC
2008/10/02 13:42 0.5 HIEPDUC
..
2008/03/08 06:10 0.5 HOABAC
2008/03/08 06:20 0.5 HOABAC
2008/03/08 07:00 0.5 HOABAC
2008/03/09 08:20 0.5 HOABAC
2008/03/09 09:40 0.5 HOABAC
…..
2007/12/06 10:10 0.5 HOIKHACH
2007/12/06 10:30 0.5 HOIKHACH
2007/12/06 10:50 0.5 HOIKHACH
2007/12/06 11:00 1.5 HOIKHACH
2007/12/06 11:10 1 HOIKHACH
2007/12/06 15:30 0.5 HOIKHACH
….
2008/01/03 00:30 0.5 KHAMDUC
2008/01/03 11:50 0.5 KHAMDUC
2008/01/03 13:40 0.5 KHAMDUC
…
2008/01/02 10:00 0.5 LYSON
2008/01/03 00:50 0.5 LYSON
2008/01/03 01:00 0.5 LYSON
2008/01/03 01:20 0.5 LYSON
2008/01/03 01:50 0.5 LYSON
2008/01/03 02:00 1.0 LYSON
…
2008/01/01 05:40 0.5 MINHLONG
2008/01/01 06:50 0.5 MINHLONG
2008/01/01 07:00 0.5 MINHLONG
2008/01/01 07:10 0.5 MINHLONG
…
2008/01/01 13:40 0.5 PHUOC
2008/01/01 16:30 0.5 PHUOC
2008/01/01 17:30 0.5 PHUOC
2008/01/01 18:00 0.5 PHUOC
68
…
2008/09/29 21:41 0.5 QUANGNGAI
2008/09/30 16:51 0.5 QUANGNGAI
2008/10/01 02:01 1 QUANGNGAI
2008/10/01 11:41 0.5 QUANGNGAI
…
2008/06/29 21:00 0.5 SONGIANG
2008/06/29 21:10 1.0 SONGIANG
2008/06/29 21:20 0.5 SONGIANG
…
2008/03/01 18:50 5.5 SONHA
2008/03/05 17:30 0.5 SONHA
2008/03/07 05:30 0.5 SONHA
2008/03/07 06:00 0.5 SONHA
…
2008/02/27 11:30 0.5 TALUONG
2008/03/05 09:30 0.5 TALUONG
2008/03/05 11:00 0.5 TALUONG
…
2008/10/04 18:00 0.5 TAMKY
2008/10/06 20:09 0.5 TAMKY
2008/10/06 20:19 11 TAMKY
…
2008/02/24 10:50 1 THANHMY
2008/03/14 15:30 0.5 THANHMY
2008/03/29 17:20 0.5 THANHMY
2008/03/30 17:10 2 THANHMY
2008/03/30 17:20 8.5 THANHMY
…
2008/10/01 05:22 0.5 THUONGNHAT
2008/10/01 13:52 2.5 THUONGNHAT
2008/10/01 14:02 2 THUONGNHAT
2008/10/01 14:22 0.5 THUONGNHAT
2008/10/01 16:02 0.5 THUONGNHAT
…
2008/03/03 16:40 0.5 TIENPHUOC
2008/03/05 03:50 0.5 TIENPHUOC
2008/03/05 04:10 0.5 TIENPHUOC
…
2008/10/16 19:14 7.5 TRAMY
2008/10/16 19:32 1 TRAMY
2008/10/16 19:52 0.5 TRAMY
2008/10/16 20:02 0.5 TRAMY
2008/10/16 20:22 0.5 TRAMY
2008/06/30 15:10 2.5 TRAMY
….
69
PL3.Mã nguồn phần mềm.
Private Sub a0a1_Click()
Dim F1
 F1 = TMG + "DATA4cap1.TXT"
 Call chayABnho(F1)
End Sub
Private Sub about_Click()
about11.Show
End Sub
Sub CHAYRD()
Dim RD, SF, TG, K1, docao, BK ',DL(10,)
Static N1, N2, I, I1
F1 = TMG + "radarainf.INI"
F2 = TMG + "DATA1.TXT"
List1.Clear
K1 = 0
Open F2 For Output As #2
If FSO.FileExists(F1) = True Then
 RD = DOCTHONGSO(F1, 1)
 If FSO.FolderExists(RD) = True Then
 File1.Path = RD
 SF = File1.ListCount
 Frame2.Caption = SF
 If SF > 0 Then
 ProgressBar1(1).Max = SF + 1
 For I = 0 To SF
 tf = File1.List(I)
 ProgressBar1(1).Value = I + 1
 ProgressBar1(1).Visible = True
 If Trim(tf) "" Then
 tf = CHECKGACHCHEO(File1.Path) & File1.List(I)
 N2 = LINEFILE(tf)
 ProgressBar1(0).Max = N2
 Open tf For Input As #1
 I1 = 0
 List1.Visible = False
 Do Until EOF(1)
 Line Input #1, B
 I1 = I1 + 1
 ' List1.AddItem B
 If forma1(B) > 1 Then
 If forma1(B) = 2 Then
 TG = Mid(B, 61, 17)
 SP = Mid(B, 18, 8)
 docao = LAYSO(Right(B, 12))
 BK = Mid(B, 41, 8)
70
 Else
 TG = Mid(B, 60, 16)
 SP = Mid(B, 18, 8)
 docao = LAYSO(Right(B, 12))
 BK = Mid(B, 39, 8)
 End If 
 K1 = K1 + 1 
 End If
 If forma1(B) = 1 And LAYGTMUA(B) = True Then '
 Print #2, THEMCACH(TG, 8) & " " & THEMCACH(SP, 10) & 
THEMCACH(Trim(BK), 8) & THEMCACH(docao, 5), B
 End If 
 ProgressBar1(0).Value = I1
 ProgressBar1(0).Visible = True
 ProgressBar1(1).Visible = True
 DoEvents
 Loop
 Close (1)
 End If
 Label5.Caption = I & "/" & SF
 DoEvents 
 Next I
 List1.Visible = True
 End If 
 End If
End If
Close (2)
Label4.Caption = K1
End Sub
Function forma1(ST) 'As Boolean
Select Case Trim(Mid(ST, 18, 7))
Case "10"
 forma1 = 1
Case "CAPPI"
 forma1 = 2
Case "PPI -"
 forma1 = 3
Case Else
 forma1 = 0
End Select
End Function
Function LAYGTMUA(ST) As Boolean
If Val(Trim(Mid(ST, 38, 10))) > 0 Then
 LAYGTMUA = True
Else
 LAYGTMUA = False
End If
71
End Function
Sub chayMD()
Dim RD, SF, TG, K1, docao, BK ',DL(10,)
Static N1, N2, I, I1, F2
F1 = TMG + "radarainf.INI"
F2 = TMG + "DATA2.TXT"
List1.Clear
K1 = 0
Open F2 For Output As #2
Close (2)
If FSO.FileExists(F1) = True Then
 RD = DOCTHONGSO(F1, 2)
 If FSO.FolderExists(RD) = True Then
 File1.Path = RD
 SF = File1.ListCount
 Frame2.Caption = SF
 If SF > 0 Then
 ProgressBar1(1).Max = SF + 1
 For I = 0 To SF
 tf = File1.List(I)
 ProgressBar1(1).Value = I + 1
 ProgressBar1(1).Visible = True
 If Trim(tf) "" Then
 tf = CHECKGACHCHEO(File1.Path) & File1.List(I)
 N2 = LINEFILE(tf)
 ProgressBar1(0).Max = N2
 If Right(File1.List(I), 3) = "prn" Then
 Call docfilemd1(tf, F2)
 Else
 Call docfilemd(tf, F2)
 End If
 End If
 Label5.Caption = I & "/" & SF
 DoEvents 
 Next I
 List1.Visible = True
 End If
 End If
End If
Label4.Caption = K1
End Sub
Private Sub avab_Click()
Dim F1
 F1 = TMG + "DATA4cap1.TXT"
 Call chayAB(F1)
End Sub
Sub chayAB(F1)
72
Dim B, Tram(2, 100), DL(10, 100000) As Currency, I1, I2, SoTram, FKQ, Tu, Mau1, 
Mau2, hs(10, 100000), K1 As Currency, K2 As Currency, K3 As Currency, Tong(10)
Dim ar As Currency, br, AMAX, BMAX, Amin, BMIN, TQ(10, 800000), Stepp
Dim AAA, BBB, HESO(10, 800000)
FKQ = TMG + "2008KQ.txt"
Screen.MousePointer = 11
For I1 = 1 To 200000
HESO(5, I1) = 0
 HESO(6, I1) = 0
 HESO(7, I1) = 0
 HESO(8, I1) = 0
 HESO(9, I1) = 0
 For I2 = 1 To 5
 TQ(I2, I1) = 0
 Next
Next I1
'-------------------
I1 = 0
 List1.Clear
AMAX = 2000
 Amin = 1
 BMAX = 5 
 BMIN = 1
 Stepp = 0.1 
If FSO.FileExists(F1) = True Then
 Open F1 For Input As #1
 K1 = 0
 Do Until EOF(1)
 Line Input #1, B ' If I1 = 0 Then
 I1 = I1 + 1
 '--------------------
 DL(1, I1) = Val(Trim(LAYND(B, 7))) 'lay phvt Xi Rradar(K2, K3, DL(1, I1))
 DL(2, I1) = Val(Trim(LAYND(B, 8))) 'lay mua ' DL(3, I1) = DL(3, I1) + 
DL(1, I1) * DL(1, I1) 'lay phvt Xi*Xi
' DL(4, I1) = DL(4, I1) + DL(2, I1) * DL(2, I1) 'lay mua Yi*Yi
 ' DL(5, I1) = DL(5, I1) + DL(2, I1) * DL(1, I1) 'lay mua Xi*Yi '----------------
phan tinh he so hoi qui.
 ' K1 = 1
 ' End If
 Loop
 Close (1)
 I2 = I1
 '---------------------------------- 
 ProgressBar1(0).Max = AMAX
 For K2 = Amin To AMAX Step 1
 ProgressBar1(0).Value = K2
73
 Label5.Caption = K2
 ProgressBar1(0).Visible = True
 DoEvents 
 For K3 = BMIN To BMAX Step Stepp
 K1 = K1 + 1 
 For I1 = 1 To I2 
 DL(3, I1) = Rradar(K2, K3, DL(1, I1))
 DL(4, I1) = (DL(3, I1) - DL(2, I1))
 TQ(1, K1) = TQ(1, K1) + DL(3, I1)
 TQ(2, K1) = TQ(2, K1) + DL(2, I1) 
HESO(5, K1) = HESO(5, K1) + DL(4, I1) ' * DL(4, I1) ' sai so trung binh
 HESO(6, K1) = HESO(6, K1) + Abs(DL(4, I1))
 HESO(7, K1) = HESO(7, K1) + Abs(DL(4, I1)) * Abs(DL(4, I1)) 'sai so trung binh binh 
phuong
 Next I1
 ' x va y trung binh
 ' List1.AddItem TQ(2, K1)
 TQ(1, K1) = TQ(1, K1) / I2
 TQ(2, K1) = TQ(2, K1) / I2 
 ' x va y trung binh
 For I1 = 1 To I2
TQ(3, K1) = TQ(3, K1) + (DL(3, I1) - TQ(1, K1)) * (DL(2, I1) - TQ(2, K1))
 ' TQ(4, K1) = TQ(4, K1)
TQ(5, K1) = TQ(5, K1) + (DL(3, I1) - TQ(1, K1)) * (DL(3, I1) - TQ(1, K1))
 ' List1.AddItem (DL(2, I1) - TQ(2, K1)) * (DL(2, I1) - TQ(2, K1))
TQ(4, K1) = TQ(4, K1) + (DL(2, I1) - TQ(2, K1)) * (DL(2, I1) - TQ(2, K1))
 Next I1
 HESO(9, K1) = TQ(3, K1) / (TQ(5, K1) * TQ(4, K1)) ^ (0.5)
 HESO(3, K1) = K2
 HESO(4, K1) = K3
 Next K3
 Next K2
 '-----------------------------------
 End If
 For K2 = 1 To K1
 HESO(5, K2) = HESO(5, K2) / I2
 HESO(6, K2) = HESO(6, K2) / I2
 HESO(7, K2) = HESO(7, K2) / I2
 HESO(8, K2) = (HESO(7, K2)) ^ (0.5)
 Next
 ' phan tinh sai so
 GoTo 5000
 If K1 > 0 Then
 Label4.Caption = K1
 ProgressBar1(0).Max = K1
 For I1 = 1 To K1
 ProgressBar1(0).Value = I1
74
 Label5.Caption = I1
 ProgressBar1(0).Visible = True
 DoEvents
 For I2 = 1 To K1
 If HESO(5, I1) > HESO(5, I2) Then
 TTAM = HESO(5, I1)
 HESO(5, I1) = HESO(5, I2)
 HESO(5, I2) = TTAM
 TTAM = HESO(4, I1)
 HESO(4, I1) = HESO(4, I2)
 HESO(4, I2) = TTAM
 TTAM = HESO(3, I1)
 HESO(3, I1) = HESO(3, I2)
 HESO(3, I2) = TTAM
 End If
 Next I2
 Next I1 
5000 'ProgressBar1(0).Max = K1
 Open FKQ For Output As #2
 Print #2, " A ", " b", "Sai So "
 For I1 = 1 To K1
 ' ' ProgressBar1(0).Value = I1
 Label5.Caption = I1
 ' ProgressBar1(0).Visible = True
 DoEvents
 Print #2, HESO(3, I1), HESO(4, I1), Format(HESO(5, I1), "######0.000"), 
Format(HESO(6, I1), "######0.000"), Format(HESO(7, I1), "######0.000") ', 
Format(HESO(8, I1), "######0.000"), Format(HESO(9, I1), "######0.000")
 Next I1
 Close (2)
 End If
 '----------------------
 Screen.MousePointer = 0
End Sub
Function Rradar(ar As Currency, br, dbz As Currency)
'Rradar = (Abs(Ln(zr) - Ln(Ar)) / Br) ^ 2.718282 'R=[(lnZ-lnA)/b]e '
'Rradar = ((Ln(zr))) ' - Ln(200)) / 1.6) ^ 2.718282 'R=[(lnZ-lnA)/b]e '
Dim Zr
Zr = 10 ^ (dbz / 10)
Rradar = (Zr / ar) ^ (1 / br) '10 ^ ((Log10(Zr) - Log10(ar)) / br) 'è R=10((logZ-logA)/b))
'(zr / Ar) ^ (1 / Br) * 6
End Function
Function Zradar(ar, br, Rr)
Zradar = ar * (Rr) ^ br
End Function
Function Rradar1(ar As Currency, br, Zr As Currency)
'Rradar = (Abs(Ln(zr) - Ln(Ar)) / Br) ^ 2.718282 'R=[(lnZ-lnA)/b]e '
75
'Rradar = ((Ln(zr))) ' - Ln(200)) / 1.6) ^ 2.718282 'R=[(lnZ-lnA)/b]e '
Rradar1 = 2.718282 ^ (Log(Zr / ar) / br) 'è R=10((logZ-logA)/b))
'(zr / Ar) ^ (1 / Br) * 6 R=e[ln(Z/A)]b
End Function
Private Sub capp_Click()
Dim F1
 F1 = TMG + "DATA4cap.TXT"
 Call chaysp(F1) 
End Sub
Sub chaysp(F1)
Dim B, Tram(2, 100), DL(10, 100), I1, I2, SoTram, FKQ, Tu, Mau1, Mau2, hs(10, 
100000), K1, K2, Tong(10)
Dim AAA, BBB
FKQ = TMG + "ketqua.txt"
Screen.MousePointer = 11
For I1 = 1 To 10
Tong(I1) = 0
 For I2 = 1 To 100
 DL(I1, I2) = 0
 Next
Next
I1 = 0
If FSO.FileExists(F1) = True Then
 Open F1 For Input As #1
 Do Until EOF(1)
 Line Input #1, B
 If I1 = 0 Then
 I1 = I1 + 1
 Tram(1, I1) = LAYND(B, 3)
 Tram(2, I1) = I1
 '--------------------
 DL(1, I1) = DL(1, I1) + Val(Trim(LAYND(B, 7))) 'lay phvt Xi
 DL(2, I1) = DL(2, I1) + Val(Trim(LAYND(B, 8))) 'lay mua Yi
 DL(3, I1) = DL(3, I1) + DL(1, I1) * DL(1, I1) 'lay phvt Xi*Xi
 DL(4, I1) = DL(4, I1) + DL(2, I1) * DL(2, I1) 'lay mua Yi*Yi
 DL(5, I1) = DL(5, I1) + DL(2, I1) * DL(1, I1) 'lay mua Xi*Yi
 '---------------- phan tinh he so hoi qui
 K1 = 1
 hs(1, K1) = Val(Trim(LAYND(B, 7)))
 hs(2, K1) = Val(Trim(LAYND(B, 8)))
 DL(0, I1) = DL(0, I1) + 1
 aa = 10 + DL(0, I1)
 Open TMG + "data\" & Tram(1, I1) & ".txt" For Append As #aa
 Print #10 + DL(0, I1), Val(Trim(LAYND(B, 7))), Val(Trim(LAYND(B, 8))), 
DL(1, I1) * DL(1, I1), DL(2, I1) * DL(2, I1), DL(2, I1) * DL(1, I1)
 Close (aa)
 '--------------------
76
 Else
 For I2 = 1 To I1
 If UCase(Trim(Tram(1, I2))) = UCase(Trim(LAYND(B, 3))) Then
 '--------------------
 DL(0, I2) = DL(0, I2) + 1
 DL(1, I2) = DL(1, I2) + Val(Trim(LAYND(B, 7))) 'lay phvt Xi
 DL(2, I2) = DL(2, I2) + Val(Trim(LAYND(B, 8))) 'lay mua Yi
 DL(3, I2) = DL(3, I2) + DL(1, I2) * DL(1, I2) 'lay phvt Xi*Xi
 DL(4, I2) = DL(4, I2) + DL(2, I2) * DL(2, I2) 'lay mua Yi*Yi
 DL(5, I2) = DL(5, I2) + DL(2, I2) * DL(1, I2) 'lay mua Xi*Yi
 K1 = K1 + 1
 hs(1, K1) = Val(Trim(LAYND(B, 7)))
 hs(2, K1) = Val(Trim(LAYND(B, 8)))
 '---------------- phan tinh he so hoi qui
 ' dl(7,i2)=
 aa = 10 + DL(0, I2)
 Open TMG + "data\" & Tram(1, I2) & ".txt" For Append As #aa
 Print #aa, Val(Trim(LAYND(B, 7))), Val(Trim(LAYND(B, 8))), DL(1, I2) * 
DL(1, I2), DL(2, I2) * DL(2, I2), DL(2, I2) * DL(1, I2)
 Close (aa)
 '--------------------
 GoTo 500
 End If
 Next I2
 I1 = I1 + 1
 Tram(1, I1) = LAYND(B, 3)
 Tram(2, I1) = I1
 '--------------------
 DL(1, I1) = DL(1, I1) + Val(Trim(LAYND(B, 7))) 'lay phvt Xi
 DL(2, I1) = DL(2, I1) + Val(Trim(LAYND(B, 8))) 'lay mua Yi
 DL(3, I1) = DL(3, I1) + DL(1, I1) * DL(1, I1) 'lay phvt Xi*Xi
 DL(4, I1) = DL(4, I1) + DL(2, I1) * DL(2, I1) 'lay mua Yi*Yi
 DL(5, I1) = DL(5, I1) + DL(2, I1) * DL(1, I1) 'lay mua Xi*Yi
 DL(0, I1) = DL(0, I1) + 1
 aa = 10 + DL(0, I1)
 K1 = K1 + 1
 hs(1, K1) = Val(Trim(LAYND(B, 7)))
 hs(2, K1) = Val(Trim(LAYND(B, 8)))
 Open TMG + "data\" & Tram(1, I1) & ".txt" For Append As #aa
 Print #10 + DL(0, I1), Val(Trim(LAYND(B, 7))), Val(Trim(LAYND(B, 8))), 
DL(1, I1) * DL(1, I1), DL(2, I1) * DL(2, I1), DL(2, I1) * DL(1, I1)
 Close (aa)
 '--------------------
 End If
 ' List1.AddItem DL(1, I1) & "--------" & DL(2, I1)
500 Loop
 Close (1)
77
 Close
 '----------------------------
 SoTram = I1
 Open FKQ For Output As #5
 For I1 = 1 To SoTram '
 Tu = (DL(0, I1) * DL(5, I1) - DL(1, I1) * DL(2, I1))
 Mau1 = (DL(0, I1) * DL(3, I1) - DL(1, I1) * DL(1, I1)) ^ 0.5
 Mau2 = (DL(0, I1) * DL(4, I1) - DL(2, I1) * DL(2, I1)) ^ 0.5
 DL(7, I1) = Tu / (DL(0, I1) * DL(3, I1) - DL(1, I1) * DL(1, I1)) ' 
 DL(8, I1) = (DL(2, I1) / DL(0, I1)) - DL(7, I1) * (DL(1, I1) / DL(0, I1)) 'b
 'Print #5, Mau1, Mau2
 If Mau1 * Mau2 0 Then
 DL(6, I1) = Tu / (Mau1 * Mau2)
 Else
 DL(6, I1) = 0
 End If
 Print #5, Tram(2, I1), Tram(1, I1), DL(0, I1), Format(DL(1, I1), "###########0.0"), 
Format(DL(2, I1), "###########0.0"), Format(DL(3, I1), "###########0.0"), 
Format(DL(4, I1), "###########0.0"), Format(DL(5, I1), "###########0.0"), 
Format(DL(6, I1), "#0.0000000000"), Format(DL(7, I1), "#####0.0000"), Format(DL(8, 
I1), "#####0.0000")
 Next I1 
 '----------------------
 If K1 > 0 Then
 For K2 = 1 To K1
 Tong(1) = Tong(1) + hs(1, K2) ' tong x
 Tong(2) = Tong(1) + hs(2, K2) ' tong y
 Next K2
 Tong(3) = Tong(1) / K1 ' lay trung binh x
 Tong(4) = Tong(2) / K1 ' lay trung binh y
 For K2 = 1 To K1
 Tong(5) = hs(1, K2) - Tong(1) ' trung gian x
 Tong(6) = hs(2, K2) - Tong(1) ' trung gian y
 Tong(7) = Tong(7) + Tong(5) * Tong(6) ' trung gin luon dung
 Tong(8) = Tong(8) + Tong(5) * Tong(5) ' trung gian x * x
 Next K2 '
 AAA = Tong(4) - (Tong(7) / Tong(8)) * Tong(3)
 BBB = (Tong(7) / Tong(8))
 Print #5, " Y = " & Format(AAA, "####0.0000") & " + " & Format(BBB, 
"####0.0000") & " X "
 End If
 Close (5)
End If
Screen.MousePointer = 0
End Sub
Sub chayABnho(F1)
Dim B, Tram(2, 100), DL(10, 100000) As Currency, I1, I2, SoTram, FKQ, Tong(10)
78
Dim AAA, BBB, Xtb, Ytb, Lxy, Lxx, a1, a0
FKQ = TMG + "kqAB.txt"
Screen.MousePointer = 11
For I1 = 1 To 10
Tong(I1) = 0
 For I2 = 1 To 100
 DL(I1, I2) = 0
 Next
Next
I1 = 0
If FSO.FileExists(F1) = True Then 
 Open FKQ For Output As #5
 Print #5, "dBZ", "lgI", "Z", "I"
 Open F1 For Input As #1
 Do Until EOF(1)
 Line Input #1, B
 'If I1 = 0 Then
 '--------------------
 If (Val(Trim(LAYND(B, 8))) * 6) > 30 Or Val(Trim(LAYND(B, 7))) < 15 
Then GoTo 500
 I1 = I1 + 1
 DL(1, I1) = Val(Trim(LAYND(B, 7))) 'lay phvt Xi
 DL(2, I1) = Log10(Val(Trim(LAYND(B, 8))) * 6) 'lay mua Yi 
 Print #5, DL(1, I1), DL(2, I1), Format(10 ^ (DL(1, I1) / 10), 
"###########0.0"), (Val(Trim(LAYND(B, 8))) * 6)
 Tong(1) = Tong(1) + DL(1, I1) 'tong phvt Xi*Xi
 Tong(2) = Tong(2) + DL(2, I1) 'tong mua Yi*Yi
 '--------------------
 'End If
 ' List1.AddItem DL(1, I1) & "--------" & DL(2, I1)
500 Loop
 Close (1)
 '----------------------------
 SoTram = I1
 ' For I1 = 1 To SoTram
 'X & Y & y-ytb & x-xtb & (x-xtb)(y-ytb) & (x-xtb)(x-xtb)&
 ' a0=ytb-a1 * Xtb
 'a1=lxy/lxx
 'tinh trung binh
 Xtb = Tong(1) / I1
 Ytb = Tong(2) / I1
 For I1 = 1 To SoTram
 Tong(3) = Tong(3) + (DL(1, I1) - Xtb) * (DL(2, I1) - Ytb)
 Tong(4) = Tong(4) + (DL(1, I1) - Xtb) * (DL(1, I1) - Xtb)
 Next I1
 Lxy = Tong(3)
 Lxx = Tong(4)
79
 a1 = Lxy / Lxx
 a0 = Ytb - Xtb * a1 
 ' DL(7, I1) = Tu / (DL(0, I1) * DL(3, I1) - DL(1, I1) * DL(1, I1)) ' a
 ' DL(8, I1) = (DL(2, I1) / DL(0, I1)) - DL(7, I1) * (DL(1, I1) / DL(0, I1)) 'b
 'Print #5, Mau1, Mau2
 'Print #5, Tram(2, I1), Tram(1, I1), DL(0, I1), Format(DL(1, I1), 
"###########0.0"), Format(DL(2, I1), "###########0.0"), Format(DL(3, I1), 
"###########0.0"), Format(DL(4, I1), "###########0.0"), Format(DL(5, I1), 
"###########0.0"), Format(DL(6, I1), "#0.0000000000"), Format(DL(7, I1), 
"#####0.0000"), Format(DL(8, I1), "#####0.0000")
 ' Print #5, "Y=a0 + a1 X"
 ' Print #5, "a0", "a1"
 ' Print #5, Format(a0, "###########0.0"), Format(a1, "###########0.0")
 ' Next I1 
 '---------------------- 
 Print #5, "0.0", "0.0", "0.0 ", "0.0 ", "Y = " & Format(a0, "####0.0000") & " + " 
& Format(a1, "####0.0000") & " X "
 List1.AddItem " Y = " & Format(a0, "####0.0000") & " + " & Format(a1, 
"####0.0000") & " X "
 List1.AddItem " A= " & 10 ^ (a0 / 10) & " va b= " & Format(a1 / 10, "####0.0000")
 Print #5, "0.0", "0.0", "0.0 ", "0.0 ", " A= " & 10 ^ (a0 / 10), " va b= " & Format(a1 / 
10, "####0.0000")
 Close (5)
End If
Screen.MousePointer = 0
End Sub
Private Sub Command1_Click()
Dim t As Currency, I As Currency
t = Val(Trim(Text1.Text))
F4 = TMG + "KsatABZ.txt"
Open F4 For Output As #4
Screen.MousePointer = 11
For I2 = 1 To 1000
For I3 = 0.4 To 4 Step 0.1
 For I = 0 To 10 Step 0.5
' List1.AddItem i & " " & Rradar1(200, 1.6, i)
 'List1.AddItem THEMkhong(Str(I), 3) & " " & Format(Zradar(200, 1.6, I), "####0.00")
If Zradar(I2, I3, I) 15 Then Print #4, THEMCACH(I2, 4), 
THEMCACH(I3, 3), THEMCACH(Str(I), 4), Format(Zradar(I2, I3, I), "####0.00")
 Next I
 Print #4, "**"
 Next I3
 Print #4, "-------------"
Next I2
Close (4)
Screen.MousePointer = 0
End Sub
80
Private Sub Command2_Click()
Dim F1
 F1 = TMG + "DATA4cap.TXT"
 Call chaydothi(F1)
End Sub
Sub chaydothi(F1)
Dim DL(10, 100000) As Currency, I1
FKQ = TMG + "dothiLgR.txt"
Screen.MousePointer = 11
'-------------------
I1 = 0
 List1.Clear 
If FSO.FileExists(F1) = True Then
 Open FKQ For Output As #2
 Open F1 For Input As #1
 K1 = 0
 Do Until EOF(1)
 Line Input #1, B ' If I1 = 0 Then
 I1 = I1 + 1
 ' Tram(1, I1) = LAYND(B, 3)
 ' Tram(2, I1) = I1
 '--------------------
 DL(1, I1) = Val(Trim(LAYND(B, 7))) 'lay phvt Xi
 DL(2, I1) = Val(Trim(LAYND(B, 8))) * 6 'lay mua Yi
 DL(3, I1) = Log10(DL(2, I1))
 Print #2, DL(1, I1), DL(2, I1), DL(3, I1)
 ' DL(3, I1) = DL(3, I1) + DL(1, I1) * DL(1, I1) 'lay phvt Xi*Xi
 ' DL(4, I1) = DL(4, I1) + DL(2, I1) * DL(2, I1) 'lay mua Yi*Yi
 ' DL(5, I1) = DL(5, I1) + DL(2, I1) * DL(1, I1) 'lay mua Xi*Yi
 '---------------- phan tinh he so hoi qui.
 ' K1 = 1
 ' End If
 Loop
 Close (1)
 Close (2)
 End If
Screen.MousePointer = 0
End Sub
Private Sub Command3_Click()
Dim t As Currency
t = Val(Trim(Text1.Text))
List1.AddItem Log10(t)
End Sub
Private Sub Composite_Click()
Dim F0, F1, F2, F4, F5, DL(100000), K1, K2, K3, I1, B, DAU
Static I2
'F0 = TMG + "radarainf.INI"
81
F4 = TMG + "DATA4cap2004.TXT"
F5 = TMG + "DATA4ppi2004.TXT"
Screen.MousePointer = 11
'If FSO.FileExists(F0) = True Then
 F1 = TMG + "DATA2.TXT"
 F2 = TMG + "DATA1.TXT"
 '-------------------------
 List1.Clear
 Open F4 For Output As #4
 ' Open F5 For Output As #5
 If FSO.FileExists(F2) = True Then
 I1 = 0 
 Open F1 For Input As #1
 Do Until EOF(1)
 I1 = I1 + 1
 Line Input #1, DL(I1)
 Loop
 Close (1)
 End If
 '-------------------------
 List1.AddItem F1 & " " & I1
 If FSO.FileExists(F2) = True Then
 I2 = 0
 I3 = 0
 ProgressBar1(0).Max = LINEFILE(F2)
 Open F2 For Input As #2
 Do Until EOF(2)
 I2 = I2 + 1 
 Line Input #2, B
 ' Print #4, LAYND(B, 1), LAYND(B, 2), LAYND(B, 4), LAYND(B, 5), 
LAYND(B, 6)
 For K1 = 1 To I1
 If Trim(LAYND(DL(K1), 1)) = Trim(LAYND(B, 1)) And 
Trim(LAYND(DL(K1), 5)) = Trim(LAYND(B, 3)) And Abs(Val(Trim(LAYND(B, 2))) -
Val(Trim(LAYND(DL(K1), 2)))) < 4 Then
 I3 = I3 + 1
 If LAYND(B, 6) = "CAP" Then
 Print #4, B, LAYND(DL(K1), 4)
 End If
 End If
 Next K1
 ProgressBar1(0).Value = I2
 Label5.Caption = I3
 ProgressBar1(0).Visible = True
 DoEvents
 Loop
 Close (2)
82
 End If
 '-------------------------
 List1.AddItem F2 & " " & I2
 List1.AddItem " CAP " & I3 
 '-------------------------
'End If
1000 Close (4)
'Close (5)
Screen.MousePointer = 0
End Sub
Private Sub Composite10_Click()
Dim F0, F1, F2, F4, F5, DL(100000), K1, K2, K3, I1, B, DAU
Static I2
'F0 = TMG + "radarainf.INI"
F4 = TMG + "DATA4cap10.TXT"
F5 = TMG + "DATA4ppi10.TXT"
Screen.MousePointer = 11
'If FSO.FileExists(F0) = True Then
 F1 = TMG + "DATA2.TXT"
 F2 = TMG + "DATA1.TXT"
 '-------------------------
 List1.Clear
 Open F4 For Output As #4
 Open F5 For Output As #5
 If FSO.FileExists(F2) = True Then
 I1 = 0 
 Open F1 For Input As #1
 Do Until EOF(1)
 I1 = I1 + 1
 Line Input #1, DL(I1)
 Loop
 Close (1)
 End If
 '-------------------------
 List1.AddItem F1 & " " & I1
 If FSO.FileExists(F2) = True Then
 I2 = 0
 I3 = 0
 ProgressBar1(0).Max = LINEFILE(F2)
 Open F2 For Input As #2
 Do Until EOF(2)
 I2 = I2 + 1 
 Line Input #2, B
 ' Print #4, LAYND(B, 1), LAYND(B, 2), LAYND(B, 4), LAYND(B, 5), 
LAYND(B, 6)
 For K1 = 1 To I1
83
 If Trim(LAYND(DL(K1), 1)) = Trim(LAYND(B, 1)) And 
Trim(LAYND(DL(K1), 5)) = Trim(LAYND(B, 3)) And Abs(Val(Trim(LAYND(B, 2))) -
Val(Trim(LAYND(DL(K1), 2)))) < 4 Then
 I3 = I3 + 1
 If LAYND(B, 6) = "CAP" Then
 Print #4, B, LAYND(DL(K1), 4)
 Else
 Print #5, B, LAYND(DL(K1), 4)
 End If
 Exit For
 End If
 Next K1
 ProgressBar1(0).Value = I2
 Label5.Caption = I3
 ProgressBar1(0).Visible = True
 DoEvents
 Loop
 Close (2)
 End If
 '-------------------------
 List1.AddItem F2 & " " & I2
 List1.AddItem " CAP " & I3
 '-------------------------
'End If
1000 Close (4)
Close (5)
Screen.MousePointer = 0
End Sub
Private Sub exit_Click()
End
End Sub
Sub docfilemd(F, F2)
Dim I1, I2, I3, LMUA, TGMUA, tdiem, MTonG
LMUA = 0
TGMUA = ""
MTonG = 0
If FSO.FileExists(F) Then
 'List1.Clear
 nhandien = Trim(Label6.Caption)
 tenfile = TENTRAM(UCase(Trim(Mid(F, 1, Len(F) - 4))))
 List1.AddItem tenfile
 Open F2 For Append As #4
 Open F For Input As #3
 I1 = 0
 nhanfile = 0
 Do Until EOF(3)
 I1 = I1 + 1
84
 Line Input #3, B
 If I1 = 1 And Mid(B, 1, 4) = Trim("Date") Then nhanfile = 3
 If Mid(B, 1, 1) = Trim(nhandien) Then
'If Right(B, 1) = """ Then
 TAM = ""
 For I = 1 To Len(B)
 If Mid(B, I, 1) Trim(nhandien) Then
 If Mid(B, I, 1) = Chr(13) Or Mid(B, I, 1) = Chr(10) Then
 'List1.AddItem TAM
 If Val(Trim(Right(TAM, 4))) > 0 Then Print #4, them0gio(TAM), 
tenfile
 TAM = ""
 Else
 TAM = TAM & Mid(B, I, 1)
 End If
 End If
 Next
 If Trim(TAM) "" Then Print #4, them0gio(TAM), tenfile
 Else
 If Mid(B, 7, 1) = "," Then
 TAM = ""
 TAM = "20" & Mid(B, 1, 2) & "/" & Mid(B, 3, 2) & "/" & Mid(B, 5, 2) & " " 
& Mid(B, 8, 5) & " " & Val(Trim(Right(B, 2))) * 0.5
 If Val(Trim(Right(B, 2))) > 0 Then Print #4, TAM, TENTRAM1(tenfile)
 End If
 If nhanfile = 3 And I1 > 1 Then
 tdiem = Val(Trim(Mid(B, 13, 1)))
 If Left(B, 13) = TGMUA Then
 MTonG = MTonG + Val(Trim(Mid(B, 16, Len(B) - 15))) - LMUA
 Else
 If MTonG > 0 Then Print #4, TAM & " " & MTonG, TENTRAM1(tenfile) ', 
tdiem
 ' List1.AddItem "Tong: " & TAM & " " & MTonG
 ' TaM = congtg(b, tdiem) & " " & MTonG '
 MTonG = Val(Trim(Mid(B, 16, Len(B) - 15))) - LMUA 
 End If 
 TAM = congtg(B, tdiem) & " " '& MTonG '
 LMUA = Val(Trim(Mid(B, 16, Len(B) - 15)))
 ' List1.AddItem b
 TGMUA = Left(B, 13) 
 End If
 End If
 Loop
 If MTonG > 0 And nhanfile = 3 And I1 > 1 Then Print #4, TAM & " " & MTonG, 
TENTRAM1(tenfile) '
 ' MTonG = Val(Trim(Mid(b, 16, Len(b) - 15))) - LMUA 
 Close (3)
85
 Close (4)
End If
End Sub
Sub docfilemd1(F, F2)
Dim I1, I2, I3, LMUA, TGMUA, tdiem, MTonG
LMUA = 0
TGMUA = ""
MTonG = 0
If FSO.FileExists(F) Then
 tenfile = TENTRAM(UCase(Trim(Mid(F, 1, Len(F) - 4))))
 List1.AddItem tenfile
 Open F2 For Append As #4
 Open F For Input As #3
 I1 = 0
 nhanfile = 0
 Do Until EOF(3)
 I1 = I1 + 1
 Line Input #3, B 
 If I1 > 1 Then
 nam = Mid(B, 7, 4)
 thang = Mid(B, 3, 4)
 Ngay = Mid(B, 1, 2)
 Gio = Mid(B, 13, 5)
 TAM = nam & thang & Ngay & " " & Gio
 LMUA = Val(Mid(B, 24, 5))
 If LMUA > 0 Then Print #4, TAM & " " & LMUA, TENTRAM1(tenfile) 
 End If 
 Loop
 ' If MTonG > 0 And nhanfile = 3 And I1 > 1 Then Print #4, TAM & " " & MTonG, 
TENTRAM1(tenfile) '
 ' MTonG = Val(Trim(Mid(b, 16, Len(b) - 15))) - LMUA 
 Close (3)
 Close (4)
End If
End Sub
Function congtg(B, tdiem)
Dim t, TaM1, Ngay, thang, nam, Gio
t = tdiem + 1
If t = 6 Then
 nam = Val(Trim("20" & Mid(B, 7, 2)))
 thang = Val(Trim(Left(B, 2)))
 Ngay = Val(Trim(Mid(B, 4, 2)))
 Gio = Val(Trim(Mid(B, 10, 2))) + 1
 If Gio > 23 Then
 Gio = Gio - 24
 Ngay = Ngay + 1
 If Ngay > layngay(nam, thang) Then
86
 Ngay = 1
 thang = thang + 1
 If thang > 12 Then
 thang = 1
 nam = nam + 1
 End If
 End If
 End If
 TaM1 = nam & "/" & THEMkhong(Str(thang), 2) & "/" & THEMkhong(Str(Ngay), 2) 
& " " & THEMkhong(Str(Gio), 2) & ":00"
Else
TaM1 = "20" & Mid(B, 7, 2) & "/" & Left(B, 5) & " " & Trim(Mid(B, 10, 3)) & t & "0"
End If
congtg = TaM1
End Function
Function them0gio(B)
Dim TaM1
TaM1 = ""
If Trim(B) "" Then
TaM1 = Mid(B, 1, 10) & " " & THEMkhong(Trim(Mid(B, 12, 5)), 5) & " " & 
Trim(Mid(B, 17, Len(B) - 16))
End If
them0gio = TaM1
End Function
Private Sub File1_DblClick()
Dim F, B
F = File1.Path & "\" & File1.FileName
F3 = TMG + "DATA3.TXT"
Open F3 For Output As #2
Close (2)
Call docfilemd(F, F3)
End Sub
Private Sub Form_Load()
Call hientt
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As 
Single)
 ProgressBar1(0).Visible = False
 ProgressBar1(1).Visible = False
End Sub
Private Sub Label1_Click()
If FSO.FolderExists(Label1.Caption) = True Then File1.Path = Label1.Caption
End Sub
Private Sub Label2_Click()
If FSO.FolderExists(Label2.Caption) = True Then File1.Path = Label2.Caption
End Sub
Private Sub lap_Click()
87
Dim F1
 F1 = TMG + "DATA4cap1.TXT"
 ' F1 = TMG + "data102008.txt"
 Call lapAB(F1)
 MsgBox "Xong ", vbInformation, "HOANG MINH TOAN THONG BAO"
End Sub
Sub lapAB(F1)
Dim B, Tram(2, 100), DL(10, 100000) As Currency, I1, I2, SoTram, FKQ, Tu, Mau1, 
Mau2, hs(10, 100000), K1 As Currency, K2 As Currency, K3 As Currency, Tong(10)
Dim ar As Currency, br, AMAX, BMAX, Amin, BMIN, TQ(10, 800000), CAN, CAN2
Dim AAA, BBB, HESO(10, 800000), BBMIN, BBMAX, AAMIN, AAMAX, j1, j2, j3, 
step1
FKQ = TMG + "lapab.txt"
Screen.MousePointer = 11
For I1 = 1 To 200000
HESO(5, I1) = 0
 HESO(6, I1) = 0
 HESO(7, I1) = 0
 HESO(8, I1) = 0
 HESO(9, I1) = 0
 For I2 = 1 To 5
 TQ(I2, I1) = 0
 Next
Next I1
'-------------------
I1 = 0
 List1.Clear
 AMAX = 1000
 AAMAX = AMAX
 BMAX = 4
 BBMAX = BMAX
 Amin = 10
 AAMIN = Amin
 BMIN = 1
 BBMIN = BMIN
 flag = 0
 Stepp = 1
If FSO.FileExists(F1) = True Then
Open FKQ For Output As #44
 Open F1 For Input As #1
 K1 = 0
 Do Until EOF(1)
 Line Input #1, B ' If I1 = 0 Then
 I1 = I1 + 1
 ' Tram(1, I1) = LAYND(B, 3)
 ' Tram(2, I1) = I1
 '--------------------
88
 DL(1, I1) = Val(Trim(LAYND(B, 7))) 'lay phvt Xi Rradar(K2, K3, DL(1, I1))
 DL(2, I1) = Val(Trim(LAYND(B, 8))) 'lay mua Yi
 ' DL(3, I1) = DL(3, I1) + DL(1, I1) * DL(1, I1) 'lay phvt Xi*Xi
 ' DL(4, I1) = DL(4, I1) + DL(2, I1) * DL(2, I1) 'lay mua Yi*Yi
 ' DL(5, I1) = DL(5, I1) + DL(2, I1) * DL(1, I1) 'lay mua Xi*Yi
 '---------------- phan tinh he so hoi qui.
 ' K1 = 1
 ' End If
 Loop
 Close (1) 
 I2 = I1
 '----------------------------------
 K1 = 0 '------------------------------------- 
 CAN = 100000
600 K1 = K1 + 1
 List1.AddItem K1 & " A [ " & AMAX & "," & Amin & "], B [ " & BMAX & "," & 
BMIN & " ] STEP " & Stepp
 For j2 = Amin To AMAX Step step1
 Print #44, K1, j2, Amin, AMAX, step1
 For j3 = BMIN To BMAX Step Stepp
 HESO(7, K1) = 0
 K2 = j2
 K3 = j3
 For I1 = 1 To I2
 ' Rradar(A,B,DBZ) '
DL(3, I1) = Rradar(K2, K3, DL(1, I1)) ' MUA DA TINH BANG RADAR
DL(4, I1) = (DL(3, I1) - DL(2, I1)) 'MUA MAT DAT TRU DI MUA RADAR
HESO(5, K1) = HESO(5, K1) + DL(4, I1) ' * DL(4, I1) ' sai so trung binh
 HESO(6, K1) = HESO(6, K1) + Abs(DL(4, I1)) '
 HESO(7, K1) = HESO(7, K1) + Abs(DL(4, I1)) * Abs(DL(4, I1)) 'sai so 
trung binh binh phuong
 Next I1
 ' List1.AddItem HESO(7, K1) / I2
 If K1 = 1 And flag = 0 Then
 CAN = HESO(7, K1) / I2
 flag = 1
 Else
 If CAN > HESO(7, K1) / I2 Then
 CAN = HESO(7, K1) / I2
 ' Print #44, K2
 End If
 End If
 ' List1.AddItem HESO(7, K1) / I2 ' MsgBox "dsf" 
 Next j3 
 Next j2
 CAN2 = CAN
 '------------
89
 ' If K1 > 2 Then Print #44, "____+++ " & AMAX, Amin
 For K2 = Amin To AMAX Step step1
 ' If K1 > 2 Then Print #44, "____ " & K2
 For K3 = BMIN To BMAX Step Stepp
 ' If K1 > 2 Then Print #44, "+++ " & K2 & " A ", K3, Stepp
 HESO(7, K1) = 0
 For I1 = 1 To I2
 ' Rradar(A,B,DBZ) '
 DL(3, I1) = Rradar(K2, K3, DL(1, I1)) ' MUA DA TINH BANG RADAR
 DL(4, I1) = (DL(3, I1) - DL(2, I1)) 'MUA MAT DAT TRU DI MUA 
RADAR
 HESO(5, K1) = HESO(5, K1) + DL(4, I1) ' * DL(4, I1) ' sai so trung binh
 HESO(6, K1) = HESO(6, K1) + Abs(DL(4, I1)) '
 HESO(7, K1) = HESO(7, K1) + Abs(DL(4, I1)) * Abs(DL(4, I1)) 'sai so 
trung binh binh phuong
 Next I1
 ' List1.AddItem HESO(7, K1) / I2
 If K1 > 1 Then 
 If Abs(CAN2 - HESO(7, K1) / I2) < 0.001 Then
 If AAMAX > K2 Then AAMAX = K2
 If AAMIN < K2 Then AAMIN = K2
 If BBMAX > K3 Then BBMAX = K3
 If BBMIN < K3 Then BBMIN = K3
 If K1 > 2 Then Print #44, "--- " & K1 & " A { " & AAMAX & "," & 
AAMIN & "}, B { " & BBMAX & "," & BBMIN & "} " & CAN2 & " H/S " & HESO(7, 
K1) / I2 
 End If
 End If
 Next K3 
 Next K2
 CAN2 = CAN 
 Print #44, I2, CAN, K1
 If (AAMAX = AAMIN And BBMAX = BBMIN) Or K1 >= 4 Then '
 ' Print #44, K1 & " A ( " & AAMAX & "," & AAMIN & "), B [ " & BBMAX & "," 
& BBMIN & "] " & Stepp
 ' List1.AddItem K1 & " A [ " & AAMAX & "," & AAMIN & "], B [ " & BBMAX 
& "," & BBMIN & "] " & CAN
 GoTo 5000
 Else
 ' List1.AddItem K1 & " A [ " & AAMAX & "," & AAMIN & "], B [ " & BBMAX 
& "," & BBMIN & "] " & CAN
 Amin = AAMIN
 AMAX = AAMAX
 BMIN = BBMIN
 BMAX = BBMAX
 Stepp = Stepp / 10
 If Amin > AMAX Then step1 = -1
90
 If BMIN > BMAX Then Stepp = (Stepp) * (-1)
 Print #44, K1 & " A [ " & AMAX & "," & Amin & "], B [ " & BMAX & "," & 
BMIN & "] " & Stepp
 GoTo 600
 End If
 '-------------------------------------
 5000 ProgressBar1(0).Max = K1
 'Print #2, HESO(3, I1), HESO(4, I1), Format(HESO(5, I1), "######0.000"), 
Format(HESO(6, I1), "######0.000"), Format(HESO(7, I1), "######0.000"), 
Format(HESO(8, I1), "######0.000"), Format(HESO(9, I1), "######0.000")
 'Next I1
 Close (2)
 End If
 '----------------------
 Screen.MousePointer = 0
End Sub
Private Sub List1_DblClick()
tf = TMG + "data3.txt"
 Open tf For Input As #1
 I1 = 0
 'List1.Visible = False
 Do Until EOF(1)
 Line Input #1, B
 I1 = I1 + 1
 List1.AddItem B
 Loop
 Close (1)
End Sub
Private Sub ppi_Click()
Dim F1
 F1 = TMG + "DATA4ppi.TXT"
 Call chaysp(F1)
End Sub
Private Sub radardata_Click()
Form4.Show
End Sub
Sub hientt()
F1 = TMG + "radarainf.INI"
If FSO.FileExists(F1) = True Then
 Label1.Caption = DOCTHONGSO(F1, 1)
 Label2.Caption = DOCTHONGSO(F1, 2)
End If
F1 = TMG + "DATA2.TXT"
 F2 = TMG + "DATA1.TXT"
 If FSO.FileExists(F1) = True And FSO.FileExists(F2) = True Then
 Form1.Composite.Enabled = True 
 Else
91
 Form1.Composite.Enabled = False
 End If
End Sub
Private Sub rainfall_Click()
Form5.Show
End Sub
Private Sub Timer1_Timer()
Timer1.Interval = 0
Call CHAYRD
End Sub
Private Sub Timer2_Timer()
Timer2.Interval = 0
Call chayMD
End Sub...
PL4.Kết quả tính toán 
…
A b MSE MAE ME
5 2.3 24.173 4.184 3.832
6 2.2 24.913 4.195 3.839
2 2.8 22.13 4.178 3.841
4 2.4 24.518 4.262 3.925
7 2.1 26.642 4.277 3.925
..
45 3 4.584 1.356 0.034
88 3.6 4.867 1.23 -0.483
80 3.9 4.885 1.233 -0.483
75 4.1 4.896 1.235 -0.483
66 4.5 4.916 1.239 -0.483
64 4.6 4.921 1.239 -0.483
62 4.7 4.926 1.24 -0.483
1364 5 6.036 1.244 -1.107
1365 5 6.036 1.244 -1.107
1366 5 6.036 1.244 -1.107
522 1.5 5.795 1.29 -1.106
527 1.6 5.796 1.281 -1.106
92
518 1.4 5.8 1.301 -1.106
534 1.7 5.803 1.274 -1.106
795 4.4 5.879 1.228 -1.05
796 4.4 5.88 1.228 -1.05
812 4.5 5.882 1.228 -1.05
..
459 3 5.662 1.213 -0.99
464 3.1 5.668 1.212 -0.99
465 3.1 5.67 1.212 -0.99
........
            Các file đính kèm theo tài liệu này:
 xay_dung_cong_thuc_tinh_luong_mua_tu_so_lieu_ra_dadople_cho_khu_vuc_trung_trung_bo_2451.pdf xay_dung_cong_thuc_tinh_luong_mua_tu_so_lieu_ra_dadople_cho_khu_vuc_trung_trung_bo_2451.pdf