Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
Luận văn Nghiên cứu xây dựng chương trình tính toán vị trí tàu theo phương pháp ma trận vòng
đẳng cao thiên thể
i
LỜI CAM ĐOAN
Tôi xin cam đoan rằng luận văn này là công trình nghiên cứu của riêng
tôi. Các số liệu, kết quả được nêu ra trong bản luận văn này là hoàn toàn trung
thực và chưa từng được ai công bố trong bất kỳ một công trình nghiên cứu
nào khác trước đó.
Đồng thời, tôi cũng xin cam đoan rằng, các thông tin được trích dẫn
trong luận văn đều đã được chỉ rõ về xuất xứ, nguồn gốc và đảm bảo tính
chính xác.
Hải Phòng, ngày 31 tháng 10 năm 2012
Tác giả
KS. NGUYỄN VĂN SƯỚNG
ii
LỜI CẢM ƠN
Tác giả xin chân thành cám ơn các thành viên trong gia đình đã động
viên và tạo mọi điều kiện thuận lợi nhất để tác giả có thể hoàn thành chương
trình học tập của mình.
Tác giả xin chân thành cám ơn Thầy giáo PGS, TS. Nguyễn Cảnh Sơn,
thầy đã hướng dẫn, chỉ bảo tận tình chu đáo trong suốt thời gian tác giả thực
hiện đề tài cũng như theo học tại Trường Đại học Hàng hải Việt Nam.
Tác giả cũng xin trân trọng cám ơn các Thầy giáo PGS, TS. Lê Đức
Toàn, ThS. Đào Quang Dân, các thầy đã giúp đỡ tác giả đăng tải một số công
trình khoa học liên quan cũng như là góp ý để nội dung của đề tài được phong
phú hơn, hoàn thiện hơn.
Mặc dù tác giả đã rất cố gắng trong quá trình nghiên cứu cũng như viết
luận văn, nhưng với nội dung khá lớn, việc thu thập và xử lý tài liệu nhiều và
bản thân còn những hạn chế nhất định, vì vậy, khó tránh khỏi những khiếm
khuyết. Tác giả rất mong nhận được sự đóng góp ý kiến xây dựng của các
thầy, các đồng nghiệp và các nhà khoa học quan tâm, để công trình nghiên
cứu ngày càng được hoàn chỉnh hơn.
Tác giả xin trân trọng cảm ơn!
iii
MỤC LỤC
LỜI CAM ĐOAN .......................................................................................... i
LỜI CẢM ƠN............................................................................................... ii
MỤC LỤC…………………………………………………………………...iii
DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU .................................. v
DANH MỤC HÌNH VẼ …......................................................................... vii
DANH MỤC CÁC BẢNG........................................................................... ix
MỞ ĐẦU ....................................................................................................... 1
1. Tính cấp thiết của đề tài…………………..................................................1
2. Mục đích nghiên cứu của đề tài ............................................................... 2
3. Đối tượng và phạm vi nghiên cứu............................................................ 3
4. Phương pháp nghiên cứu của đề tài ......................................................... 3
5. Ý nghĩa khoa học và thực tiễn của đề tài ................................................. 3
CHƯƠNG 1. TỔNG QUAN CÁC PHƯƠNG PHÁP XÁC ĐỊNH VỊ TRÍ
TÀU BẰNG THIÊN VĂN VÀ HẠN CHẾ CỦA CÁC PHƯƠNG
PHÁP................................................................................................................5
1.1 Cơ sở lý thuyết xác định vị trí tàu bằng phương pháp thiên văn………..5
1.2 Các phương pháp xác định vị trí tàu bằng thiên văn từ trước đến nay….8
1.3 Độ chính xác của các phương pháp xác định vị trí tàu bằng quan sát
thiên văn từ trước đến nay……………………………………………..19
1.4 Xu hướng phát triển hàng hải thiên văn trong tương lai………………21
1.5 Kết luận chương 1……………………………………………………..24
CHƯƠNG 2. CƠ SỞ DỮ LIỆU VÀ NGÔN NGỮ LẬP TRÌNH SỬ
DỤNG ĐỂ XÂY DỰNG CHƯƠNG TRÌNH TÍNH TOÁN VỊ TRÍ
TÀU………………………………………………………………………….25
iv
2.1 Các yếu tố cần thiết để giải bài toán xác định vị trí tàu bằng phương
pháp thiên văn, cơ sở dữ liệu cho chương trình tính toán……………..25
2.2 Ngôn ngữ lập trình sử dụng để xây dựng chương trình……………….33
2.3 Kết luận chương 2……………………………………………………..43
CHƯƠNG 3. THIẾT LẬP PHƯƠNG PHÁP MA TRẬN VÒNG ĐẲNG
CAO THIÊN THỂ VÀ XÂY DỰNG CHƯƠNG TRÌNH TÍNH TOÁN VỊ
TRÍ TÀU THEO PHƯƠNG PHÁP……………………………………….44
3.1 Thiết lập phương pháp ma trận vòng đẳng cao thiên thể tính toán vị trí
người quan sát…………………………………………………………44
3.2 Xây dựng chương trình tính toán vị trí tàu theo phương pháp ma trận
vòng đẳng cao thiên thể………………………………………………..50
3.3 Độ chính xác vị trí tính toán theo phương pháp và độ tin cậy của chương
trình tính toán………………………………………………………….56
3.4 Kết luận chương 3………………….………………………………….62
KẾT LUẬN, KIẾN NGHỊ………………………………………………....62
DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC ĐÃ CÔNG BỐ LIÊN
QUAN ĐẾN ĐỀ TÀI CỦA TÁC GIẢ…………………………………….65
DANH MỤC TÀI LIỆU THAM KHẢO………………………………….66
PHỤ LỤC……………………………………………………………….1/PL1
Phụ lục 1………………………………………………………………1/PL1
Phụ lục 2………………………………………………………………2/PL2
v
DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU
Chữ viết tắt Giải thích
Dec Declination of celestial body – Xích vĩ của thiên thể
GHA Greenwich Hour Angle of celestial body - Góc giờ thế giới
của thiên thể
Dec*, δ* Declination of celestial body – Xích vĩ của ngôi sao
SHA* Sidereal Hour Angle – xích kinh nghịch của ngôi sao
GHAγ, tγG
Greenwich Hour Angle of Aries – Góc giờ thế giới của điểm
xuân phân
GHA*, t*G
Greenwich Hour Angle of star – Góc giờ thế giới của ngôi
sao
LHA*, t*L Local Hour Angle of star – Góc giờ thế giới của ngôi sao
Dec Declination of Sun – Xích vĩ của mặt trời
GHA Greenwich Hour Angle of Sun – Góc giờ thế giới của mặt
trời
∆Dec Lượng biến thiên xích vĩ thiên thể
∆SHA Lượng biến thiên xích kinh nghịch của thiên thể
Dip Số hiệu chỉnh độ cao do độ nghiêng chân trời
R Refraction – Số hiệu chỉnh độ cao theo nhiệt độ và khí áp
PA Parallax in altitude – Số hiệu chỉnh độ cao do thị sai
HP Horizontal parallax – Thị sai chân trời
SD Semi Diameter – Bán kính thiên thể
vi
SA Semi Diameter of altitude – Số hiệu chỉnh độ cao do thiên
thể có bán kính lớn
φ Vĩ độ người quan sát trong hệ tọa độ địa dư
λ Kinh độ người quan sát trong tọa độ địa dư
PM Vị trí thiên đỉnh trên thiên cầu
Xo Hoành độ thiên đỉnh trong hệ tọa độ vuông góc
Yo Tung độ thiên đỉnh trong hệ tọa độ vuông góc
Zo Cao độ thiên đỉnh trong hệ tọa độ vuông góc
XE Hoành độ thiên đỉnh dự đoán trong hệ tọa độ vuông góc
YE Tung độ thiên đỉnh dự đoán trong hệ tọa độ vuông góc
ZE Cao độ thiên đỉnh dự đoán trong hệ tọa độ vuông góc
hS Độ cao thực tế của thiên thể sau khi hiệu chỉnh
x1, x2, x3 Hoành độ các thiên thể 1, 2, 3 trong hệ tọa độ vuông góc
y1, y2, y3 Tung độ các thiên thể 1, 2, 3 trong hệ tọa độ vuông góc
z1, z2, z3 Cao độ các thiên thể 1, 2, 3 trong hệ tọa độ vuông góc
PK, PK+1 Vị trí tính toán tại vòng lặp thứ K, thứ K + 1
MOC.OP
Tích vô hướng của 2 vector
r
Vector chỉ phương
1 2OC OC
Tích có hướng của 2 vector
1 2OC OC
Độ dài vector tích có hướng của 2 vector
vii
DANH MỤC HÌNH VẼ
Số hình Tên hình Trang
1.1 Vị trí người quan sát trên thiên cầu 5
1.2 Đồ giải 2 vòng đẳng cao xác định vị trí trên thiên cầu 8
1.3 Tam giác thiên văn 9
1.4 Đường vị trí xác định theo phương pháp Sumner 12
1.5 Đường vị trí xác định theo phương pháp Akimov 13
1.6 Đường vị trí xác định theo phương pháp hiệu độ cao 14
1.7 Robot thăm dò 22
1.8 Thiết bị nhận dạng sao (Star tracker) 23
2.1 Cửa sổ làm việc của chương trình 34
3.1 Hệ tọa độ không gian đề các vuông góc 44
3.2 Thiên cầu trên hệ tọa độ vuông góc 45
3.3 Mô tả phương pháp giải bằng hình học 47
3.4 Sơ đồ thuật toán chương trình xác định vị trí tàu bằng
mặt trời 51
3.5 Sơ đồ thuật toán chương trình xác định vị trí tàu bằng 2
thiên thể 52
viii
3.6 Sơ đồ thuật toán chương trình xác định vị trí tàu bằng 3
thiên thể 53
3.7 Cửa sổ chương trình chính 54
3.8 Cửa sổ chương trình tính toán vị trí tàu bằng mặt trời 54
3.9 Cửa sổ chương trình tính toán vị trí tàu bằng bằng 2 sao 55
3.10 Cửa sổ chương trình tính toán vị trí tàu bằng bằng 3 sao 55
3.11 Kết quả tính toán vị trí tàu bằng mặt trời không đồng
thời 56
3.12 Phương pháp hiệu độ cao xác định vị trí tàu bằng mặt
trời không đồng thời 57
3.13 Kết quả tính toán vị trí tàu bằng phương pháp ma trận
vòng đẳng cao với 2 sao 58
3.14 Phương pháp hiệu độ cao xác định vị trí tàu bằng 2 sao 59
3.15 Kết quả tính toán vị trí tàu bằng phương pháp ma trận
vòng đẳng cao với 3 sao 60
3.16 Phương pháp hiệu độ cao xác định vị trí tàu bằng 3 sao 61
ix
DANH MỤC CÁC BẢNG
Số bảng Tên bảng Trang
1.1 Tọa độ và biến thiên theo thời gian của các ngôi sao 29
1
MỞ ĐẦU
1. Tính cấp thiết của đề tài
Ngày nay, hệ thống định vị vệ tinh toàn cầu GPS là một phần không thể
thiếu trên các tàu thuyền vượt Đại dương. Hệ thống này được chính phủ Mỹ
xây dựng và quản lý, điều đó đồng nghĩa với việc độ chính xác vị trí tính toán
của các máy thu dân sự bị hạn chế ở một mức độ nhất định. Mặt khác, tại một
số vùng biển trên thế giới, máy thu GPS không nhận được tín hiệu sóng từ các
vệ tinh. Do đó, việc nghiên cứu và phát triển các hệ thống định vị khác nhau
nhằm hỗ trợ, bổ sung cũng như thay thế hệ thống GPS khi không có tín hiệu
sóng hoặc khi chính phủ Mỹ ngừng phát tín hiệu từ các vệ tinh đã và đang
được các nước trên thế giới tiến hành một cách mạnh mẽ.
Trên quan điểm đó, nhiều hệ thống định vị khác như GLONASS của
Nga, GALILEO của Liên minh Châu Âu, IRNSS của Ấn Độ đã và đang được
xây dựng, hoàn thiện, thử nghiệm kiểm tra độ chính xác. Đó cũng là những
bước tiến quan trọng nhằm hiện thực hóa giấc mơ làm chủ công nghệ dẫn
đường bằng vệ tinh của các quốc gia tiên tiến này. Tuy nhiên, các hệ thống
trên vẫn chưa thể đáp ứng những yêu cầu về một hệ thống định vị hoàn hảo
đối với lĩnh vực dân sự.
Hàng hải thiên văn là phương pháp tính toán vị trí tàu của người đi
biển, vị trí được xác định bằng cách quan sát thiên thể trên bầu trời. Đồng
thời, đây cũng là môn học bắt buộc đối với học viên chuyên ngành hàng hải
của các Trường Đại học Hàng hải trên Thế giới như: Học viện Hàng hải
California, Đại học Hàng hải Đại Liên, Đại học Hàng hải Thượng hải, Đại
học Đại Dương, Đại học Hàng hải Việt Nam……vv. Việc đưa hàng hải thiên
văn vào đào tạo, huấn luyện đã được tiêu chuẩn hóa trong công ước STCW -
2
78/95, sửa đổi Manila - 2010. Kể từ khi nhà hàng hải Saint - Hilaire đề xuất
phương pháp hiệu đường cao vị trí đến nay, đã có nhiều phương pháp thiên
văn tính toán vị trí tàu cũng như những chương trình phần mềm ứng dụng
được xây dựng (Ogilvie, R. E (1977), Watkins, R. (1979), Van Allen, J. A
(1981), Sevarance, R.W (1990), Metcalf, T. R (1991), Kaplan, G. H. (1995),
Andrés Ruiz González (2008)) để hỗ trợ các nhà hàng hải xác định vị trí khi
tàu hành trình ngoài Đại dương.
Mặc dù với số lượng lớn các phương pháp và chương trình phần mềm
tính toán vị trí, nhưng đa số, các phương pháp đều được cải tiến từ phương
pháp hiệu đường cao vị trí, ứng dụng toán học vào đó để tìm nghiệm tối ưu,
một số phương pháp khác giải trực tiếp phương trình vòng đẳng cao bằng
biến đổi lượng giác. Do vậy, các phương pháp này đều mắc sai số phương
pháp do thay thế vòng đẳng cao bằng đường vị trí hoặc mắc những sai số do
không hiệu chỉnh ảnh hưởng của các nguyên nhân gây sai số.
Từ những phân tích trên, có thể thấy nhu cầu về một phương pháp mới
khắc phục những nhược điểm của hàng hải thiên văn cũng như chương trình
phần mềm tính toán vị trí tàu dựa trên phương pháp mới là hết sức cần thiết
đối với ngành hàng hải hiện đại. Do đó, tác giải thực hiện đề tài: “Nghiên
cứu xây dựng chương trình tính toán vị trí tàu theo phương pháp ma
trận vòng đẳng cao thiên thể” nhằm đáp ứng những yêu cầu cấp thiết để đưa
hàng hải thiên văn chính xác hơn, hiện đại hơn cả về lý thuyết lẫn thực tế.
2. Mục đích nghiên cứu của đề tài
Từ những nhược điểm của các phương pháp hàng hải thiên văn đang
được sử dụng hiện nay và xu hướng phát triển trong tương lai của phương
pháp này. Đề tài thiết lập phương pháp ma trận giải hệ phương trình vòng
đẳng cao thiên thể thay vì phương pháp hiệu đường cao vị trí của nhà hàng
hải Saint - Hilaire.
3
Ngoài ra, chương trình tính toán vị trí tàu theo phương pháp mới cũng
được xây dựng để kiểm tra độ chính xác cũng như ứng dụng thực tế trong xác
định vị trí tàu bằng thiên văn.
3. Đối tượng và phạm vi nghiên cứu
Phương trình vòng đẳng cao, vị trí tàu trong hệ tọa độ không gian đề
các vuông góc, phân tích ảnh hưởng của các yếu tố gây sai số và đưa ra
phương pháp hiệu chỉnh nhằm nâng cao độ chính xác vị trí tính toán.
Nội dung đề tài giới hạn trong phạm vi bài toán tối ưu hóa xác định vị
trí tàu bằng các thiên thể, chương trình tính toán được xây dựng với cơ sở dữ
liệu cho bài toán mặt trời không đồng thời, bài toán 2 sao, 3 sao.
4. Phương pháp nghiên cứu đề tài
Để thực hiện việc nghiên cứu đề tài, tác giả kết hợp nhiều phương pháp
nghiên cứu khoa học khác nhau như: phương pháp phân tích toán học thiết lập
vòng đẳng cao thiên thể, phương pháp chuyên gia giải bài toán vòng lặp tối
ưu, phương pháp thu thập dữ liệu tính toán tọa độ của các thiên thể.
Hơn nữa, phương pháp tư vấn từ các chuyên gia cũng được sử dụng để
nâng cao độ chính xác của vị trí tính toán.
5. Ý nghĩa khoa học và thực tiễn của đề tài
Phương pháp ma trận giải hệ phương trình vòng đẳng cao tính toán vị
trí tàu được thiết lập, đây là bước phát triển quan trọng trong nghiên cứu hoàn
thiện lý thuyết hàng hải thiên văn hiện đại, từ đó làm cơ sở nền tảng định
hướng cho những nghiên cứu sâu rộng hơn trong tương lai, kết hợp phương
pháp hàng hải thiên văn với các phương pháp hàng hải hiện đại khác, nhằm
nâng cao độ chính xác, độ tin cậy của vị trí tàu xác định.
Với kết quả thu được của đề tài, phương pháp ma trận vòng đẳng cao
thiên thể tính toán vị trí tàu có thể làm tài liệu học tập, tham khảo cho môn
4
hàng hải thiên văn trong đào tạo sinh viên chuyên ngành hàng hải, học viên
các lớp huấn luyện sỹ quan boong.
Chương trình tính toán vị trí tàu theo phương pháp được thiết kế bằng
ngôn ngữ lập trình Visual Basic có thể hỗ trợ các sỹ quan hàng hải trong xác
định vị trí tàu khi hệ thống GPS bị hạn chế hoặc khi kiểm tra độ tin cậy của
các hệ thống hàng hải hiện đại khác.
5
CHƯƠNG 1. TỔNG QUAN CÁC PHƯƠNG PHÁP XÁC ĐỊNH VỊ TRÍ
TÀU BẰNG THIÊN VĂN VÀ HẠN CHẾ CỦA CÁC PHƯƠNG PHÁP
1.1 Cơ sở lý thuyết xác định vị trí tàu bằng phương pháp thiên văn
Để xác định vị trí tàu bằng phương pháp thiên văn thì mối liên hệ giữa
vị trí người quan sát và thiên thể trên thiên cầu phải được thiết lập (hình 1.1),
từ đó xây dựng các hệ công thức liên hệ vị trí tàu với tọa độ thiên thể tại thời
điểm quan sát. Giả sử vị trí người quan sát trên địa cầu là M(φ, λ), đài thiên
văn Greenwich là G.
Xây dựng thiên cầu có tâm trùng với tâm địa cầu, bán kính bất kỳ,
Chiếu M lên thiên cầu nhận được thiên đỉnh ZM và thiên kinh tuyến thượng
PNZMPS, tương tự với thiên kinh tuyến thượng PNZGPS của đài thiên văn
Greenwich. Thiên kinh tuyến PNCPS chứa thiên thể C.
1.1.1 Mối liên hệ giữa vị trí người quan sát và thiên đỉnh trên thiên cầu
Theo hình vẽ nhận thấy: o oEE ee và
MZ E Me , thay vị trí địa lý và
tọa độ xích đạo của thiên đỉnh người quan sát vào các hệ thức trên thu được:
* *MZM
LM Gt t
MZM
LM Gt t
(1.1) hoặc
Vị trí người quan sát trên địa cầu
Hình 1.1. Vị trí người quan sát trên thiên cầu
Thiên cầu
Địa cầu EC E Eo
C
ZG
eeo
G M
ZM
PN
PS
δZM
*Lt
*Gt
Thiên đỉnh người quan sát
6
Hệ thức (1.1) liên hệ vị trí người quan sát và hình chiếu của nó trên
thiên cầu. Do trái đất quay theo chiều từ W sang E nên thiên đỉnh ZM sẽ vạch
trên thiên cầu một quỹ đạo hình tròn theo chiều ngược lại - trường hợp vĩ độ
người quan sát φM không đổi, nếu φM thay đổi thì quỹ đạo chuyển động của
ZM sẽ phức tạp hơn nhiều.
Vậy khi xác định vị trí thiên đỉnh, thời điểm quan sát thiên thể phải
được ghi lại làm cơ sở xác định góc giời thế giới của điểm xuân phân hoặc
góc giờ thế giới của thiên thể. Hơn nữa, nếu xác định được vị trí thiên đỉnh
kết hợp với hệ thức liên hệ sẽ xác định được tọa độ địa dư của người quan sát
trên địa cầu tại thời điểm quan sát thiên thể.
1.1.2 Cơ sở lý thuyết xác định vị trí thiên đỉnh trên thiên cầu
Xác định vị trí tàu là xác định 2 thông số vĩ độ φ và kinh độ λ như vậy
cần ít nhất 2 phương trình chứa 2 tham số này: U1 = f(φ, λ) và U2 = g(φ, λ). Để
có được hệ phương trình, phải thiết lập mối liên hệ giữa thiên đỉnh người
quan sát và thiên thể trên thiên cầu, ngoài ra các thiên thể phải được quan sát
một cách đồng thời hoặc nhiều lần khác nhau đối với một thiên thể.
Mối liên hệ giữa thiên đỉnh người quan sát và thiên thể có thể được xây
dựng dựa trên các tam giác thiên văn, xét 2 tam giác thiên văn ZMPNC1 và
ZMPNC2 áp dụng công thức hàm số cosin với các cạnh:
sin = sin .sin + cos .cos .cos( )
sin = sin .sin + cos .cos .cos( )1
2
E1 1 1 G W
E2 2 2 G W
h φ δ φ δ t ± λ
h φ δ φ δ t ± λ
Với hệ (1.2), sử dụng phương pháp biến đổi trực tiếp nếu số thiên thể
quan sát là 2, nếu số thiên thể quan sát nhiều hơn 2 có thể áp dụng phương
pháp bình phương nhỏ nhất để tìm nghiệm tối ưu, trường hợp chỉ có 1 thiên
thể được quan sát thì chỉ xác định được 1 trong 2 tham số vị trí dựa vào tham
số còn lại đã biết.
(1.2)
7
1.1.2.1 Phương pháp giải tích
Phương pháp giải tích thuần túy: sử dụng thay thế ẩn số hoặc đặt
phương trình trung gian, tiến hành khử 1 trong 2 ẩn số của hệ phương trình từ
đó rút ra 1 nghiệm và thế vào tìm nghiệm còn lại.
Phương pháp giải tích gần đúng: sử dụng công thức chuỗi Taylo phân
tích hàm số phức tạp trên về dạng vô hạn phần tử sau đó lấy đến số hạng bất
kỳ tùy thuộc vào độ chính xác yêu cầu.
Tuy nhiên, hệ phương trình trên bao gồm các siêu phương trình phức
tạp việc giải chúng vô cùng khó khăn, do đó trong Hàng hải thiên văn chỉ áp
dụng phương pháp giải tích trong những trường hợp đặc biệt như:
Xác định riêng vĩ độ : Nếu thiên thể qua thiên kinh tuyến thượng người
quan sát thì h = H, tL= 0 phương trình liên hệ có dạng :
sinH = cos(900-H) = cos(φ – δ)
=> φ = 900- H + δ (1.3)
Tại thời điểm thiên thể đi qua thiên kinh tuyến thượng, đo độ cao thiên
thể đồng thời ghi lại giờ thời kế TTK tính toán xích vĩ δ của thiên thể sau đó
thay vào công thức (1.3) xác định φ
Xác định riêng kinh độ: Tại thời điểm đo độ cao thiên thể ghi lại giờ
thời kế TTK tính toán giá trị tọa độ của thiên thể δ, tG thay vào phương trình
(1.4)
sinh = sinφ.sinδ + cosφ.cosδ.cos(tG ± λ)
=> cos(tG ± λ) = (sinh - sinφ.sinδ)/cosφ.cosδ (1.4)
=> λ = arcos[(sinh - sinφ.sinδ)/cosφ.cosδ] - tG (nếu λE)
= tG - arcos[(sinh - sinφ.sinδ)/cosφ.cosδ] (nếu λW)
1.1.2.2 Phương pháp đồ giải
8
Quan sát độ cao 2 thiên thể C1, C2 được h1, h2, các đỉnh cự Z1 = 900 – h1
và Z2 = 900 – h2. Trên thiên cầu, từ 2 vị trí C1, C2 dựng 2 cung tròn có tâm tại
vị trí 2 thiên thể và bán kính là Z1, Z2 giao điểm của hai cung tròn cho vị trí
thiên đỉnh người quan sát (hình 1.2).
Theo lý thuyết toán học, các cung tròn này chính là quỹ tích chứa thiên
đỉnh người quan sát cùng nhìn thấy thiên thể độ cao h tại thời điểm quan sát,
do đó các cung tròn này chính là các đường đẳng trị của những thiên đỉnh
người quan sát còn φ và λ là những giá trị thay đổi.
Tuy nhiên, do độ cong của quả cầu rất lớn dẫn đến khoảng cách trên hải
đồ và trên quả cầu là sai lệch nhau nhiều, vị trí xác định có độ chính xác thấp,
phương pháp thực hiện kém tin cậy.
1.2 Các phương pháp xác định vị trí tàu bằng thiên văn từ trước đến nay
Để xác định vị trí tàu, phải có ít nhất 2 đường quỹ tích chứa vị trí, trước
khi nghiên cứu các phương pháp xác định vị trí tàu bằng thiên văn, những
khái niệm về đường quỹ tích chứa vị trí tàu được đưa ra
1.2.1 Khái niệm vòng đẳng cao thiên thể, cực chiếu sáng đường cao vị trí và
phương trình mô tả vòng đẳng cao, đường cao vị trí
Hình 1.2. Đồ giải 2 vòng đẳng cao xác định vị trí trên thiên cầu
. C2
C1
ZM
PN
PS
Cung tròn chứa vị trí . Vị trí tàu
Thiên cầu
Thiên thể
9
1.2.1.1 Vòng đẳng cao thiên thể
Tại thời điểm nhất định, người quan sát ở vị trí M trên trái đất, đo độ
cao h của thiên thể C, đỉnh cự Z = 900- h. Do thiên thể C ở xa vô cùng nên
các tia sáng từ C đến trái đất sẽ song song với nhau, vậy góc Z hợp bởi đường
thẳng đứng qua vị trí người quan sát trên bề mặt trái đất và tia tới từ thiên thể
C cũng sẽ bằng góc Z ở tâm thiên cầu.
Dựng một mặt nón quanh trục OC với đường sinh là đường thẳng đứng
qua vị trí người quan sát, mặt nón này sẽ cắt bề mặt trái đất theo một đường
tròn, đường tròn đó được gọi là vòng đẳng cao. Vậy, vòng đẳng cao là quỹ
tích của những điểm trên bề mặt trái đất hoặc thiên cầu, theo đó vào thời điểm
quan sát sẽ thấy thiên thể trên cùng một độ cao. Phương trình vòng đẳng cao
thiên thể được xây dựng trên công thức cos cạnh (900 – h) của tam giác thiên
văn PNZMC (hình 1.3):
cos(900 – h) = cos(900 – ).cos(900 – ) + sin(900 –).sin(900 – ). costL
=> sinh = sin.sin + cos.cos.costL (1.5)
1.2.1.2 Cực chiếu sáng thiên thể
Cực chiếu sáng a là hình chiếu của thiên thể xuống địa cầu hoặc xuống
hải đồ. Trên thiên cầu toạ độ thiên thể là C(, tG) hình chiếu của nó lên hải đồ
tL
C
ZM
900-
900-h
A
900-
PN
Hình 1.3. Tam giác thiên văn
10
được xác định bằng toạ độ địa dư (a , a), do đó a = và a= tG. Như vậy toạ
độ của cực chiếu sáng và bán kính Z = 900 - h là những thông số để xác định
vòng đẳng cao trên địa cầu. Tuy nhiên, trong thực tế trái đất không phải là hình
cầu mà là một hình phức tạp nên hình chiếu vòng đẳng cao trên trái đất không
phải đường tròn mà là một đường cong phức tạp.
1.2.1.3 Đường cao vị trí
Việc đồ giải vòng đẳng cao thiên thể trên hải đồ rất phức tạp đặc biệt
với những vòng đẳng cao có độ biến dạng lớn. Qua nghiên cứu sự biến dạng
của hình chiếu vòng đẳng cao trên hải đồ Mercator người ta thấy một phần
nhỏ hình chiếu vòng đẳng cao có dạng gần giống đoạn đường thẳng nghĩa là
với khoảng cách ngắn trên thực địa hay hải đồ có thể dùng một đoạn đường
thẳng tiếp xúc với đoạn đường cong của vòng đẳng cao để thay thế cho vòng
đẳng cao. Trong hàng hải, người ta chọn đoạn thẳng tiếp tuyến với đường
cong gần vị trí dự đoán MC để thay thế. Vậy, đường vị trí là một đoạn thẳng
thay thế cho một đoạn đường cong của vòng đẳng cao, tiếp xúc với đoạn
đường cong đó tại điểm gần với vị trí dự đoán của tàu. Phương trình đường
cao vị trí thiết lập từ phương trình của vòng đẳng cao:
sinh = sin.sin + cos.cos.costL
=> h = arcsin(sin.sin + cos.cos.costL) (1.6)
Trong đó h là độ cao thiên thể, nếu đo tại vị trí thực tế Mo(o,o) sẽ thu
được độ cao thật hS, tại thời điểm quan sát cũng xác định độ cao thiên thể tại
vị trí dự đoán Mc(c,c) là hC. Thực tế vị trí dự đoán MC và vị trí thực tế Mo
không trùng nhau nên độ cao thực hS sẽ khác độ cao tính toán hC, tuy nhiên sự
sai khác này không lớn và được ký hiệu là h. Để thiết lập phương trình
đường vị trí, phân tích thành chuỗi với hàm độ cao thiên thể (1.5) hoặc công
thức vi phân với hàm số.
11
. .CC
h hdh d d
=> . .CC
h hh
(1.7)
Phương trình (1.7) là đường thẳng tiếp xúc với đoạn đường cong của
vòng đẳng cao gần vị trí dự đoán MC
Tính C
h
: vi phân phương trình vòng đẳng cao theo h và
cosh.h = cos.sin. - sin.cos.costL. (1.8)
=> (cos .sin sin .cos .cos )cosh
L
C
th
(1.9)
Mặt khác, từ tam giác thiên văn áp dụng công thức 5 yếu tố liên tiếp
sin(900 - h).cosA = sin(900 - ).cos(900 - ) - cos(900 - ).sin(900 -).costL
=> cosA.cosh = cos.sin - sin.cos.costL
=> (cos .sin sin .cos .cos )coscosh
LtA
=> C
h
= cosAc (1.10)
Tính C
h
: vi phân phương trình vòng đẳng cao theo h và tL
cosh.h = - cos.cos.sintL.tL cos .cos .sincosh
L
L
tht
(1.11)
Hơn nữa, theo hệ thức sin trong tam giác thiên văn
sinA/cos=sintL/cosh
=> h/tL = - cos.sinA => os .sin CC
h c A
(1.12)
12
Vậy phương trình đường cao vị trí có dạng :
h = cosAc. + sinAc.cosc. (1.13)
1.2.2 Các phương pháp xác định vị trí tàu bằng thiên văn từ trước đến nay
1.2.2.1. Phương pháp Sumner
Phương pháp kinh độ do nhà hàng hải người Mỹ, Thomas H Sumner đề
xuất năm 1837, bản chất là quan sát độ cao thiên thể hS, đồng thời tính toán
tọa độ , tG của thiên thể, lấy vị trí dự đoán MC(c, c), chọn Δφ = 10’ – 20’.
Sau đó tính toán tọa độ các điểm thuộc vòng đẳng cao (hình 1.4) theo công
thức 1 = c + Δφ, 2 = c – Δφ, thay các giá trị hS, 1, 2 vào phương trình
(1.14) xác định các giá trị kinh độ 1, 2.
sinh = sin.sin + cos.cos.costL (1.14)
Trên hải đồ, nối 2 điểm M1(1, 1), M1(2, 2) nhận được đường vị trí
[1, 5]. Để xác định vị trí tàu Mo phải quan sát thiên thể thứ hai, các bước tiến
hành tương tự, giao điểm của hai đường vị trí sẽ cho vị trí tàu. Phương pháp
này được áp dụng với những thiên thể ở gần vòng thẳng đứng gốc tức là (450
ABV 1350). Khi thiên thể nằm ngoài giới hạn này thì kết quả sẽ kém chính
xác.
1.2.2.2. Phương pháp Paludal
Hình 1.4. Đường vị trí xác định theo phương pháp Sumner
M2(2, 2)
M1(1, 1)
O
λ
13
Để khắc phục nhược điểm của phương pháp kinh độ khi thiên thể nằm
ở gần kinh tuyến, nhà hàng hải Paludal đã đề xướng phương pháp vĩ độ. Về
mặt nguyên lý phương pháp này giống như phương pháp kinh độ, tuy nhiên,
thay vì tính 1 và 2 phương pháp đi xác định 1, 2 dựa vào 1, 2 và phưong
trình vòng đẳng cao. Sau khi có 2 điểm M1(1, 1) và M2(2, 2) nối chúng lại
được đường cao vị trí. Tương tự, quan sát thiên thể thứ 2 cho đường vị trí thứ
2, giao điểm của 2 đường vị trí cho vị trí tàu tại thời điểm quan sát [5].
1.2.2.3. Phương pháp Akimov
Với mục đích hoàn thiện hơn cách vẽ đường cao vị trí, năm 1849 nhà
hàng hải Akimov đề xuất phương pháp phương vị. Thay vì tính toán 2 điểm
trên vòng đẳng cao như 2 phương pháp trên, Akimov xác định một điểm trên
vòng đẳng cao và góc hướng tới cực chiếu sáng.
Do vòng thẳng đứng chứa thiên thể vuông góc với đường chân trời thật,
vậy hình chiếu của vòng thẳng đứng chứa thiên thể xuống mặt phẳng chân
trời aMC sẽ vuông góc với vòng đẳng cao. Nếu tại MC kẻ tiếp tuyến với vòng
đẳng cao thì đường thẳng tiếp tuyến là đường cao vị trí và luôn luôn vuông
góc với đường phương vị. Như vậy tại thời điểm quan sát thiên thể, đồng thời
xác định , tG và C từ vị trí dự đoán MC(C, C) tính được AC, xác định k1
bằng phương pháp kinh độ khi thay C vào phương trình [1] :
I
I
a B
B’
MC
AC
k1
Hình 1.5. Đường vị trí xác định theo phương pháp Akimov
14
sinhS = sinC.sin + cosC.cos.cos(tG1). (1.15)
Sau đó dựng đường vị trí (hình 1.5) như sau: từ điểm k1(C,1) kẻ
phương vị AC tiếp theo dựng đường vuông góc với AC tại k1 được đường vị trí.
Quan sát thiên thể thứ 2, đồ giải 2 đường vị trí cho vị trí tàu.
1.2.2.4. Phương pháp hiệu độ cao Saint - Hilaire
Sử dụng các đường cao vị trí do nhà hàng hải người Pháp Saint-Hilaire
đề xuất năm 1875, phương pháp hiệu độ cao hoàn thiện hơn các phương pháp
trước đây và được sử dụng đến ngày nay (hình 1.6), giả sử thời điểm TG người
quan sát đứng tại vị trí MO(o, o) đo độ cao thiên thể, hiệu chỉnh được độ cao
thật hS và tính được đỉnh cự ZS = 900- hS. Đồng thời, lấy vị trí dự đoán MC(c,
c), từ các thông số (, tL, c) thay vào công thức hoặc tra vào bảng toán nhận
được độ cao dự đoán hC, phương vị dự đoán AC, đỉnh cự tại vị trí dự đoán ZC=
900 - hC.
Xác định cực chiếu sáng a của thiên thể trên hải đồ với toạ độ (a = ,
a= tG) lấy cực chiếu sáng a làm tâm vẽ vòng đẳng cao bán kính ZC qua vị trí
dự đoán MC; vòng đẳng cao bán kính ZS qua vị trí thật Mo cách vòng đẳng cao
ZC một đoạn h = ZC - ZS = (900- hC) - (900 - hS) = hS- hC. Rõ ràng là đường
thẳng aMC (hay là đường hướng phương vị AC) sẽ vuông góc đồng thời với
Δh
Hình 1.6. Đường vị trí xác định theo phương pháp hiệu độ cao
MC
c
AC
NT
φc
15
các vòng đẳng cao bán kính ZC và ZS. Do vậy tại giao điểm của vòng đẳng cao
ZS với phương vị AC dựng đường thẳng tiếp tuyến với vòng đẳng cao ZS thì đó
chính là đường cao vị trí và cũng vuông góc với AC.
Nội dung phương pháp hiệu đường cao xác định vị trí tàu như sau [1,
5]: tại thời điểm Tt1 quan sát độ cao thiên thể C1 được OC1 hiệu chỉnh các đại
lượng (i, s, d, 0, ht,B) cho độ cao thật hS1 của thiên thể C1. Đồng thời, ghi giờ
thời kế TTK lúc quan sát thiên thể, kết hợp với UTK được TG1 tra vào lịch thiên
văn hàng hải được tọa độ xích đạo của thiên thể C1(1, tG1). Thực hiện tương
tự, tại thời điểm Tt2 quan sát độ cao thiên thể C2 được OC2 hiệu chỉnh cho độ
cao thật hS2 của thiên thể C2, tọa độ xích đạo của thiên thể C2(2, tG2).
Lấy vị trí dự đoán MC(c, c), từ các thông số (c, 1, tG1), (c, 2, tG2)
tra vào bảng toán hoặc hệ công thức để tính toán các giá trị độ cao, phương vị
(hC1, AC1), (hC2, AC2). Sau khi có các yếu tố đường cao vị trí, đồ giải xác định
vị trí như (hình 1.7): xác định vị trí Mc(c, c), từ Mc kẻ 2 đường hướng đến
cực chiếu sáng, mỗi đường tạo với đường kinh tuyến NT các góc Ac1, Ac2, kẻ 2
đường cao vị trí vuông góc với 2 đường trên, khoảng cách từ 2 đường cao vị
trí đến vị trí dự đoán lần lượt là h1 = hS1 - hC1, h2 = hS2 - hC2. Giao điểm của
2 đường vị trí cho vị trí tàu tại thời điểm quan sát, trường hợp tốc độ tàu,
khoảng thời gian giữa 2 lần quan sát, tốc độ biến thiên độ cao thiên thể lớn,
cần thiết phải hiệu chỉnh độ cao thiên thể từ thời điểm trước về thời điểm sau,
vị trí tàu xác định theo hệ thức (1.16) hoặc (1.17):
(Δ sin Δ sin )Δsin( )
(Δ cos Δ cos )Δ)cos sin(
1 2 2 1
2 1
1 2 2 1
1 2
h . A - h . Aφ=A - A
h . A - h . Aλ =φ. A - A
(1.16)
Nếu xét đến ảnh hưởng do thời gian quan sát không đồng thời, tốc độ tàu lớn:
16
(Δ +Δ +Δ ).sin -Δ .sinΔ =)sin(
(Δ + Δ +Δ ).cos -Δ .cosΔ =)cos .sin(
1 t Z 2 2 1
2 1
1 t Z 2 2 1
1 2
h h h A h AφA - A
h h h A h Aλφ A - A
(1.17)
Vị trí xác định MO(o ;o) : ΔΔ
o C
o C
φ = φ + φλ = λ + λ
1.2.2.5. Phương pháp tính toán vị trí tàu bằng quan sát 1 thiên thể
Phương pháp được đề xuất bởi Edward J Willis [9]. Theo đó, sỹ quan
hàng hải xác định độ cao của 1 thiên thể ở 3 thời điểm khác nhau, vị trí tàu xác
định tại thời điểm thứ 2, nội dung phương pháp như sau: tại các thời điểm T1,
T2, T3 đo độ cao tới thiên thể C, sau khi hiệu chỉnh thu được các giá trị h1, h2,
h3. Tính Δh = h3 – h1, ΔT = T3 – T1, đặt: sinN = Δh/ΔT. Vị trí tàu tại thời điểm
T2 được tính theo hệ thức (1.18):
vĩ độ : 12
sinsin cos .[ sin ( )]cos
dN hN
kinh độ : sin cossincos cos
2L
N. ht =δ. φ
(1.18)
1.2.2.6. Phương pháp tính toán vị trí theo quy tắc bình phương nhỏ nhất
Theo phương pháp, vị trí xác định là vị trí xác suất nhất, tức là chịu ảnh
hưởng nhỏ nhất của sai số ngẫu nhiên, ngoài ra sỹ quan hàng hải không phải
đồ giải các đường cao vị trí như phương pháp truyền thống, hệ phương trình
đường cao vị trí [2, 10] :
1 1 1
2 2 2
Δ .cos .sin.cos .sin
............... ............. ....cos .si
...... .....nn n n
φ A w A hφ A w A h
φ A w A h
(1.19)
17
Nghiệm của bài toán thỏa mãn điều kiện tổng bình phương sai số - tổng
bình phương khoảng cách từ vị trí tính toán đến các đường vị trí là nhỏ nhất:
2
1( .cos .sin )
n
i i ii
S h A w A min (1.20)
S đạt giá trị nhỏ nhất khi:
=>
0
0
wS
S
=>
1
1
2.sin .( .cos ) 0
2.cos .( .cos ) 0
n
i i i iin
i i i ii
A h A w.sinA
A h A w.sinA
(1.21)
=>
n n n2
i i i i ii=1 i=1 i=1
n n n2
i i i 1 ii=1 i=1 i=1
.cos . sin
os sin .cos cos
sin + . sin ΔΔ =Δ . Δ . + Δ . ==>
Δ . + Δ . =c + . ΔΔ =Δ .
A A A
A A A A
φ A hw φ B w C Eφ A w B Dφ hw
(1.22)
-1
Δ Δ 1=> . = => = . = .Δ Δ ( )2
B C E φ E B -C EB CA B w D w D -A B DB - A.CA B
(1.23)
=> Δ
Δ ( )1= . =>Δ ( ) Δ
( )
2
2
2
B.E - C.Dφ =φ B.E - C.D B - A.Cw B.D - A.E B.D - A.EB - A.C w =
B - A.C
(1.24)
Vị trí tàu được xác định theo hệ thức (1.25) :
2
2
. .( . )
. .( . ).cos
o C
o Cc
B E C DB A C
B D A EB A C
(1.25)
1.2.2.7 Phương pháp giải hệ phương trình đẳng cao dạng lượng giác cầu
Phương pháp do nhóm tác giả Chih- Li-Chen, Tien-Pen-Hsu, Jiang-
Ren-Chang đề xuất [6], trong đó phương trình vòng đẳng cao được giải bằng
cách biến đổi và đặt các hệ số, nội dung phương pháp được trình bày như sau
18
quan sát độ cao 2 thiên thể, hệ phương trình vòng đẳng cao thu được
1 1 1
2 2 2
sin sin .sin os . os .cossin sin .sin os . os .cos
1 L
2 L
h φ c c th φ c c t
(1.26)
từ 1 trong 2 phương trình trên chia cho sinδ:
sin .cossinsin tan
Lh cos t (1.27)
Đặt : costantan
Lt
thay vào phương trình trên nhận được :
sin .sin( )sinh cos
(1.28)
=>
2 1
1 2 1 2 1 2
1 1 2 2
1 2 1 2 1 2
(sin .sin sin .sin )osos .sin .cos os .sin .cosos .sin .cos os .sin .cossinos .sin .cos os .sin .cos
1 2
L L
2 L 1 L
L L
h hcc t c tc h t c h tc t c t
(1.29)
Do : 2 2sin os 1c (1.30)
thay hệ thức (1.26) vào (1.28) nhận được :
21 2 1 2.cos .cos . .cos .cos L L L LA t B t C t D t E (1.31)
trong đó :
1 2 2 1
1 2 2 1
2 1
= cos .(sin - sin ), = cos .(sin - sin ) = cos .(sin + sin ), = cos .(sin + sin ) = sin .sin sin .sin
2 1
2 1
1 2
A h B hC h D hE h h
(1.32)
Mặt khác : HA12 = tL1 + tL2 => tL1 = tL2 - HA12 (1.33)
= > costL1 = cosHA12.costL2 + sinHA12.sintL2
= p.costL2 + q.sintL2 (1.34)
19
Thay (1.30) vào (1.29) nhận được :
[(A.p – B).costL2 + A.q.sintL2].[(C.p – D).costL2 + C.q.sintL2] = E2 (1.35)
Đặt :
R = ± [(A.p – B)2 + (A.q)2]1/2, sinα = [(A.p – B)/R], cosα = (A.q/R)
tanα = [(A.p – B)/A.q], (1.36)
S = ± [(C.p – D)2 + (C.q)2]1/2, sinγ = [(C.p – D)/S], cosγ = (C.q/S)
tanγ = [(C.p – D)/ C.q]. (1.37)
Chia hai vế của (1.31) cho R.S nhận được :
sin(tL2 + α).sin(tL2 + γ) = (E2/R.S) (1.38)
=> cos(2.tL2 + α + γ) = cos(α - γ) – 2.(E2/R.S) (1.39)
Thứ tự các bước tính toán theo phương pháp như sau :
Bước 1: tính các hệ số A, B, C, D, E, p, q, R, S từ các phương trình (1.32),
(1.33), (1.34), (1.35), (1.36), (1.37).
Bước 2: tính các hệ số α, γ từ các phương trình (1.36), (1.37)
Bước 3: tính các giá trị tL2, tL1 dựa vào phương trình (1.39) từ đó xác định λ
Bước 4 : tính toán giá trị từ các phương trình (1.26), (1.27), (1.28).
Trên đây là các phương pháp xác định vị trí tàu bằng thiên văn từ
những năm 1837 đến nay, các phương pháp ra đời sau khắc phục nhiều nhược
điểm của phương pháp trước. Tuy nhiên, cho đến nay thì chưa có một phương
pháp nào thực sự ưu việt khắc phục tất cả những nhược điểm của hàng hải
thiên văn.
1.3 Độ chính xác của các phương pháp xác định vị trí tàu bằng quan sát
thiên văn từ trước đến nay
Như đã phân tích ở trên, các phương pháp Sumner, Paludal, Akimov,
Saint Hilaire đều là những phương pháp gần đúng vì chúng sử dụng các
20
đường cao vị trí thay thế vòng đẳng cao để xác định vị trí tàu. Mặt khác, khi
tiến hành đồ giải đường cao vị trí trên hải đồ Mecator, sai số do việc thao tác
còn ảnh hưởng đến độ chính xác của phương pháp. Dưới đây, đề tài phân tích
đặc điểm về sai số cũng như độ chính xác của các phương pháp thiên văn hiện
nay để thấy được những hạn chế của chúng.
Đối với phương pháp Sumner hay Paludal, nếu các đại lượng Δφ; Δλ
được chọn quá lớn và độ cong của vòng đẳng cao cũng lớn thì độ chính xác
của vị trí nhận được theo các phương pháp này sẽ thấp. Mặt khác, phương vị
thiên thể cũng ảnh hưởng đến độ chính xác của 2 phương pháp xác định trên,
vị trí tàu xác định sẽ không được hiệu chỉnh các yếu tố gây ra sai số như: quan
sát thiên thể không đồng thời, tốc độ tàu quá lớn, sự chuyển động ngày đêm
của địa cầu…vv. Từ những lý luận trên có thể thấy 2 phương pháp Sumner và
Paludal có độ chính xác thấp, vị trí xác định kém tin cậy. Với các nhược điểm
trên, ngày nay 2 phương pháp này chủ yếu được đề cập nhằm mục đích tham
khảo trong các tài liệu hàng hải thiên văn cổ điển.
Với 2 phương pháp của Akimov và Saint – Hilaire, nguyên nhân gây
sai số phương pháp có thể kể đến như: sai số do thay thế đường cong của
vòng đẳng cao bằng đường thẳng, sai số trong phương vị thiên thể AC, sai số
trong khi đặt khoảng cách ∆h trên đường MCa. Do hình chiếu của vòng đẳng
cao trên hải đồ Mecator là 1 đường cong phức tạp, việc thao tác đồ giải không
dễ dàng nên người ta thay thế vòng đẳng cao thiên thể bằng 1 đường thẳng
gần với vị trí dự đoán. Đây là nguyên nhân chính gây ra sai số của phương
pháp.
Sai số do vạch đường phương vị là đường thẳng, thực tế đường này là 1
đường cung vòng lớn, tuy nhiên do hình chiếu của nó xuống hải đồ Mecator
là 1 đường cong và việc đồ giải đường cong này rất khó khăn nên người ta
cũng thay thế đường cong này bằng một đường thẳng.
21
Mặt khác, khi đặt khoảng cách ∆h trên một đường thẳng nó sẽ khác với
khi được đặt trên đường cong. Thực tế, đoạn ∆h là khoảng cách giữa MC và a
theo đường cong. Do vậy, sai số do đặt khoảng cách ∆h cũng ảnh hưởng đáng
kể đến độ chính xác của phương pháp. Từ những nguyên nhân trên, có thể
thấy vị trí tàu xác định có độ tin cậy không cao. Phương pháp xác định vị trí
tàu sử dụng quy tắc bình phương nhỏ nhất thực tế là xác định vị trí tàu bằng
các đường cao vị trí. Vị trí tàu xác định thỏa mãn điều kiện tổng bình phương
khoảng cách đến các đường cao vị trí là nhỏ nhất, nói cách khác vị trí xác
định chịu ảnh hưởng ít nhất của sai số ngẫu nhiên. Ưu điểm khi sử dụng
phương pháp này là sỹ quan hàng hải không cần đồ giải các đường cao vị trí,
đặc biệt là không cần thao tác các đường đối trung tuyến trong tam giác sai
số. Tuy nhiên, vị trí tàu xác định theo phương pháp cũng không tính đến các
yếu tố gây sai số một cách triệt để.
Phương pháp tính toán vị trí tàu bằng hệ phương trình vòng đẳng cao là
một phương pháp mới, sử dụng phép biến đổi các công thức lượng giác. Khi
sử dụng các phép biến đổi như vậy, vị trí tàu mang sai số từ các ẩn phụ θ, α,
β. Mặt khác, cũng giống với các phương pháp trước đây, Phương pháp này
cũng không đề cập đến những yếu tố gây sai số cho vị trí xác định như: quan
sát thiên thể không đồng thời, tốc độ tàu, tốc độ biến thiên độ cao thiên thể.
Từ những phân tích về độ chính xác của các phương pháp xác định vị trí bằng
thiên văn hiện nay, có thể thấy rằng chúng đều có những ưu nhược điểm nhất
định và đến nay vẫn chưa có 1 phương pháp nào thực sự ưu việt về mặt lý
thuyết có thể loại trừ hết sai số.
1.4 Xu hướng phát triển hàng hải thiên văn trong tương lai
Hàng hải thiên văn là 1 môn khoa học cổ điển trong ngành hàng hải,
trước đây để có được vị trí tàu xác định, các nhà hàng hải phải mất rất nhiều
thời gian để giải 1 số lượng không nhỏ các bài toán khác nhau như: tính toán
22
thời điểm quan sát thiên thể, lựa chọn thiên thể để quan sát, xác định tọa độ
thiên thể trên thiên cầu tại thời điểm quan sát, hiệu chỉnh độ cao thực tế của
thiên thể, tra bảng xác định độ cao và phương vị thiên thể tại vị trí dự đoán….
Trong kỷ nguyên thứ 21 của loài người, hàng hải thiên văn không
những được sử dụng để dẫn đường cho tàu thuyền vượt qua các Đại dương
mà còn được nghiên cứu phát triển và ứng dụng trong việc dẫn đường cho các
loại robot thăm dò, lấy tư liệu trên các hành tinh khác như: mặt trăng, sao
kim, sao hỏa, sao thổ…..vv. Trong nội dung đề tài, tác giả xin giới thiệu một
số thành tựu mới của hàng hải thiên văn trong thời gian gần đây, từ đó đưa ra
những nhận định, dự đoán về xu hướng phát triển trong tương lai của phương
pháp hàng hải này.
Khi được ứng dụng để dẫn đường trên các hành tinh khác, người ta xây
dựng thiên cầu như đối với trái đất [7], tuy nhiên, các thiết bị như: quả cầu
sao, đĩa tìm sao, sextant, thời kế, lịch thiên văn không được sử dụng như đối
với phương pháp thiên văn xác định vị trí trên trái đất, thay vào đó những
thiết bị tự động sẽ được sử dụng như: thiết bị nhận dạng sao, thiết bị đo độ
nghiêng, chúi của bộ phận cảm ứng trong robot (hình 1.7) [11].
Hình 1.7. Robot thăm dò
23
Thiết bị nhận dạng sao (hình 1.8) chụp ảnh thực tế các ngôi sao tại khu
vực mà thiết bị này quan sát, những hình ảnh này sẽ được so sánh với hình
ảnh thực tế của các chòm sao đã được lưu giữ trong bộ nhớ CPU của thiết bị
nhận dạng sao, kết hợp với thiết bị đo tốc độ góc nghiêng ngang, nghiêng dọc
của bộ phận cảm ứng. Dữ liệu thu nhận từ 2 thiết bị nhận dạng sao và máy đo
độ nghiêng có thể tính toán vị trí trên hành tinh theo mô hình thuật toán
chuyển động của Euler (1.40):
'' '
x
y zv sensedx v y v
z
nn = n = R (-θ).R (- ).R (ψ).n
n
cos( )2
tan( )
z
y
x
v
a n
na
n
(1.40)
Hiện nay, khi thiết bị máy thu tín hiệu GPS trên tàu gặp sự cố hay bị
hạn chế sử dụng do nhiều nguyên khác nhau thì hệ thống hàng hải quán tính
được xem là một phương pháp hữu ích để khác phục những nhược điểm ấy,
tuy nhiên, hệ thống hàng hải quán tính cũng có nhiều nhược điểm như: sai số
Hình 1.8. Thiết bị nhận dạng sao tự động
24
thiết bị đo quán tính, sai số thiết bị xác định hướng, sai số do nhiễu ồn…….vv
Sai số tổng hợp tỷ lệ thuận với quãng đường thực hiện. Do đó việc hiệu chỉnh
các yếu tố gây sai số cho hệ thống là cần thiết để loại trừ sai số tổng hợp.
Trong tương lai, sự kết hợp 2 phương pháp hàng hải thiên văn và hàng hải
quán tính sẽ tiếp tục được nghiên cứu phát triển và ứng dụng trong dẫn đường
cho các tàu vượt Đại dương, đây được xem như sự thay thế hoàn hảo khi máy
thu tín hiệu GPS bị hư hỏng hoặc không thu được sóng tại một số khu vực
trên thế giới.
1.5 Kết luận chương 1
Trong chương này, luận văn đã trình bày chi tiết các phương pháp xác
định vị trí tàu bằng thiên văn được sử dụng từ trước đến nay, phân tích ưu
nhược điểm của từng phương pháp. Hơn nữa, đề tài cũng chỉ ra một ứng dụng
của phương pháp hàng thiên văn trong lĩnh vực khác, từ đó đưa ra những dự
đoán về xu hướng phát triển trong tương lai của phương pháp.
Với những lập luận logic trên, có thể thấy rằng việc nghiên cứu phát
triển những phương pháp mới để xác định vị trí tàu bằng thiên văn là sự vận
động tất yếu phù hợp với quy luật khách quan nhằm đáp ứng những yêu cầu
cao hơn trong tương lai.
25
CHƯƠNG 2. CƠ SỞ DỮ LIỆU VÀ NGÔN NGỮ LẬP TRÌNH SỬ
DỤNG ĐỂ XÂY DỰNG CHƯƠNG TRÌNH TÍNH TOÁN VỊ TRÍ TÀU
2.1 Các yếu tố cần thiết để giải bài toán xác định vị trí tàu bằng phương
pháp thiên văn, cơ sở dữ liệu cho chương trình tính toán
Để tính toán vị trí tàu bằng phương pháp thiên văn, phải giải các bài
toán: hiệu chỉnh độ cao thực tế của thiên thể, xác định tọa độ thiên thể tại thời
điểm quan sát, hiệu chỉnh độ cao từ thời điểm trước về thời điểm sau.
2.1.1 Hiệu chỉnh về độ cao thật của thiên thể, hệ thức tính toán, hiệu chỉnh độ
cao thiên thể thời điểm trước về thời điểm sau
2.1.1.1 Sự cần thiết phải hiệu chỉnh độ cao thiên thể
Độ cao thiên thể là số đo góc hợp bởi mặt phẳng chân trời thật và
đường thẳng nối tâm thiên cầu với tâm thiên thể [1] cũng có thể tính là số đo
cung vòng thẳng đứng giới hạn từ mặt phẳng chân trời thật đến vị trí thiên thể.
Thực tế, khi đo độ cao thiên thể bản thân Sextant bao giờ cũng có sai số dụng
cụ và sai số vạch chuẩn tác động, vậy để nhận được số đo độ cao chính xác
cần phải tính đến lượng hiệu chỉnh (i + s) của hai sai số này.
Người quan sát đứng trên địa cầu với chiều cao (e) so với mặt biển để
đo, độ cao thiên thể theo lý thuyết là góc ở tâm thiên cầu. Do vậy phải hiệu
chỉnh thêm lượng độ cao (Dip) do người quan sát đứng trên mặt địa cầu, độ
nghiêng chân trời luôn làm tăng giá trị độ cao vì vậy số hiệu chỉnh độ nghiêng
chân trời luôn âm.
Mặt khác, mật độ khí áp giảm dần theo độ cao nên môi trường chiết
suất qua từng lớp không khí cũng thay đổi, vậy tia tới từ thiên thể đến mắt
người quan sát cũng bị khúc xạ trở thành 1 đường cong liên tục, do đó người
quan sát nhìn thấy thiên thể theo phương tiếp tuyến với đường cong đó tại vị
26
trí mắt người quan sát, thiên thể từ vị trí C bị nâng tới vị trí C’ một góc gọi
là khúc xạ thiên văn. Trong điều kiện tiêu chuẩn, khí áp P = 760mmHg, nhiệt
độ tO = +10˚C khúc xạ thiên văn được gọi là khúc xạ thiên văn trung bình O.
Theo lý thuyết, độ cao thiên thể là góc tính từ tâm thiên cầu hợp bởi
đường thẳng nối tâm thiên thể với tâm thiên cầu và mặt phẳng chân trời thật,
trong các bảng toán người ta lấy tâm thiên cầu trùng với tâm trái đất. Nhưng
thực tế người quan sát lại đứng trên bề mặt trái đất để đo độ cao thiên thể do
vậy cần phải hiệu chỉnh với góc thị sai nhìn thấy hàng ngày PA (góc từ thiên
thể nhìn thấy bán kính trái đất).
Một số thiên thể có bán kính nhìn thấy lớn khi làm chập ảnh của chúng
với đường chân trời rất khó làm tiếp xúc tâm với đường chân trời, người ta
thường phải đo qua mép do vậy cần phải hiệu chỉnh một đại lượng bán kính
góc (SA) của thiên thể đối với độ cao.
Do điều kiện khí hậu , thời tiết luôn thay đổi so với điều kiện tiêu chuẩn
khi lập bảng, vì vậy cần phải hiệu chỉnh thêm một lượng sai số độ cao theo
lượng thay đổi áp suất hB, theo nhiệt độ ht. Với những nguyên nhân trên
khi đo độ cao thiên thể bằng Sextant phải hiệu chỉnh độ cao đo được để tìm ra
độ cao thật hS. hệ thức độ cao sau khi hiệu chỉnh là :
hS = OC + i + s – Dip - R + PA SA (2.1)
2.1.1.2 Hệ thức tính toán các số hiệu chỉnh độ cao thiên thể [10]
Số hiệu chỉnh sai số dụng cụ (Index erorr):
Được nhà sản xuất tính toán và cho sẵn trong hồ sơ của sextant. Sỹ
quan hàng hải phải hiệu chỉnh những sai số này, công thức tính:
I = i + s (2.2)
Số hiệu chỉnh độ nghiêng chân trời (Dip):
27
0Dip = 0 .0293. e (e tính theo m) = 00 .97. e (e tính theo ft) (2.3)
Số hiệu chỉnh do hiện tượng khúc xạ thiên văn (Refraction)
Tại nhiệt độ 100C và khí áp tiêu chuẩn 1010mb, giá trị khúc xạ thiên
văn được xác định theo hệ thức :
R0 = 00.0167/ tan(H + 7.32/(H + 4.32))
H = OC + I – Dip (2.4)
Nếu nhiệt độ và khí áp xác định, khúc xạ thiên văn được tính toán như
sau:
f = 0.28.P/(H + 273)
R = R0.f (2.5)
Nếu nhiệt độ và khí áp không xác định thì : R = R0
Số hiệu chỉnh thị sai thiên thể (Parallax):
PA = HP.cosH (2.6)
Đối với mặt trời :
HP = 00.0024
Đối với định tinh :
HP = 0
Đối với mặt trăng :
HP = UTC/60
Số hiệu chỉnh do thiên thể có bán kính lớn (Semi Diameter) :
Khi quan sát độ cao của mặt trời, mặt trăng sỹ quan hàng hải phải tính
đến sai số này :
Đối với mặt trời : SA = SD/60 (2.7)
Đối với mặt trăng : SM = 0.2724.HP
28
2.1.1.3 Hiệu chỉnh độ cao thiên thể thời điểm trước về thời điểm sau
Như đã đề cập ở chương 1, các phương pháp xác định vị trí tàu bằng
thiên văn hiện nay đều có độ tin cậy thấp, vị trí xác định kém chính xác.
Nguyên nhân là do các phương pháp trên đều mắc 2 loại sai số: sai số do thay
thế vòng đẳng cao bằng đường cao vị trí và sai số không đồng thời. Để nâng
cao độ chính xác vị trí tính toán bằng bất kỳ phương pháp nào, cần thiết phải
quy độ cao thiên thể về cùng một thời điểm, một thiên đỉnh.
Hiệu chỉnh độ cao thiên thể về cùng một thời điểm
Do trái đất chuyển động theo chiều từ tây sang đông, người quan sát sẽ
thấy thiên cầu chuyển động theo chiều ngược. Trong chuyển động nhìn thấy
hàng ngày, thiên thể luôn thay đổi tọa độ trên thiên cầu, do đó độ cao thiên
thể tại những thời điểm khác nhau sẽ khác nhau. Để nâng cao độ chính xác
của vị trí xác định, ảnh hưởng của chuyển động quay trái đất đến sự thay đổi
độ cao thiên thể phải được tính đến và hiệu chỉnh theo hệ thức (2.8), [1]:
Δh = cosφ.sinA.ΔT (2.8)
Hiệu chỉnh độ cao thiên thể về cùng một thiên đỉnh
Khi tàu chuyển động, thiên đỉnh người quan sát luôn thay đổi dẫn đến
độ cao thiên thể tại 2 thời điểm sẽ thay đổi, vị trí tính toán dựa vào số liệu
hiện tại sẽ thiếu chính xác. Vì vậy cần thiết phải hiệu chỉnh độ cao của thiên
thể quan sát trước về thời điểm quan sát thiên thể thứ 2, đặc biệt đối với
trường hợp xác định vị trí tàu bằng quan sát mặt trời không đồng thời thì số
hiệu chỉnh này là điều bắt buộc [1]:
∆h = S.cos(A – HT) (2.9)
khi tốc độ tàu và khoảng thời gian quan sát thiên thể quá lớn có thể tính đến
độ cong của trái đất :
∆h = S.cos(A1 – HT) – S.sin(A1 – HT).tg((A2 – HT)/2) (2.10)
29
2.1.2 Hệ thức tính toán tọa độ thiên thể trên thiên cầu
Tọa độ của thiên thể tại thời điểm bất kỳ được lập thành bảng trong lịch
thiên văn hàng hải. Khi giải các bài toán, sỹ quan hàng hải phải tra lịch thiên
văn với đối số là giờ thế giới, từ thông số này sẽ tính chính xác tọa độ thiên
thể tại thời điểm quan sát. Ngoài cách sử dụng Lịch thiên văn, có thể xác định
toạ độ của thiên thể dựa vào những hệ thức toán học (2.17), (2.18).
Trong chương trình tính toán vị trí tàu, tác giả nhập vào phần Module
các hệ thức tính toán trực tiếp tọa độ thiên thể tại thời điểm bất kỳ. Các hệ
thức trên được trình bày trong cuốn “A Short guide to Celestial Navigation”
của tác giả Henning Umland (xuất bản năm 2006) chi tiết xem thêm [8].
Theo đó, tọa độ của mặt trời, điểm xuân phân sẽ có sai số lớn nhất
trong các trường hợp là ± 0’6, sai số nhỏ hơn ± 0’3 trong 100 ngày được chọn
ngẫu nhiên. Hệ thức trên có thời gian áp dụng từ năm 1900 đến 2049.
2.1.2.1 Góc giờ thế giới của điểm xuân phân
Hệ số quỹ đạo của trái đất
T = 367.y – Int[1.75.(y+Int((m + 9)/12))] + Int(275.m/9) +
d + UT/24 – 730531.5 (2.11)
Góc giờ thế giới của điểm xuân phân
GHAγ = 0.9856474.T + 15.UT + 1.0046062 (2.12)
2.1.2.2 Góc giờ và xích vĩ của mặt trời
Hệ số dị thường trung bình của mặt trời
g = 0.9856003.T – 2.472 (2.13)
Kinh độ trung bình của mặt trời
LM = 0.9856474.T – 79.53938 (2.14)
Kinh độ thật của mặt trời
30
LT = LM + 1.915.sing +0.02.sin2g (2.15)
Góc giữa 2 mặt phẳng hoàng đạo và thiên xích đạo
ε = 23.439 – 4.T.10-7 (2.16)
Xích vĩ mặt trời
Dec = arcsin(sinLT.sinε) (2.17)
Góc giờ mặt trời
GHA = GHAγ – 2.arctan[(cosε.sinLT)/(cosDec + cosLT)] (2.18)
2.1.2.3 Tọa độ xích đạo loại 2 của các ngôi sao
Theo bảng 1.1, tọa độ của 57 ngôi sao trong Hàng hải được tính toán và
lấy trung bình cho năm 2010. Tuy nhiên, do hiện tượng tuế sai, chương động
của trục trái đất dẫn đến tọa độ tính toán theo bảng sau chỉ đúng trong 1
khoảng thời gian nhất định từ năm 2010 đến 2030. Xem thêm trong [8].
Tọa độ tính toán của một ngôi sao bất kỳ được xác định theo hệ thức:
SHA* = SHA(2010) + (năm tính - 2010).∆SHA
GHA* = GHAγ + SHA*
Dec* = Dec(2010) + (năm tính - 2010).∆Dec
Bảng 1.1 Tọa độ và biến thiên theo thời gian của các ngôi sao
Name SHA ∆SHA Dec ∆Dec
Acamar 315020’4 - 0’6 S40015’9 - 0’2
Achernar 335028’9 - 0’5 S57011’1 - 0’3
Acrux 173011’5 - 1’0 S63009’6 + 0’3
Adhara 255014’4 - 0’6 S28059’4 + 0’2
Aldebaran 290052’3 - 0’9 N16031’8 + 0’1
31
Alioth 166022’0 - 0’6 N55054’1 - 0’4
Alkaid 153000’1 - 0’5 N49015’5 - 0’3
Al Na’ir 27046’9 - 0’9 S46054’5 - 0’3
Alnilam 275048’8 - 0’7 S1011’8 + 0’1
Alphard 217058’2 - 0’8 S8042’4 + 0’3
Alphecca 126012’7 - 0’6 N26040’5 - 0’1
Alpheratz 357046’3 - 0’8 N29008’8 - 0’3
Altair 62010’6 - 0’7 N8053’6 + 0’2
Ankaa 353018’3 - 0’7 S42015’0 - 0’3
Antares 112029’0 - 1’ S26027’3 - 0’1
Arcturus 145057’5 - 0’7 N19007’5 - 0’3
Atria 107032’7 - 1’6 S69002’6 - 0’1
Avior 234018’9 - 0’4 S59032’9 + 0’2
Bellatrix 278034’6 - 0’8 N6021’5 - 0’1
Betelgeuse 271003’9 - 0’8 N7024’5 - 0’1
Canopus 263057’3 - 0’4 S52042’4 + 0’1
Capella 280038’1 - 1’1 N46000’6 - 0’1
Deneb 49033’4 - 0’6 N45018’8 + 0’2
Denebola 182035’7 - 0’6 N14030’7 - 0’4
Diphda 348058’5 - 0’7 S17055’8 - 0’3
Dubhe 193053’7 - 0’8 N61041’7 - 0’3
32
Elnath 278015’7 - 0’9 N28037’0 0
Eltanin 90047’1 - 0’4 N51028’9 0
Enif 33049’7 - 0’8 N9055’2 + 0’3
Fomalhaut 15026’8 - 0’8 S29034’0 - 0’3
Gacrux 172003’1 - 0’9 S57010’4 + 0’4
Gienah 175054’4 - 0’8 S17036’2 + 0’3
Hadar 148050’8 - 1’2 S60025’4 + 0’3
Hamal 328003’8 - 0’9 N23030’7 + 0’2
Kaus Aust 83046’9 - 1’ S34022’7 - 0’1
Kochab 137018’6 + 0’2 N74006’5 - 0’2
Markab 13041’0 - 0’8 N15015’6 + 0’3
Menkar 314017’8 - 0’8 N4007’8 + 0’2
Menkent 148010’0 - 0’9 S36025’4 + 0’2
Miaplacidus 221039’9 - 0’3 S69045’9 + 0’3
Mirfak 308044’2 - 1’1 N49054’0 + 0’2
Nunki 76001’2 - 0’9 S26017’0 - 0’1
Peacock 53023’0 - 1’1 S56041’9 - 0’2
Pollux 243030’5 - 0’9 N28000’1 - 0’2
Procyon 245002’1 - 0’8 N5011’8 - 0’2
Rasalhague 96008’5 - 0’7 N12032’9 0
Regulus 207045’7 - 0’8 N11054’8 - 0’3
33
Rigel 281014’4 - 0’7 S8011’5 0
Rigil Kent 139054’5 - 1’1 S60052’6 + 0’3
Sabik 102015’1 - 0’9 S15044’3 + 0’1
Schedar 349044’0 - 1’ N56035’6 + 0’4
Shaula 96025’0 - 1’1 S37006’6 0
Sirius 258035’8 - 0’7 S16044’0 + 0’2
Spica 158033’4 - 0’8 S11013’1 + 0’3
Suhail 222054’9 - 1’5 S43028’8 + 0’3
Vega 80040’5 - 0’5 N38047’3 + 0’1
Zuben’ubi 137007’8 - 0’9 S16005’2 + 0’2
2.2 Ngôn ngữ lập trình sử dụng để xây dựng chương trình
Trong tin học, để xây dựng 1 chương trình xử lý, có thể sử dụng nhiều
ngôn ngữ lập trình khác nhau như Pascal, Delphi, Dotnet, Foxtran, Matlab,
Visual basic, C, C ++…vv. Việc chọn lựa ngôn ngữ lập trình phụ thuộc vào
sự chuyên nghiệp của lập trình viên đối với ngôn ngữ đó cũng như là đáp ứng
yêu cầu xử lý bài toán một cách hoàn thiện.
Với đề tài, tác giả sử dụng ngôn ngữ lập trình Visual basic do hãng
Microsoft sản xuất phiên bản 6.0. Trong phần này, đề tài giới thiệu một số
kiến thức cơ bản của ngôn ngữ lập trình Visual basic 6.0 nhằm tạo tiền đề cho
việc thiết lập phần mã lệnh của chương trình tính toán trong chương 3, chi tiết
xem thêm trong [4].
2.2.1 Cài đặt Visual Basic 6.0
Bước 1: Bỏ đĩa compact vào CD drive.
34
Bước 2: Nếu menu không tự động hiện lên thì chạy chương trình Setup có sẵn
tong folder gốc trên đĩa compact.
Bước 3: Chọn nút Custom trong hộp thoại Microsoft Visual Basic 6.0 Setup.
Bước 4: Chọn hay xóa các thành phần bằng cách check hay uncheck các hộp
danh sách Options của Custom. Thực hiện các chỉ dẫn cài đặt trên màn hình
2.2.2 Các điều khiển của Visual Basic
Form: là nơi thiết kế chương trình Windows. Trên Form, lập trình viên sẽ vẽ
cũng như đặt các khuôn mục để người sử dụng chương trình sẽ thấy và thao
tác. Nếu sử dụng trình xử lý từ trên Windows, cửa sổ sẽ chứa tài liệu vốn
đang được hiệu chỉnh.
Toolbox : Cửa sổ này chứa các thanh công cụ, những công cụ trên còn được
gọi là các điều khiển. Dưới đây là 1 số điều khiển cơ bản được dùng trong
chương trình:
TextBox: là điều khiển được dùng nhiều nhất để hiển thị các ô trống cho
phép người dùng nhập dữ liệu. Để quy định đặc tính sử dụng cho Textbox
Hình 2.1 Cửa sổ làm việc của Visual Basic
35
người dùng vào phần Property bên góc phải phía dưới màn hình để điều chỉnh
cho phù hợp với mục đích sử dụng.
CommandButton: là điều khiển dùng vào việc xử lý một sự kiện khi
người dùng click lên nút lệnh. Sự kiện ta dùng thường nhất cho
CommanButton là Click. Muốn thay đổi tên của nút điều khiển này vào thư
mục caption trong Property để thực hiện.
Label: thường được gọi là nhãn, mục đích chính của nhãn là để hiển thị
không cho người dùng thay đổi như Textbox. Có thể dùng Property Font,
ForeColor và Backcolor để làm cho nó đẹp mắt.
CheckBox: là điều khiển dùng để người sử dụng xác nhận có đặc tính
nào một cách nhanh chóng. Đặc tính giá trị của CheckBox có thể là Checked.
Người dùng vào phần Property để định dạng đặc tính cho điều khiển.
OptionButton: là điều khiển có hình tròn với một chấm ở giữa, thay gì
hình vuông với một gạch ở giữa như CheckBox. OptionButton luôn luôn
được tập hợp thành một nhóm.
Combobox: là điều khiển cho phép người lập trình nhập dự liệu vào
trước, loại điều khiển này sẽ tiết kiệm không gian màn hình bằng cách chỉ
chiếm 1 dòng trên mẫu biểu cho đến khi người dùng mở danh sách để hiển thị
các mục còn lại trong đó điều khiển combobox chia làm 2 loại: combobox xổ
xuống và combobox đơn giản. Để xem danh sách, nhấn mũi tên xuống cuối
hộp combobox sẽ thấy danh sách hiển thị như minh họa. Nhấn lại mũi tên
xuống 1 lần nữa, danh sách sẽ cuộn trở lại và xóa sạch sự lộn xộn của dữ liệu
phụ trên màn hình.
Listbox: là điều khiển gần giống với combobox. Tuy nhiên, điều khiển
cho phép dữ liệu hiển thị 1 loạt trên màn hình khác biệt so với dữ liệu hiển
thị trên 1 dòng của điều khiển combobox.
36
Ngoài các điều khiển hiển thị trên Toolbox, Visual Basic còn có nhiều
loại khác, muốn sử dụng thêm các điều khiển khác thì nhấn Ctr + T người
dùng sẽ có nhiều lựa chọn mới về các điều khiển.
Project: Chương trình Visual Basic trên Windows bao gồm nhiều kiểu tập tin
khác nhau phục vụ mọi công việc trong trình ứng dụng chạy độc lập, cửa sổ
Project bao gồm danh sách các tập tin được sử dụng trong trình ứng dụng hiện
hành, cửa sổ này chỉ mô tả những tập tin chứa trên đĩa.
Properties: là tập hợp đặc tính của các điều khiển mà người dùng có thể ấn
định lúc thiết kế hay chạy thử. Có nhiều Properties về diện mạo, nếu thay
đổi lúc thiết kế sẽ thấy kết quả hiện ra lập tức.
Code : Là phần mã lệnh của chương trình, khi người dùng chạy chương
trình, Visual Basic và máy tính sẽ biên dịch mã nguồn đó và thi hành lệnh
trong mã nguồn để xử lý thông tin thông đầu vào.
2.2.3 Biến số, hằng số và các kiểu dữ liệu trong Visual Basic
2.2.3.1 Biến số
Biến được dùng để lưu tạm thời các giá trị trong quá trình tính toán xử
lý chương trình. Khi xử lý một chương trình, luôn cần thiết phải lưu trữ một
giá trị nào đó để tính toán, so sánh chúng với nhau và thực hiện các xử lý
khác nhau dựa vào kết quả so sánh hay tính toán chúng. Visual Basic hay các
ngôn ngữ lập trình khác đều dùng các biến chương trình để lưu giữ các giá trị,
để khai báo biến số ta dùng lệnh Dim:
Dim <Tên biến > [As<kiểu dữ liệu>]
Biến khai báo trong thủ tục chỉ tồn tại khi thủ tục thi hành. Nó sẽ biến
mất khi thủ tục chấm dứt. Giá trị của biến trong thủ tục là cục bộ đối với thủ
tục đó, nghĩa là ta không thể truy nhập biến từ bên ngoài thủ tục. Nhờ đó, ta
có thể dùng trùng tên biến cục bộ trong những thủ tục khác nhau.
37
Kiểu dữ liệu trong khai báo Dim có thể là những kiểu cơ bản như
Integer, String hoặc Currency. Ta cũng có thể dùng đối tượng của VB như
Object, Form1, TextBox hoặc của các ứng dụng khác.
Khai báo biến trong phần Declarations của một module nghĩa là biến
đó tồn tại và có tầm hoạt động trong module đó. Khai báo biến với từ khoá
Public nghĩa là biến đó tồn tại và có tầm hoạt động của toàn ứng dụng.
Khai báo biến cục bộ với từ khoá Static nghĩa là mặc dầu biến đó biến
mất khi thủ tục chấm dứt, nhưng giá trị của nó vẫn được giữ lại để tiếp tục
hoạt động khi thủ tục được gọi trong lần sau.
Khai báo ngầm: nghĩa là ta không cần khai báo tường minh trước khi
sử dụng biến, mặc dù cách này có vẻ thuận tiện nhưng có thể gây lỗi nếu ta
gõ nhầm tên biến.
Khai báo tường minh: để tránh những rắc rối trên, nên quy định Visual
Basic phải báo lỗi khi gặp một tên biến không khai báo với dòng lệnh: Option
Explicit trong phần Declarations của module. Một cách khác, từ menu Tools,
chọn Options, chọn tab Editor và đánh dấu vào tuỳ chọn Require Variable
Declaration, Visual Basic tự động chèn dòng lệnh Option Explicit vào một
module mới, nhưng không phải là những module đã được tạo. Do đó, đối với
các module này, ta phải thêm dòng lệnh bằng tay. Option Explicit chỉ hoạt
động trên từng module. Vì vậy, ta phải thêm dòng này vào mỗi module của
biểu mẫu, module chuẩn, hay module lớp.
Khai báo biến Static: để khai báo tất cả các biến cục bộ trong một thủ
tục là Static, ta đặt từ khoá Static vào tên thủ tục đó Static Function
RunningTotal (num), Visual Basic sẽ hiểu rằng tất cả các biến khai báo trong
thủ tục này đều là Static dù cho chúng được khai báo là Private, là Dim hay
thậm chí là khai báo ngầm. Từ khoá Static có thể đặt ở đầu thủ tục Sub hoặc
Function, kể cả thủ tục xử lý sự kiện hoặc những hàm Private.
38
2.2.3.2 Hằng số
Hằng dùng để chứa những dữ liệu tạm thời nhưng không thay đổi trong
suốt thời gian chương trình hoạt động. Sử dụng hằng số làm chương trình
sáng sủa và dễ đọc nhờ những tên gợi nhớ thay vì các con số. Visual Basic
cung cấp một số hằng định nghĩa sẵn, nhưng ta có thể tự tạo ra hằng.
Có thể dùng cửa sổ Object Browser để xem danh sách các ứng dụng
hằng có sẵn của VB và VBA (Visual Basic for Application). Các ứng dụng
khác cung cấp những thư viện đối tượng, như Microsoft Excel, Microsoft
Project, hoặc các thư viện của điều khiển ActiveX cũng có hằng định nghĩa
sẵn. Khai báo hằng như sau
Public/private Const <tên hằng> [As <kiểu dữ liệu>]= <biểu thức>
Hằng cũng có tầm hoạt động tương tự biến: Hằng khai báo trong thủ
tục chỉ hoạt động trong thủ tục. Hằng khai báo trong module chỉ hoạt động
trong module. Hằng khai báo Public trong phần Declarations của module
chuẩn có tầm hoạt động trên toàn ứng dụng. Khai báo Public không thể dùng
trong module của biểu mẫu hoặc module lớp.
2.2.3.3 Kiểu dữ liệu trong Visual Basic
Các kiểu dữ liệu dùng trong VB bao gồm:
String: kiểu dữ liệu chuỗi giữ các kí tự. Ta có thể có một kí tự đơn hoặc nhiều
kí tự trong một chuỗi. Một biến giữ một chuỗi gọi là biến chuỗi. Mỗi biến
loại này có thể giữ tới 2 tỉ kí tự.
Integer: kiểu biến giữ các giá trị số nguyên từ -32768 đến 32767.
Long: kiểu biến giữ các số nguyên từ - 2147483648 đến 2147483647.
Single: kiểu biến giữ các số nguyên và số thập phân từ -3,402823E38 đến -
1,401298E-45 (các giá trị âm) và từ 1,401298E-45 đến 3,402823E38 (các giá
trị dương).
Double: kiểu biến giữ các số nguyên và số thập phân từ -1,7976931348623
39
E308 đến -4,9406564584124E-324 (các giá trị âm) và từ 4,94065645841247E
-324 đến 1,79769313486231E308 (các giá trị dương).
Currency: kiểu biến giữ các số nguyên và số thập phân, nó có thể giữ tới 15
ký số bên trái dấu thập phân và 4 ký số bên phải dấu thập phân.
Date: loại biến lưu giữ thông tin về thời gian từ 1 tháng 1 năm 100 đến 31
tháng 12 năm 9999.
Byte: kiểu biến lưu giũ các số nguyên dương từ 0 đến 255.
Boolean: kiểu biến giữ các giá trị luận lý: True hoặc False.
Variant: kiểu biến có thể giữ tất cả các dữ liệu VB khác nhau. Để kiểm soát
nội dung của dữ liệu, VB dùng kiểu Variant như là kiểu mặc định. Bất kể là
số, ngày/giờ hay chuỗi thì kiểu biến này đều có thể lưu giữ. Tuy nhiên, chỉ
trong trường hợp bắt buộc thì mới dùng kiểu biến này do Visual Basic sẽ phải
thực hiện một số chuyển đổi và vì thế chương trình có thể chạy chậm lại
2.2.4 Hàm và thủ tục trong Visual Basic
2.2.4.1 Thủ tục
Trong quá trình viết mã lệnh, đôi khi có một đoạn lệnh nào đó phải viết
đi viết lại nhiều lần giống nhau điều đó làm chương trình không tối ưu. Để
hợp lý, có thể định riêng đoạn mã lệnh này ở một chỗ nào đó trong chương
trình, đặt tên cho nó, khi cần thực hiện đoạn mã lệnh chỉ cần gọi tên của nó,
đó được gọi là thủ tục của chương trình, thủ tục không trả về giá trị
Cấu trúc của một thủ tục:
[Private | Public | Static] Sub <Tên thủ tục> (Tham số)
Các dòng lệnh
End sub
2.2.4.2 Hàm
Là một đơn thể trong chương trình, tính năng giống với như thủ tục
nhưng khác ở chỗ là sau khi thực hiện phần lệnh, hàm sẽ trả về một giá trị kết
40
quả, ngoài ra hàm còn có thể được viết trong một biểu thức. Khi muốn sử
dụng một hàm, bạn cần biết tên hàm, loại tham số của hàm và kiểu giá trị trả
về của hàm.
Câu trúc của một hàm:
[Private | Public | Static] Function <Tên hàm> [ tham số As <Kiểu dữ liệu>]
Các dòng lệnh
End Function
Trong trường hợp không khai báo kiểu dữ liệu cho các biến hoặc giá trị
trả về cho hàm, Visual Basic mặc định hiểu đó là kiểu Variant. Dùng Exit sub
để thoát khỏi thủ tục, Exit Function để thoát khỏi hàm.
2.2.5 Cấu trúc điều khiển
2.2.5.1 Cấu trúc chọn
If <điều kiện> Then
các dòng lệnh
End if
Điều kiện là một so sánh hay một biểu thức mang giá trị số. Visual
Basic thông dịch giá trị này thành True hoặc False. Nếu True thì Visual Basic
thi hành dòng lệnh sau từ khoá Then.
If <điều kiện 1> Then
dòng lệnh 1
ElseIf <điều kiện 2> Then
dòng lệnh 2
......
ElseIf <điều kiện n> Then
dòng lệnh n
End if
Để giải quyết trường hợp có quá nhiều ElseIf được sử dùng, giúp
41
chương trình sáng sủa hơn. Biểu thức để so sánh được tính toán một lần vào
đầu cấu trúc. Sau đó Visual Basic so sánh kết quả biểu thức với từng Case.
Nếu bằng nó thi hành khối lệnh trong Case đó.
Select Case <biểu thức kiểm tra>
Case <danh sách biểu thức 1>
dòng lệnh 1
Case <danh sách biểu thức 2>
dòng lệnh 2
....................
Case else
dòng lệnh n
End Select
Mỗi danh sách biểu thức chứa một hoặc nhiều giá trị, các giá trị cách
nhau bằng dấu phẩy. Mỗi khối lệnh có thể chứa từ 0 đến nhiều dòng lệnh.
Nếu có hơn một Case thoả mãn điều kiện thì Case đầu tiên được thực hiện.
Case else không nhất thiết phải có, dùng trong trường hợp còn lại của các
Case trước.
2.2.5.2 Cấu trúc lặp
Cấu trúc Do…loop
Thi hành một khối lệnh với số lần lặp không định trước, trong đó, một
biểu thức điều kiện dùng so sánh để quyết định vòng lặp có tiếp tục hay
không, điều kiện phải quy về False hoặc True.
dạng 1
Do While <điều kiện>
<khối lệnh>
Loop
dạng 2
42
Do
<Khối lệnh>
Loop While <điều kiện>
dạng 3:
Do until <điều kiện>
<khối lệnh>
Loop
dạng 4:
Do
<khối lệnh>
Loop Until
Cấu trúc For…Next
For <biến đếm> = <điểm đầu> To <điểm cuối> [Step <bước nhảy>]
<Khối lệnh>
Next [<Biến đếm>]
Sử dụng cấu trúc này với số lần lặp biết trước, cho biến đếm tăng dần hoặc
giảm dần trong vòng lặp. Biến đếm, điểm đầu, điểm cuối và bước nhảy là
những giá trị số, bước nhảy có thể âm hoặc dương. Nếu bước nhảy dương,
điểm đầu phải nhỏ hơn hoặc bằng điểm cuối, nếu bước nhảy âm thì ngược lại.
Cấu trúc For Each…Next
Tương tự vòng lặp For... Next, nhưng nó lặp khối lệnh theo số phần tử
của một tập các đối tượng hay một mảng thay vì theo số lần lặp xác định.
Vòng lặp này tiện lợi khi ta không biết chính xác bao nhiêu phần tử trong tập
hợp.
For Each <phần tử> In <Nhóm>
<khối lệnh>
Next <phần tử>
43
Câu lệnh Go to
On Error Goto ErrorHandler
Được dùng để bẫy lỗi, khi có lỗi trong mã lệnh, chương trình sẽ nhảy
đến nhãn ErrorHandler và thi hành lệnh ở đó.
2.2.6 Các hàm cơ bản trong Visual Basic
Abs(n) : hàm trả giá trị tuyệt đối của biến n
Atn(n) : hàm trả về giá trị arctang của biến n
cos(n) : hàm trả về giá trị cosin của n
sin(n) : hàm trả về giá trị sin của n
Exp(n) : hàm trả về hàm mũ loga tự nhiên của n
Int(n) : hàm tìm giá trị số nguyên lớn nhất trong những số nguyên nhỏ
hơn số đó
Fix : hàm trả về phần nguyên của một số
Log10 : hàm tính loga cơ số 10
Round (n, x) : hàm làm tròn số n với x số sau dấu phẩy
sqr(n) : hàm tính giá trị căn bậc 2 của n
2.3 Kết luận chương 2
Trong chương này, luận văn đã đưa ra những cơ sở dữ liệu cần thiết để
xây dựng chương trình tính toán như: hệ thức tính toán độ cao thật của thiên
thể, hệ thức tính toán tọa độ của 1 số thiên thể đặc biệt tại 1 thời điểm bất kỳ.
Ngoài ra, bảng tọa độ của các định tinh, sự biến thiên tọa độ theo năm của
chúng cũng được trình bày trong nội dung của chương. Mặt khác, đề tài cũng
nêu một cách khái quát những kiến thức cơ bản của ngôn ngữ lập trình Visual
Basic được tác giả chọn lựa để viết mã lệnh chương trình tính toán.
44
CHƯƠNG 3. THIẾT LẬP PHƯƠNG PHÁP MA TRẬN VÒNG ĐẲNG
CAO THIÊN THỂ VÀ XÂY DỰNG CHƯƠNG TRÌNH TÍNH TOÁN VỊ
TRÍ TÀU THEO PHƯƠNG PHÁP
3.1 Thiết lập phương pháp ma trận vòng đẳng cao thiên thể tính toán vị
trí người quan sát
3.1.1 Thiên cầu trên hệ tọa độ vuông góc, mối liên hệ giữa tọa độ địa dư của
thiên đỉnh và tọa độ thiên thể trên hệ tọa độ vuông góc
Trong không gian đề các vuông góc, xét hệ tọa độ OXYZ , quy ước 3
trục OZ theo phương thẳng đứng, vector đơn vị là k
, trục OX vuông góc với
trục OZ, vector đơn vị là i
, trục OY vuông góc với 2 trục tọa độ trên, vector
đơn vị là j
(hình 3.1).
Xét thiên cầu với bán kính R =1 (hình 3.2), trục thiên cầu trùng với OZ,
thiên cực bắc PN nằm phía hướng dương của OZ. Mặt phẳng thiên kinh tuyến
Greenwich trùng với mặt phẳng XOZ. Mặt phẳng thiên xích đạo trùng với mặt
phẳng XOY. Tọa độ PM bất kỳ trong hệ tọa độ này được đặc trưng bởi 3 thông
số: PM(x, y, z), mối liên hệ giữa hệ tọa độ vuông góc, địa dư của thiên đỉnh
người quan sát với tọa độ của thiên thể được biểu diễn qua các hệ thức dưới
o
Z
Y
X
i
j
k
z
x y
PM(x, y, z)
Hình 3.1. Hệ tọa độ không gian đề các vuông góc
45
đây. Từ đó, có thể chuyển đổi tọa độ vuông góc sang tọa độ địa dư :
3.1.2 Thiết lập phương trình vòng đẳng cao thiên thể dạng tọa độ vuông góc
bằng hình học vector
Xét tích vô hướng của 2 vector OC
(x, y, z) và MOP
(X, Y, Z), viết lại 2
vector dưới dạng:
Phương trình (3.4) là phương trình vòng đẳng cao thiên thể dạng tọa độ
vuông góc. Nếu thay tọa độ cực vào (3.4) sẽ thu được phương trình vòng đẳng
cao thiên thể ở dạng lượng giác cầu (3.5):
cos .cos .cos .cos + cos .sin .cos .sin +sin .sin = sinG G Sittδ φ λ δ φ λ δ φ h
=> cos cos (cos cos sin sin ) sin sin sinG G Sit tδ. φ. . λ+ . λ + δ. φ= h
os . os t: os . int
G
G
x c cy c sCz sin
os . os: os .M
X c cP Y c sin
Z sin
( ) ( )MOC.OP = x.i+ y. j+ z.k . X.i+Y. j+Z.k = x.X + y.Y + z.Z
M...OC = x.i+ y. j+ z.k, OP = X.i+Y. j+Z.k,
cos(90 ) sinM S SoOC.OP = R.R. - h = h
2 2 2)( ).(1Zarctg
X Y eYarctgX
Sx.X + y.Y + z.Z = sinh (3.4)
(3.1) (3.2) (3.3)
O
900-hS
λ φ
C
PM
X
Y
Z
Hình 3.2. Thiên cầu trên hệ tọa độ vuông góc
46
=> cos cos cos sin sin sinL Sitδ. φ. + δ. φ = h (3.5)
Ngoài cách xây dựng trên, phương trình vòng đẳng cao thiên thể có thể
được xây dựng dựa vào phương pháp mặt phẳng. Phương trình mặt phẳng
chứa vòng đẳng cao có dạng:
x.(X – xo) + y.(Y –yo) + z.(Z – zo) = 0
( )OC x; y; z
là vector pháp tuyến của mặt phẳng chứa vòng đẳng cao, điểm
MO(xo, yo, zo) thuộc mặt phẳng vòng đẳng cao, chọn MO là giao điểm của
O C
và mặt phẳng chứa vòng đẳng cao thiên thể, do đó: oOM = k.OC
=> OOM
(k.x, k.y, k.z)
hệ số k = 0.cos(90 )
sinO O M S
SM M
OM OM OP hh
OC OP OP
=> OOM
(x.sinhS; y.sinhS; z.sinhS) => MO (x.sinhS; y.sinhS; z.sinhS)
Phương trình mặt phẳng chứa vòng đẳng cao có dạng :
x.(X - sinhS.x) + y.(Y - sinhS.y) + z.(Z - sinhS.z) = 0
=> x.X + y.Y + z.Z – (x2 + y2 +z2).sinhS = 0
=> x.X + y.Y + z.Z = sinhS vì (x2 + y2 +z2= R2=1)
Vậy PM(X;Y;Z) trên thiên cầu (X2 + Y2 + Z2 = 1) và mặt phẳng vòng
đẳng cao nên phương trình mặt phẳng chứa vòng đẳng cao chính là phương
trình vòng đẳng cao thiên thể.
3.1.3 Phương pháp ma trận vòng đẳng cao thiên thể tính toán vị trí người
quan sát
Giả sử thiên thể Ci có tọa độ Ci (xi; yi; zi) thiên đỉnh người quan sát PM
(X; Y; Z), vị trí dự đoán PE (XE; YE; ZE). Người quan sát đo độ cao đến (n)
thiên thể thu được (n) giá trị độ cao hSi, giải hệ phương trình vòng đẳng cao
thu được tọa độ vuông góc của thiên đỉnh người quan sát.
47
3.1.3.1 Quan sát 2 thiên thể: hệ phương trình vòng đẳng cao thiên thể như sau
Giải hệ (3.6) theo phương pháp biến đổi đại số thông thường. Tuy
nhiên, phương pháp đại số khá cồng kềnh, phức tạp khi thực hiện viết mã lệnh
cho chương trình dễ gây ra sai sót. Tác giả đề xuất giải hệ trên bằng phương
pháp hình học vector thay vì phương pháp biến đổi đại số (hình 3.3).
Theo tính chất của tam giác vector
i iOP = OL+ LP
(i = 1, 2)
chọn 11 2 2OL = k .OC +k .OC
, k1, k2 xác định theo hệ thức: cos1 2OC .OC = α
cos sincos sin
1 2 2
2 1 1
k . α = h - kk . α = h - k
=>
sin sin cossin
sin sin cossin
1 21 2
2 12 2
h - h . αk =α
h - h . αk =α
=> ( ) ( )2 21 2i
1 2
OC OCLP = r. 1- OL = . 1- OLOC OC
sin. = sin
1
11 1 1
22 2 2
y Xx z hy Yx z h
X Y Z Z
(3.6)
P2
P1
C1
C2 O
α
L
O
α
C2
C1
L
k2. 2OC
k1. 1OC
Hình 3.3. Mô tả phương pháp giải bằng hình học
48
=> ( )21 21i 1 2 2
1 2
OC OCOP = k .OC +k .OC + . 1-OLOC OC
Hệ thức (3.7) cho phép tính toán tọa độ của vector iOP
đây chính là tọa
độ thiên đỉnh người quan sát trong không gian đề các vuông góc, sau đó kết
hợp với tọa độ dự đoán để lựa chọn nghiệm chính xác.
Thực tế cũng có thể giải hệ (3.6) theo phương pháp lặp đơn, từ vị trí dự
đoán PC(XC, YC, ZC), đặt X1 = XC; Y1 = YC; Z1 = ZC, thay (Y1; Z1) vào phương
trình đầu tiên tìm được giá trị X2, thay (Z1; X1) vào phương trình thứ 2 tìm
được giá trị Y2, thay (X1; Y1) vào phương trình thứ 3 tìm được Z2. Tiếp tục
vòng lặp đến khi (PK+1 -PK) < ε
2 2
1 1 1 11
2 2 2 21
1
. . ) /
. . ) /
(sin
(sin
1
K KK
K KK
K KK
X h y Y z Z x
Y = h x X z Z y
X YZ
3.1.3.2 Quan sát 3 thiên thể: thu được hệ phương trình vòng đẳng cao thiên
thể :
Giải hệ (3.8) theo phương pháp biến đổi đại số Crame:
Biến đổi ma trận nghịch đảo của ma trận thiên thể về ma trận [3 x 3]
sau đó nhân với ma trận độ cao để tìm nghiệm của hệ. Tuy nhiên, trong thực
tế sai số ngẫu nhiên luôn tồn tại và tác động đến độ cao thiên thể gây ra sai số
-1
sinsinsin
11 11
22 2 2
333 3
X y hx zY = .y hx zZ y z hx
1 1 1
2 22
3 3 3
sinsinsin
1
2
3
x y z X hx y z . Y = h
Z hx y z
=>
(3.8)
(3.7)
49
trong vị trí xác định, để tìm vị trí chịu ảnh hưởng ít nhất của sai số ngẫu nhiên
hay nói cách khác là tìm vị trí xác suất nhất, tác giả giải hệ phương trình trên
theo phương pháp bình phương nhỏ nhất.
3.1.3.3 Quan sát (n > 3) thiên thể: hệ phương trình vòng đẳng cao thiên thể
sinsin
sin
1 11 1
2 222
n nn n
yx hz Xyx hz . Y =
... ... ... ...Z
yx hz
(3.9)
Phương pháp giải trực tiếp: theo phương pháp giải trực tiếp, các ma
trận trên chưa vuông, để có ma trận vuông nhân hệ trên với ma trận chuyển vị
của ma trận thiên thể
( ) ( )
( )
T T
-1-1T T T T.
-1T T
C . P = H
C . C . P = C . H
C . C . C . C . P = C . C C . H
P = C . C . C . H
(3.10)
Phương pháp giải gián tiếp: giải hệ theo phương pháp bình phương
nhỏ nhất tìm nghiệm tối ưu. Khi có sai số tác động đến độ cao thiên thể hS
phương trình vòng đẳng cao có dạng:
Nghiệm tối ưu của bài toán thỏa mãn điều kiện tổng bình phương sai số
nhỏ nhất:
S đạt giá trị nhỏ nhất khi:
.........( sin ) min22n n
siii iii=1 i=1
S = = . + .Y + .Z - hyx X zε
sin s ii i i ix . +y .Y+z .Z = h +X ε (3.11)
(3.12)
50
Biến đổi hệ phương trình (3.13) thu được :
sin
sin
sin
2Si
2Si
2Si
n n n nii i i.i i
i=1 i=1 i=1 i=1n n n n
ii i.i i ii=1 i=1 i=1 i=1n n n n
i i i.i iii=1 i=1 i=1 i=1
yx x x xz
y y y yx z
yx z z z z
. . hX
. . Y = hZ
. . h
Giải hệ theo phương pháp biến đổi đại số Crame
1-
C . P = H
P = C . H
Sau khi có PM(X, Y, Z) kết hợp với các hệ thức (3.1), (3.2), (3.3) để
chuyển tọa độ đề các vuông góc của thiên đỉnh sang hệ tọa độ địa dư.
3.2 Xây dựng chương trình tính toán vị trí tàu theo phương pháp ma trận
vòng đẳng cao thiên thể
3.2.1 Sơ đồ thuật toán chương trình xác định vị trí tàu theo phương pháp ma
trận vòng đẳng cao thiên thể
Để xác định vị trí tàu, phải xác định độ cao thật của thiên thể, ghi lại
thời điểm quan sát, tốc độ tàu, hướng đi, phương vị đến các thiên thể, hiệu
chỉnh độ cao thiên thể từ thời điểm trước về thời điểm sau. Trong phần này,
tác giả trình bày sơ đồ thuật toán của 3 bài toán chính, trên cơ sở các thuật
toán sẽ xây dựng chương trình tính toán vị trí tàu theo phương pháp ma trận
vòng đẳng cao thiên thể sử dụng ngôn ngữ lập trình Visual Basic.
0
0
0
SXSYSZ
=> (3.13) 1
1
1
( ) 0sin
( sin ) 0
( sin ) 0
ni i ii Sii
niii i Sii
ni ii i Sii
yx x z
y yx z
yxz z
. .X + + - =.Y .Z h
. .X + .Y + .Z - h =
. .X + .Y + .Z - h =
=>
=>
51
3.2.1.1 Chương trình tính toán vị trí tàu bằng mặt trời không đồng thời
Hình 3.4. Sơ đồ thuật toán chương trình xác định vị trí bằng mặt trời
1 2( ) OC .OCcos α
1 21 2
2 12 2
sinh -sinh .cosαk =sinα
sinh -sinh .cosαk =sinα
Kết thúc ( φ , λ )
11 2 2OL = k .OC + k .OC
21 2
1 2
. (1- )iOC OCLP OLOC OC
21OP ,OP
(XE, YE, ZE) (XO, YO, ZO)
21 2OC (T ),OC
G
G
x=cosδ.cos tOC : y=cosδ.sint
z = sinδ
Bắt đầu Mặt trời
UTC1 UTC2
OC1,2 i+s Dip R HP SD
A
V, HT h2 h1
Các hệ thức
tính toán tọa độ
mặt trời
Bắt đầu
52
3.2.1.2 Chương trình tính toán vị trí tàu bằng 2 thiên thể
Các hệ thức tính
toán tọa độ thiên thể
Bắt đầu Thiên thể 2
A
V, HT h2 h1
UTC2 UTC1
OC1,2 i+s Dip R
21 2OC (T ),OC
G
G
x=cosδ.cos tOC : y=cosδ.sint
z = sinδ
Hình 3.5. Sơ đồ thuật toán chương trình xác định vị trí bằng 2 thiên thể
1 2( ) OC .OCcos α
1 21 2
2 12 2
sinh -sinh .cosαk =sinα
sinh -sinh .cosαk =sinα
Kết thúc ( φ , λ )
11 2 2OL = k .OC + k .OC
( )21 2i
1 2
OC OCLP = . 1- OLOC OC
21OP ,OP
(XE, YE, ZE) (XO, YO, ZO)
Thiên thể 1 Bắt đầu
53
3.2.1.3 Chương trình tính toán vị trí tàu bằng 3 thiên thể
Kết thúc
( φ , λ )
(XO, YO, ZO)
A
V, HT h2 h1
Bắt đầu Thiên thể 2 Thiên thể 1
UTC3 UTC1
OC1,2, i+s Dip R
UTC2
Thiên thể 3
h3
2 31 3 3OC (T ),OC (T ),OC
G
G
x=cosδ.cos tOC : y=cosδ.sint
z = sinδ
11 11
22 2 2
3 3 33
X sinh. Y = sinh
Z sinh
yx zyx zy zx
Phương pháp bình phương nhỏ nhất
Hình 3.6. Thuật toán chương trình xác định vị trí bằng 3 thiên thể
Các hệ thức tính
toán tọa độ thiên thể
Bắt đầu
Hình 3.6. Sơ đồ thuật toán chương trình xác định vị trí bằng 3 thiên thể
54
3.2.2 Giao diện chương trình tính toán vị trí tàu theo phương pháp
Click chuột vào tab Sun xuất hiện cửa sổ
Hình 3.7. Cửa sổ chương trình chính
Hình 3.8. Cửa sổ chương trình tính toán vị trí tàu bằng mặt trời
55
Click chuột vào tab 2 Stars xuất hiện cửa sổ
Click chuột vào tab 3 Stars xuất hiện cửa sổ
Hình 3.9. Cửa sổ chương trình tính toán vị trí tàu bằng 2 thiên thể
Hình 3.10. Cửa sổ chương trình tính toán vị trí tàu bằng 3 thiên thể
56
3.3 Độ chính xác vị trí tính toán theo phương pháp và độ tin cậy của
chương trình tính toán
Để kiểm tra, đánh giá độ chính xác của vị trí tàu xác định theo phương
pháp ma trận vòng đẳng cao thiên thể, tác giả đã giải một số bài toán mẫu, các
số liệu được cung cấp bởi PGS, TS. Nguyễn Cảnh Sơn và Phòng thực hành bộ
môn Hàng hải - Khoa Hàng hải - Trường Đại học Hàng hải Việt Nam.
3.3.1 Bài toán xác định vị trí tàu bằng mặt trời không đồng thời
Quan sát độ cao mặt trời (ngày 20/8/2011) thu được số liệu như sau:
UTC1 = 04h20m00s, OC1 = 78001’, UTC2 = 05h00m00s, OC2 = 81039’3. Nhiệt
độ T = 260C, khí áp P = 1011mb, sai số dụng cụ (i + s) = 2’, phương vị A =
4805, bán kính mặt trời SD = 15’8, tốc độ tàu V = 12 knots, độ cao mắt người
quan sát e = 9m, hướng đi thực tế HTT = 980. Vị trí dự đoán φc = 20039’3N, λc
= 106050’E.
Hình 3.11. Kết quả tính toán vị trí tàu bằng mặt trời không đồng thời
57
Vị trí chính xác được lấy theo khu vực Hải Phòng - Hòn Dáu, hải đồ
3875, φo = 20038’1N, λo = 1070E, vị trí tàu tính toán theo phương pháp ma
trận vòng đẳng thiên thể là: φ1 = 20039’36N, λ1 = 106058’52E.
Sai số vị trí tàu, bán kính sai số:
∆φ1 = 20039’36 - 20038’1 = 1’26
∆λ1 = 106058’52 - 1070 = - 1’48
2 21 1 1( ) ( )M = 1’94 = 1.94 NM
Xác định vị tàu theo phương pháp hiệu đường cao vị trí. Các yếu tố
đường cao vị trí: đường vị trí thứ nhất AC1 = 550, ∆h1 = 1’1, dịch chuyển
đường vị trí MC một đoạn 8’ trên đường HTT, đường vị trí thứ 2 AC2 = 150,
∆h2 = 4’2.
20 38'1N
107 E
oo
o oo
M
22
2
20 41'3N106 56'9E
o
oM
Vị trí chính xác lấy theo hải đồ
MC
MC
1
2
1’
Vị trí xác định theo phương pháp hiệu đường cao
Hình 3.12. Phương pháp hiệu độ cao xác định vị trí tàu bằng mặt trời
HTT
58
Vị trí xác định theo phương pháp hiệu độ cao: φ2 = 20041’3N, λ2 =
106056’9E. Sai số vị trí tàu, bán kính sai số
∆φ2 = 20041’3 - 20038’1 = 3’2
∆λ2 = 106056’9 - 1070 = - 3’1
2 22 2 2( ) ( )M = 4’45 = 4.45 NM
3.3.2 Bài toán xác định vị trí tàu bằng 2 thiên thể
Quan sát độ cao 2 thiên thể tại thời điểm bình mình hàng hải (ngày
2/4/2011) tại UTC1 = 05h04m15s đo độ cao sao Rasalhague được OC1 =
81022’, tại UTC2 = 05h10m07s đo độ cao sao Vega được OC2 = 6909’6. Nhiệt
độ T = 260C, khí áp P = 1011mb, sai số dụng cụ (i + s) = 2’, phương vị A =
2020, tốc độ tàu V = 12 knots, độ cao mắt người quan sát e = 15m, hướng đi
thực tế HTT = 1120. Vị trí dự đoán φc = 20044’6N, λc = 107006’4E.
Hình 3.13. Kết quả tính toán vị trí tàu bằng 2 thiên thể Rasalhague và Vega
59
Vị trí chính xác được lấy theo khu vực Hải Phòng - Hòn Dáu, hải đồ
3875, φo =20039’1N, λo = 107018’E, vị trí tàu tính toán theo phương pháp ma
trận vòng đẳng thiên thể là: φ1 = 20037’5N, λ1 = 107016’13E.
Sai số vị trí tàu, bán kính sai số:
∆φ1 = 20039’1 - 20037’5 = 1’6
∆λ1 = 107018’ - 107016’13 = 1’87
2 21 1 1( ) ( )M = 2’46 = 2.46 NM
Xác định vị tàu theo phương pháp hiệu đường cao vị trí. Các yếu tố
đường cao vị trí được tính toán như sau: đường vị trí thứ nhất AC1 = 200067,
∆h1 = 1’2, đường vị trí đường vị trí thứ 2 AC2 = 2707, ∆h2 = 0’2.
Vị trí xác định theo phương pháp hiệu độ cao: φ2 = 20037’9N, λ2 =
107021’2E. Sai số vị trí tàu, bán kính sai số
∆φ2 = 20039’1 - 20037’9 = 1’2
∆λ2 = 107018’ - 107021’2 = - 3’2
MC
HTT
1
2
Hình 3.14. Phương pháp hiệu độ cao xác định vị trí bằng 2 sao
22
2
20 37 '9N107 21'2E
o
oM
0
20 39 '1N
107 18'E
oo
oo
M
60
2 22 2 2( ) ( )M = 3’42 = 3.42 NM
3.3.3 Bài toán xác định vị trí tàu bằng 3 thiên thể
Quan sát độ cao 3 thiên thể tại thời điểm bình mình hàng hải (ngày
2/4/2011) tại UTC1 = 05h04m15s đo độ cao sao Rasalhague được OC1 =
81022’, tại UTC2 = 05h10m07s đo độ cao sao Vega được OC2 = 6909’6, tại
UTC3 = 05h15m02s đo độ cao sao Deneb được OC3 = 49027’5. Nhiệt độ T =
260C, khí áp P = 1011mb, sai số dụng cụ (i + s) = 2’, phương vị A1 = 2020, A2
= 2703, tốc độ tàu V = 12 knots, độ cao mắt người quan sát e = 15m, hướng đi
thực tế HTT = 1120. Vị trí dự đoán φc = 20044’6N, λc = 107006’4E.
Vị trí chính xác được lấy theo khu vực Hải Phòng - Hòn Dáu, hải đồ
3875, φo =20038’5N, λo = 107019’1E, vị trí tàu tính toán theo phương pháp
ma trận vòng đẳng thiên thể là: φ1 = 20037’94N, λ1 = 107020’1E.
Hình 3.15. Kết quả tính toán vị trí tàu bằng 3 thiên thể Rasalhague, Vega và Deneb
61
Sai số vị trí tàu, bán kính sai số:
∆φ1 = 20038’5 - 20037’94 = 0’56
∆λ1 = 107019’1 - 107020’1 = -1’00
2 21 1 1( ) ( )M = 1’146 = 1.146 NM
Xác định vị tàu theo phương pháp hiệu đường cao vị trí. Các yếu tố
đường cao vị trí được tính toán như sau: đường vị trí thứ nhất AC1 = 200067,
∆h1 = 1’2, đường vị trí đường vị trí thứ 2 AC2 = 2707, ∆h2 = 0’2, đường vị trí
thứ 3 AC3 = 430 , ∆h3 = 4’4.
Vị trí xác định theo phương pháp hiệu độ cao: φ2 = 20037’9N, λ2 =
107021’2E. Sai số vị trí tàu, bán kính sai số
∆φ2 = 20038’5 - 20038’1 = 0’4
∆λ2 = 107019’1 - 107020’7 = - 1’6
2 22 2 2( ) ( )M = 1’649 = 1.649 NM
Hình 3.16. Phương pháp hiệu độ cao xác định vị trí bằng 3 sao
22
2
20 38'1N107 20'7E
o
oM
1
MC
HTT
0
20 38'5N
107 19'1E
oo
oo
M
2
3
62
Vậy với các bài toán mẫu và chương trình tính toán kiểm nghiệm, các
kết quả cho thấy vị trí tính toán theo phương pháp ma trận vòng đẳng cao
thiên thể có độ chính xác cao hơn so với phương pháp hiệu độ cao truyền
thống của Saint - Hilaire.
3.4 Kết luận chương 3
Trong chương này, tác giải đã trình bày cách thiết lập phương trình
vòng đẳng cao thiên thể ở dạng tọa độ vuông góc thay vì dạng lượng giác cầu
phức tạp, từ đó phương pháp ma trận giải hệ các phương trình vòng đẳng cao
thiên thể xác định vị trí tàu cũng được đưa ra với từng trường hợp cụ thể.
Ngoài ra, sơ đồ thuật toán theo phương pháp cũng được xây dựng làm cơ sở
viết mã lệnh cho chương trình tính toán vị trí.
Phần cuối chương, tác giả đã thực hiện giải một số bài toán mẫu xác
định vị trí tàu bằng chương trình phần mềm tính toán với các trường hợp mặt
trời không đồng thời, 2 sao, 3 sao tại khu vực Hòn Dấu – Đồ Sơn - Hải
Phòng, sau đó so sánh với vị trí thật được lấy và vị trí nhận được từ phương
pháp hiệu độ cao của Saint - Hilaire. Các số liệu so sánh cho thấy phương
pháp ma trận vòng đẳng cao thiên thể có độ chính xác cao hơn so với phương
pháp hiệu độ cao và các phương pháp xác định vị trí tàu truyền thống trước
đây.
63
KẾT LUẬN VÀ KIẾN NGHỊ
Kết luận
Đề tài hoàn thành đã đạt được một số kết quả sau: thống kê những
phương pháp xác định vị trí tàu bằng thiên văn từ trước đến nay, chúng là cơ
sở lý thuyết để xây dựng những phần mềm, chương trình tính toán vị trí tàu
bằng quan sát thiên văn hiện nay. Ngoài ra, những hạn chế của các phương
pháp cũng được phân tích một cách chi tiết, xu hướng phát triển trong tương
lai của chúng cũng được dự đoán, từ đó xây dựng những phương pháp mới,
những chương trình mới ứng dụng làm nền tảng phát triển lý thuyết hàng hải
thiên văn kết hợp với những phương pháp hàng hải hiện đại khác.
Đề tài đã thiết lập một phương pháp mới để tính toán vị trí tàu - phương
pháp ma trận vòng đẳng cao thiên thể, phương pháp này cho vị trí tính toán
chính xác hơn vị trí xác định bằng phương pháp hiệu độ cao của Saint -
Hilaire, chương trình tính toán vị trí theo phương pháp được xây dựng dựa
trên ngôn ngữ lập trình Visual Basic nhằm kiểm tra độ tin cậy cũng như là
ứng dụng để xác định vị trí khi dẫn tàu vượt Đại dương. Phần cuối đề tài, tác
giả đã thực hiện việc giải một số bài toán mẫu xác định vị trí tàu, so sánh kết
quả với các phương pháp khác, các số liệu cho thấy phương pháp mà tác giả
thiết lập, chương trình tính theo phương pháp, có độ tin cậy cao đáp ứng được
những yêu cầu thực tế.
Kiến nghị
Trên cơ sở những kết quả đạt được, tác giả đề nghị một số ý kiến sau:
đưa phương pháp tính toán vị trí tàu theo ma trận vòng đẳng cao thiên thể vào
giáo trình, tài liệu môn học hàng hải thiên văn của Khoa Hàng hải - Trường
Đại học Hàng hải Việt Nam, kết hợp với các phương pháp xác định vị trí tàu
hiện có làm tài liệu tham khảo cho sinh viên, học viên ngành hàng hải.
64
Ngoài ra, tác giả đề xuất đưa sản phẩm của đề tài – chương trình tính
toán vị trí theo phương pháp lên các tàu viễn dương để hỗ trợ sỹ quan hàng
hải khi hệ thống GPS bị sự cố hoặc bị hạn chế do tín hiệu đường truyền xấu.
Trong tương lai, tác giả sẽ tiếp tục nghiên cứu phát triển phương pháp
ma trận vòng đẳng cao thiên thể với những điều kiện khác được xét đến như
ảnh hưởng của sự thay đổi hướng đi, tốc độ trong quá trình quan sát, ảnh
hưởng từ môi trường đến vị trí tính toán bằng phương pháp. Đặc biệt, sự kết
hợp giữa phương pháp ma trận vòng đẳng cao thiên thể trong hàng hải thiên
văn và phương pháp hàng hải quán tính cũng sẽ được xét đến. Vậy rất mong
nhận được sự cộng tác cũng như là những ý kiến đóng góp của các nhà khoa
học quan tâm đến lĩnh vực mà tác giả nghiên cứu.
65
DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC ĐÃ CÔNG BỐ LIÊN
QUAN ĐẾN ĐỀ TÀI CỦA TÁC GIẢ
1. KS. Nguyễn Văn Sướng (2011). Tính toán vị trí tàu bằng các yếu tố đường
vị trí thiên văn dựa trên phương pháp bình phương nhỏ nhất, Báo cáo hội
nghị khoa học công nghệ hàng hải, tr 28 - 30.
2. KS. Nguyễn Văn Sướng, Ths Đào Quang Dân (2011). Phương pháp tính
toán vị trí tàu theo ma trận vòng đẳng cao thiên thể, Tạp chí khoa học công
nghệ hàng hải, số 28, tr 16 – 20.
3. KS. Nguyễn Văn Sướng, Ths Đào Quang Dân (2012). Thuật toán xác định
vị trí tàu bằng phương pháp thiên văn với hướng đi và tốc độ tàu không thay
đổi trong quá trình quan sát thiên thể, Tạp chí khoa học công nghệ hàng hải,
số 32, tr 72 - 75.
66
TÀI LIỆU THAM KHẢO
Tiếng Việt
1. Ths Nguyễn Cảnh Sơn, Thiên văn hàng hải (2004), Trường Đại học hàng
hải Việt Nam.
2. KS. Nguyễn Văn Sướng (2011). Tính toán vị trí tàu bằng các yếu tố đường
vị trí thiên văn dựa trên phương pháp bình phương nhỏ nhất, Báo cáo hội
nghị khoa học công nghệ hàng hải, tr 28 - 30.
3. KS. Nguyễn Văn Sướng, Ths Đào Quang Dân (2011). Phương pháp tính
toán vị trí tàu theo ma trận vòng đẳng cao thiên thể, Tạp chí khoa học công
nghệ hàng hải, số 28, tr 16 – 20.
4. Ths. Vũ Công Thế (2008). Giáo trình Visual Basic 6.0, Học viện Hải quân
Nha Trang.
Tiếng Anh
5. Bowditch, N. American Practical Navigator, DMAH/TC, Washington
1984 and 2002.
6. Chih Li Chen, Tien Pen Hsu, Jiang Ren Chang. A novel approach to
determine the astronomical vessel position. Journal of Marine Science and
Technology, Vol. 11, No4, pp. 221-235 (2003)
7. Deborah A. Sigel and David Wettergreen. Star Tracker Celestial
Localization System for a Lunar Rover. (2007)
8. Henning Unland. A short guider to celestial navigation (2006), 90 pp
9. John Locke. A mariner’s guide to the electronic calculator (1981). 233pp
10. The United Kingdom Hydrographic office. Nautical Almanac 2011
11. Van Allen, J.A., An Analytical Solution of the Two Star Sight Problem of
Celestial Navigation, Navigation: J. Inst. Naviga., Vol. 28, No. 1, pp. 40-43
(1981).
1/PL1
PHỤ LỤC
Phụ lục 1. Khai báo hàm trong Module
1. Hàm tính độ cao mặt trời: Public Function docaomattroi(OC As Double, index As Double, e As
Double, t As Double, p As Double, SA As Double) As Double
Dim H As Double, f As Double, R1 As Double, R2 As Double
H = OC + (index / 60) - (0.0293 * Sqr(e))
f = 0.28 * p / (t + 273)
R1 = 0.0167 / Tan((H + 7.32 / (H + 4.32)) * 4 * Atn(1) / 180)
R2 = f * R1
docaomattroi = H - R2 + 0.0024 * Cos(H * 4 * Atn(1) / 180) + SA / 60
End Function
2. Hàm tính độ cao sao:
Public Function docaosao(OC As Double, index As Double, e As Double, t
As Double, p As Double) As Double
Dim H As Double, f As Double, R1 As Double, R2 As Double
H = OC + (index / 60) - (0.0293 * Sqr(e))
f = 0.28 * p / (t + 273)
R1 = 0.0167 / Tan((H + 7.32 / (H + 4.32)) * 4 * Atn(1) / 180)
R2 = f * R1
docaosao = H - R2 + 0.0024 * Cos(H * 4 * Atn(1) / 180)
End Function
3. Hàm tính góc giờ thế giới của điểm xuân phân:
Public Function GHAxuanphan(UT As Double, d As Double, m As Double,
y As Double) As Double
Dim t As Double
2/PL1
t = 367 * y - Int(1.75 * (y + Int((m + 9) / 12))) + Int(275 * m / 9) + d +
UT /24 - 730531.5
GHAxuanphan = 0.9856474 * t + 15 * UT + 1.0046062
End Function
4. Hàm tính góc giờ thế giới của mặt trời:
Public Function GHAmattroi(UT As Double, d As Double, m As Double, y
As Double) As Double
Dim t As Double, g As Double, LM As Double, LT As Double, w As
Double, pi As Double, GHAxuanphan As Double
pi = 4 * Atn(1)
t = 367 * y - Int(1.75 * (y + Int((m + 9) / 12))) + Int(275 * m /9) + d +
UT / 24 - 730531.5
GHAxuanphan = 0.9856474 * t + 15 * UT + 1.0046062
g = 0.9856003 * t - 2.472
LM = 0.9856474 * t - 79.53938
LT = LM + 1.915 * Sin(g * pi / 180) + 0.02 * Sin(2 * g * pi / 180)
w = 23.439 - 4 * t * (10 ^ (-7))
GHAmattroi = GHAxuanphan - 2 * Atn((Cos(w * pi / 180) * Sin(LT *
pi / 180)) / (Cos(DEC * pi / 180) + Cos(LT * pi / 180))) * 180 / pi
End Function
5. Hàm tính xích vĩ của mặt trời:
Public Function DECmattroi(UT As Double, d As Double, m As Double, y
As Double) As Double
Dim t As Double, g As Double, LM As Double, LT As Double, w As
Double, pi As Double
pi = 4 * Atn(1)
t = 367 * y - Int(1.75 * (y + Int((m + 9) / 12))) + Int(275 * m /9) + d
+ UT / 24 - 730531.5
g = 0.9856003 * t - 2.472
3/PL1
LM = 0.9856474 * t - 79.53938
LT = LM + 1.915 * Sin(g * pi / 180) + 0.02 * Sin(2 * g * pi / 180)
w = 23.439 - 4 * t * (10 ^ (-7))
DECmattroi = Atn((Sin(LT * pi / 180) * Sin(w * pi / 180)) / Sqr(1 -
(Sin(LT * pi / 180) * Sin(w * pi / 180)) ^ 2)) * 180 / pi
End Function
6. Hàm đổi độ sang radian:
Public Function Radian(deg As Double) As Double
Dim pi As Double
Radian = deg * pi / 180
End Function
7. Hàm quy độ cao thiên thể từ thời điểm trước về thời điểm sau:
Public Function H21(H1 As Double, A As Double, HT As Double, V As
Double, UT1 As Double, UT2 As Double) As Double
Dim pi As Double, cosH21 As Double, deltaUT As Double
pi = 4 * Atn(1)
deltaUT = UT2 - UT1
cosH21 = Cos(H1 * pi / 180) * Cos(V * deltaUT * pi / (60 * 180)) + Sin(H1 *
pi / 180) * Sin(V * deltaUT * pi / (60 * 180)) * Cos((Abs(A - HT) * pi) / 180)
H21 = (pi / 2 - Atn(cosH21 / Sqr(1 - cosH21 ^ 2))) * 180 / pi
End Function
8. Hàm chuyển đổi tọa độ vuông góc sang vĩ độ địa dư có tính đến độ lệch tâm
Public Function CLat(X As Double, Y As Double, Z As Double) As Double
Dim pi As Double, a As Double, b As Double, dolechtam As Double
pi = 4 * Atn(1)
a = 6378137
b = 6356752
dolechtam = (a ^ 2 - b ^ 2) / (a ^ 2)
CLat = Atn(Z / Sqr((X ^ 2 + Y ^ 2) * (1 - dolechtam))) * 180 / pi
4/PL1
End Function
9. Hàm chuyển đổi tọa độ vuông góc sang kinh độ địa dư
Public Function CLong(X As Double, Y As Double) As Double
Dim pi As Double
pi = 4 * Atn(1)
CLong = Atn(Y / X) * 180 / pi
End Function
1/PL2
Phụ lục 2: Một số lệnh xử lý trong chương trình
1. Tính độ cao hiệu chỉnh, tọa độ cầu, tọa độ vuông góc của các thiên thể tại thời
điểm quan sát:
OC1 = OC1do + (OC1phut / 60)
OC2 = OC2do + (OC2phut / 60)
UT1 = Val(Combo8.ListIndex) + Val(Combo9.ListIndex)/60 +
Val(Combo10.ListIndex) / 3600
UT2 = Val(Combo11.ListIndex) + Val(Combo12.ListIndex)/60 +
Val(Combo13.ListIndex) / 3600
DEC1 = DECmattroi(UT1, d, m, y)
DEC2 = DECmattroi(UT2, d, m, y)
GHA1 = GHAmattroi(UT1, d, m, y)
GHA2 = GHAmattroi(UT2, d, m, y)
H1 = docaomattroi(OC1, saisodungcu, docaomat, nhietdo, khiap, SA1)
H2 = docaomattroi(OC2, saisodungcu, docaomat, nhietdo, khiap, SA2)
Hhieuchinh = H21(H1, phuongvi, huongdi, tocdo, UT1, UT2)
x1 = Cos(DEC1 * 4 * Atn(1) / 180) * Cos(GHA1 * 4 * Atn(1) / 180)
y1 = Cos(DEC1 * 4 * Atn(1) / 180) * Sin(GHA1 * 4 * Atn(1) / 180)
z1 = Sin(DEC1 * 4 * Atn(1) / 180)
x2 = Cos(DEC2 * 4 * Atn(1) / 180) * Cos(GHA2 * 4 * Atn(1) / 180)
y2 = Cos(DEC2 * 4 * Atn(1) / 180) * Sin(GHA2 * 4 * Atn(1) / 180)
z2 = Sin(DEC2 * 4 * Atn(1) / 180
2. Tính toán giá tọa độ của các vector vô hướng và vector hữu hướng
xOL = k1 * x1 + k2 * x2
yOL = k1 * y1 + k2 * y2
zOL = k1 * z1 + k2 * z2
2/PL2
xLZ = y1 * z2 - y2 * z1
yLZ = z1 * x2 - z2 * x1
zLZ = x1 * y2 - x2 * y1
LZ = Sqr(xLZ ^ 2 + yLZ ^ 2 + zLZ ^ 2)
xz1 = xOL + (xLZ * Sqr(1 - xOL ^ 2 - yOL ^ 2 - zOL ^ 2)) / LZ
yz1 = yOL + (yLZ * Sqr(1 - xOL ^ 2 - yOL ^ 2 - zOL ^ 2)) / LZ
zz1 = zOL + (zLZ * Sqr(1 - xOL ^ 2 - yOL ^ 2 - zOL ^ 2)) / LZ
xz2 = xOL - (xLZ * Sqr(1 - xOL ^ 2 - yOL ^ 2 - zOL ^ 2)) / LZ
yz2 = yOL - (yLZ * Sqr(1 - xOL ^ 2 - yOL ^ 2 - zOL ^ 2)) / LZ
zz2 = zOL - (zLZ * Sqr(1 - xOL ^ 2 - yOL ^ 2 - zOL ^ 2)) / LZ
3. Ghi dữ liệu lên lưới
MSFlexGrid1.TextMatrix(1, 1) = Round(x1, 4)
MSFlexGrid1.TextMatrix(2, 1) = Round(x2, 4)
MSFlexGrid1.TextMatrix(3, 1) = Round(Cos(Elat * 4 * Atn(1) / 180) *
Cos(Elong * 4 * Atn(1) / 180), 4)
MSFlexGrid1.TextMatrix(1, 2) = Round(y1, 4)
MSFlexGrid1.TextMatrix(2, 2) = Round(y2, 4)
MSFlexGrid1.TextMatrix(3, 2) = Round(Cos(Elat * 4 * Atn(1) / 180) *
Sin(Elong * 4 * Atn(1) / 180), 4)
MSFlexGrid1.TextMatrix(1, 3) = Round(z1, 4)
MSFlexGrid1.TextMatrix(2, 3) = Round(z2, 4)
MSFlexGrid1.TextMatrix(3, 3) = Round(Sin(Elat * 4 * Atn(1) / 180), 4)
MSFlexGrid1.TextMatrix(1, 4) = Round(Hhieuchinh, 4)
MSFlexGrid1.TextMatrix(2, 4) = Round(H2, 4)
MSFlexGrid1.TextMatrix(3, 4) = Round(H1, 4)
4. Tính toán vị trí bằng phương pháp bình phương nhỏ nhất
x1 = Cos(DEC1that * 4 * Atn(1) / 180) * Cos(GHA1hieuchinh * 4 * Atn(1) / 180)
y1 = Cos(DEC1that * 4 * Atn(1) / 180) * Sin(GHA1hieuchinh * 4 * Atn(1) / 180)
z1 = Sin(DEC1that * 4 * Atn(1) / 180)
3/PL2
x2 = Cos(DEC2that * 4 * Atn(1) / 180) * Cos(GHA2hieuchinh * 4 * Atn(1) / 180)
y2 = Cos(DEC2that * 4 * Atn(1) / 180) * Sin(GHA2hieuchinh * 4 * Atn(1) / 180)
z2 = Sin(DEC2that * 4 * Atn(1) / 180)
x3 = Cos(DEC3that * 4 * Atn(1) / 180) * Cos(GHA3hieuchinh * 4 * Atn(1) / 180)
y3 = Cos(DEC3that * 4 * Atn(1) / 180) * Sin(GHA3hieuchinh * 4 * Atn(1) / 180)
z3 = Sin(DEC3that * 4 * Atn(1) / 180)
a = (x1 ^ 2 + x2 ^ 2 + x3 ^ 2)
b = (y1 ^ 2 + y2 ^ 2 + y3 ^ 2)
c = (z1 ^ 2 + z2 ^ 2 + z3 ^ 2)
g = (y1 * z1 + y2 * z2 + y3 * z3)
e = (y1 * x1 + y2 * x2 + y3 * x3)
f = (z1 * x1 + z2 * x2 + z3 * x3)
k1 = x1 * Cos(H13hieuchinh * 4 * Atn(1) / 180) + x2 * Cos(H23hieuchinh * 4 *
Atn(1) / 180) + x3 * Sin(H3 * 4 * Atn(1) / 180)
k2 = y1 * Cos(H13hieuchinh * 4 * Atn(1) / 180) + y2 * Cos(H23hieuchinh * 4 *
Atn(1) / 180) + y3 * Sin(H3 * 4 * Atn(1) / 180)
k3 = z1 * Cos(H13hieuchinh * 4 * Atn(1) / 180) + z2 * Cos(H23hieuchinh * 4 *
Atn(1) / 180) + z3 * Sin(H3 * 4 * Atn(1) / 180)
DT = a * b * c - a * (g ^ 2) - b * (f ^ 2) - c * (e ^ 2) + 2 * e * g * f
DTX = k1 * (b * c - g ^ 2) - k2 * (e * c - f * g) + k3 * (e * g - f * b)
DTY = k2 * (a * c - f ^ 2) - k3 * (g * a - e * f) + k1 * (g * f - e * c)
DTZ = k3 * (a * b - e ^ 2) - k1 * (f * b - g * e) + k2 * (f * e - g * a)
Xnghiem = DTX / DT
Ynghiem = DTY / DT
Znghiem = DTZ / DT
Lat1 = CLat(Xnghiem, Ynghiem, Znghiem)
Long1 = CLong(Xnghiem, Ynghiem)