Ngôn ngữ lập trình fortran và ứng dụng trong khí tượng thuỷ văn

214 79 0
Ngôn ngữ lập trình fortran và ứng dụng trong khí tượng thuỷ văn

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUÓC GIA HÀ NỘI PH ẠM VĂN H U M NGÔN NGỮ L Ậ P T R ÌN H FO R T R A N VÀ ỨNG DỤNG TRONG K H Í TƯỢNG THỦY VẪN • ■ NHÀ XUẤT BẢN NÔNG NGHIỆP HÀ NỘI - 2005 Giới thiêu Giáo trình “Ngơn ngữ lập trình Fortran ứng dựng khí tượng thủy văn” tập hợp học sơ lập trình mà tác giả dạy số’ năm gần cho sinh viên ngành khí tượng học, thủy văn hải dương học Trường đại học Khoa học Tự nhiên, Đại học Quốc gia Hà Nội Sách nhằm giới thiệu cho sinh viên lẫn học lặp trình khái niệm vẽ lặp trình máy tính, tóm tắt yếu tơ" lệnh thông dụng, đặc điểm sử dụng chúng ngôn ngữ lập trình Fortran Mục tiêu cì giúp sinh viên làm quen với cáo phương pháp xây dựng th u ật giải tốn thơng dụng tốn học tính tốn, thơng kẽ tốn học xử lý scí liệu, rèn luyện kỹ lập trình để giải tốn xử lý phân tích số liệu, tính tốn ứng dụng mức độ ban đầu thòi gian học tập nghiên cứu trường đại học Những thí dụ hệ thơng tập tự luyện sách có ý nghĩa minh họa, hướng sinh viên tới vận dụng lệnh Fortran để viết chương trình ứng dụng nho nhỏ có tính cụ thể, bước đầu làm quen với đặc thù xử lý liệu quan trắc chuyên môn khí tượng thủy văn Những đặc điềm khác nội dung ứng dụng lập trình chuyên ngành quản lý sở liệu, phương pháp thông kê đại, phương pháp giải sô' trị tốn động lực khí quyển, đại dương chưa đề cập khuôn khổ kiến thức chun mơn người học, đổì tượng mơn học chun đề khác chương trình học tập, từ đến thực khơng xa Vì tài liệu học tập lập trình sơ, nội dung ngơn ngữ sách không bao quát hết yếu tô' th ế giới to lớn Fortran Nên bắt đầu đơn giản việc Một người học bắt đầu biết lập trinh, thấy ứng dụng máy tính có ích học tập nghiên cứu m ình nảy sinh nhu cầu tìm hiểu khai thác Fortran rấ t nhiều tài liệu tra cửu sách chuyên khảo khác hệ thơng trợ giúp sẵn có Fortran Như vậy, sách không tài liệu học tập cho sinh viên chun mơn khí tượng thủy văn, m có thê có ích cho sinh viên, học viên cao học nhiều chuyên ngành khác b ất kì mn tự học lập trìn h máy tính cách nhẹ nhàng Trong sách này, chương cấu tạo học Mỗi chuyên từ, khái niệm xuất lần đầu đểu in nghiêng, câu lệnh in chữ hoa đậm bao hộp để giúp người đọc thuận tiện tra cứu chưa thuộc tả cấu lệnh • • • Những th í dụ minh họa chọn lọc cho đơn giản, có tính điển hình, giúp người đọc liên tưởng đến lớp tốn khác sử dụng cách giải Chương trình th í dụ luồn quán áp dụng ý tưởng chia đ ể trị, tức phân nhiệm vụ lớn thành việc nhỏ để thực việc dẫn tới kết cì Với cách trình bày này, bạn đọc thấy lập trìn h khồng rác rối, khó hiểu, mà tự nhiên n h ta giải tốn khơng máy tính Những tóm tắ t kinh nghiệm gỡ rối lời khuyên rèn luyện phong cách lập trình học r ấ t có ích cho người học Và lòi khuyên cho ngưòi học lập trình: Hãy ln tưởng tượng xem phải giải tốn “bằng tay” th ế trước b đầu nghĩ cách viết chương trinh máy tính Hãy nhớ lấy tả, cú pháp câu lệnh việc khơng khó, lệnh Fortran giông câu tiếng Anh dơn giản Nhưng rấ t ý tới điều đơn giản, thí dụ nhìn dòng lệnh sau PRINT * , danh sách m ục cấn in cô gắng đọc kĩ hay hồi lại xem th ế danh sách, thê mục in, mục in Tác g iá Mục lục ■ ■ Chương 1: Khái n iệm lập trìn h m áy tín h đ ể g iả i c c toán ứng d ụ n g 1.1 1.2 1.3 1.4 1.5 Phần cứng phần mềm máy tín h Thực chương trìn h máy tính Quy trình giải tốn máy tính Những chương trình F ortran hồn chỉnh Quy cách soạn thảo chương trình Fortran 11 12 18 19 Chương 2: Những y ế u tô* b ản củ a F ortran 2.1 Dữ liệu cách biểu diễn liệu F ortran 2.2 Hằng biến 2.2.1 Tên biến tên 2.2.2 Mô tả (khai báo) kiểu biến kiểu 2.3 Biến có sơ" (mảng) 2.3.1 Khái niệm mảng 2.3.2 Mô tả mảng 2.4 Các hàm chuẩn 21 21 23 24 25 29 29 31 32 2.5 Lệnh gán toán tử số' học 2.5.1 Lệnh gán 2.5.2 Các phép tính sổ*học đờn giản 34 34 35 2.5.3 Ước lượng biểu thức số’ học 36 2.5.4 Khái niệm cắt phép tín h hỗn hợp 2.5.5 Khái niệm vể sô' bé sô' lớn (underflow overflow) C hương 3: Nhặp xuất dừ liệu đơn giản 3.1 Các lệnh xuất nhập liệu 3.2 Các đặc tả lệnh FORMAT 38 38 41 41 44 C hương 4: Các cấu trúc đ iều k h iển 4.1 Khái niệm cấu trúc th u ậ t toán 4.1.1 Các thao tác Giả trình lưu đồ 4.1.2 Các cấu trúc tổng quát th u ật giải 4.1.3 Thí dụ ứng dụng th u ật toán cấu trúc 4.2 Cấu trúc IF lệnh tương ứng 4.2.1 Biểu thức lôgic 4.2.2 Lệnh IF logic 4.2.3 Lệnh IF số học 4.2.4 Lệnh chuyển điều khiển vôđiều kiện GO TO 4.2.5 Lệnh GO TO tính tốn 51 51 51 53 53 56 56 58 62 64 65 C hương 5: Cấu trúc lặp với lện h DO 83 5.1 Vòng lặp DO 5.1.1 Cú pháp lệnh DO vòng lặp DO 5.1.2 Những quy tắc cấu trúc thực vòng lặp DO 5.1.3 Thí dụ ứng dụng vòng lặp DO 5.2 Vòng DO lổng C hương 6: File dử liệu v tổ chức dừ liệu Fortran 6.1 Khái niệm file liệu tổ chức lưu trữ liệu 6.2 Các lệnh nhập, xuất liệu vối file 6.3 Kỹ thuật đọc file liệu 6.3.1 Số dòng ghi định 6.3.2 Dòng ký hiệu kết thúc liệu 84 84 86 88 89 97 97 99 103 104 105 6.3.3 Sử dụng tùy chọn END 6.4 Tạo lập file liệu 6.5 Kỷ thuật trợ giúp tìm lỗi chương trình Chương 7: s dụng b iến có sơ Fortran 7.1 7.2 7.3 7.4 7.5 M ảng chiều Lệnh DATA Mảng hai chiểu Mảng nhiều chiều Những điểu cần ý sử dụng mảng 108 110 110 115 116 118 119 123 129 Chương 8: Chương trìn h loại hàm 8.1 Các hàm chuẩn 8.2 Các hàm chương trình 8.2.1 Hàm lệnh 8.2.2 Hàm chương trình 8.3 Chỉ dẫn gờ rối phong cách viết chương trình có hàm 133 134 135 135 137 146 Chương 9: Chương trình loại thủ tục 149 9.1 Khai báo gọi chương trình thủ tục 9.2 N hững th í dụ ứng dụng chương trình thủ tục 9.3 Những dẫn gỡ rối sử dụng thủ tục Chương 10: K iểu dừ liệu văn 149 151 158 161 10.1 Tập ký tự Fortran 10.2 Các dạng khai báo biến ký tự 10.3 Nhập, xuất liệu ký tự 10.4 Những thao tác với liệu ký tự 10.4.1 Gán giá trị ký tự 161 162 163 164 164 10.4.2 So sánh giá trị ký tự 10.4.3 Trích xâu 10.4.4 Kết hợp xâu ký tự 165 167 168 10.4.5 Những hàm chuẩn xử lý xâu ký tự 169 Chương 11: Những đặc điểm b ổ su n g vể file 11.1 Các file nội (Internal Files) 11.2 Các file truy nhập (Sequential Files) 11.3 Các file truy cập trực tiếp (Direct-Access Files) 179 179 181 185 11.4 Lệnh truy vấn INQUIRE 186 T ài liệu tham khảo 193 P h ụ lụ c 1: 195 Bảng hàm chuẩn F ortran P h ụ lụ c 2: Phương pháp Gauss giải hệ phương trình đại số tuyến tính 199 P h ụ lụ c 3: Phương pháp bình phương nhỏ n h ất phân tích hồi quy 205 P h ụ lục 4: Sơ đổ ứng dụng phương pháp hồi quy nhiều biến 209 Chương Khái niệm lập trình máy tính để giải tốn ứng dụng 1.1 Phần cứng phần mềm máy tính M áy tín h th iế t k ế để thực n h ữ n g th ao tác tu â n theo tậ p câu lệ n h người d ù n g viết ra, gọi chương trình Các máy tín h có cấu tạo chung bên n h trê n h ìn h 1.1 Người d ù n g sử d ụ n g b n phím , chuột th iế t bị n h ậ p liệu k hác để đưa th ô n g tin vào máy tính Bộ xử lý (processor) p h ầ n m áy t ín h kiểm soát tấ t p h ầ n khác Bộ x lý n h ậ n liệu vào lư u chúng nhớ (memory) Nó n h ậ n biết lện h chương trìn h Nếu ta mn cộng h a i giá trị, xử lý lây h a i giá trị t nhổ gửi đến khối xử lý số học logic (ALU) Khối n ày th ự c h iện phép cộng xử lý lưu k ết vào nhớ Trong k h i xử lý, xử lý khối sơ” học lơgic sử dụng lượng nhó nhỏ gọi nhố (internal níemory) P h ầ n lốn liệu lưu nhớ (external memory) n h đĩa cứng, đĩa mềm, chúng củng nơi vói xử lý Bộ xử lý, nhớ ALU gọi chung khối xử lý tru n g tâm hay CPU Trong chương trìn h , ta thường lệnh cho máy tín h in k ế t tín h to án lên m n h ì n h hay m áy in nối với m áy tín h th iế t bị x u ấ t liêu P h ẩ n m ềm chứa nhừng dần lệnh mà ta mn máy tín h thực P h ần mềm có th ể viết nhiều ngơn ngữ cho nhiểu mục đích N hững chương trìn h thực n h ữ n g thao tác chung, thường nhiều người sử d ụ n g gọi p h ấ n m ềm công cụ Hệ điều hành tập hợp chương trìn h giúp người dùng giao tiếp với m áy tính Hệ điểu h n h tạo m ột môi trường th u ậ n tiện cho người dùng “giao tiếp” với m áy tín h , thực chương trìn h ứng d ụ n g n h biên dịch ngôn ngừ lập trình, p h ầ n mềm cơng cụ Hệ điểu h n h gồm m ột số chương trìn h cho phép thao tác với file in, chép, hiển thị d an h sách file N hững hệ điểu h àn h đại n h W indows giúp máy tính n h ậ n biết q u ản lý công việc r ấ t nhiều th iế t bị ngoại vi nơi kèm với máy tín h n h th iế t bị n hập, xu ất liệu, m àn hình, máy in, m áy quét ảnh, loa, máy q u a n trắc chuyên dụng Hình 1.1 Sơ đổ khối máy tính 10 A' - ma trậ n A với cột / bị th ay t h ế cột sô' hạng tư b ề Phương pháp loại biến G a u s s giải hệ phương trinh đại số tuyến tính: Thí dụ cho hệ ơn*, +aị2 x + a l3 x + (2,4*4 a n x x + a-, 2x-> + ,3 X = a, + a 24x = a , a 31x l + j 203 N hư ta th ay hệ (12) h hộ tương đương T ' y = b, lõ) T x =y hay *11*1 = b\ ^12^1 + h i y i = ^2 (16) hny i +t2ny2+ + tnnyn = bn í,,*! + í12* í + + Í|B*„ = ^ | í22£ , + + t2nx n = y (17) tn„x n = 3',, Từ suy cơng thức tính: i-l 6, y i " ’ ru &t - z ¿=1 y ,= Ơ >1) (18) (i < n ) (19) t ii n Vi - * =^" íLnn ỵ ,tik * k k-i +1 tu Vậy trìn h th u ậ n gồm tính phần tử m a tr ậ n T theo công thức (14) Q trìn h nghịch tín h m a tr ậ n cột y 204 V theo công thức (18), (19) P h ụ lụ c 3: P h n g pháp bình p hư ơng n h ỏ nhâ't tro n g p h â n tíc h h ổi quy M hình tuyến tính Mỏ hình hồi quy tu y ến tín h có dạng: y = f { x ) = ax + b Theo phương p h áp bình phương nhỏ n h ất, hệ sơ' hồi quy a h phương trìn h tìm cho tống binh phương sai số E = ỵ à(y„ - a x k - bÝ A=l cực tiểu L ần lượt lấy đạo hàm biểu thức theo a , b cho b ằ n g không, ta h ệ phương trìn h sau đê xác định a vả b : Vậy hệ sỗ hồi quy dược tín h theo công thức sau: II (20) II d - v , )2 t ‘2 hay hệ sơ' b có th ể tín h theo cơng thức: Il II Ẻ y* - a Ẻ b= n ** + «I Ẻ £=l x l + °0 i + °I í > * Ẻ*A Â==lỊ W £*l k +a0 Ẻ ** = ẳ **y * (23) M 4=1 M ¿»I Về nguyên tắc ta cóthể sử dụng phương pháp để tìm phương trìn h đa thức bậc b ấ t kỳ Tuy nhiên thực t ế phương pháp trỏ th n h không ổn định bậc da thức lớn sai số làm tròn sò' m áy tính 206 M h in h p h i tu y ê n Phương p h p bình phương nhỏ n h ấ t có th ể áp dụng cho hàm b ấ t kỳ, nh n g hệ phương trìn h để tìm hệ sơ c ó 'th ể phi tu y ên , khơng thơ giải dược b ằn g cách sử dụng phương trìn h tuyến tính Tuy nhiên, sô"trường hợp,một hàm phi tu y é n có th ể chuyển th n h hàm tun tính Thí dụ hàm có thổ tuyến tính hố / ( * ) = bxm (24) Xêu lấy loga hai vế phương trìn h này, ta có In f ( x ) = a In X + ln è (25) N ếu ký hiệu g(x) = ln/(x) (26) b = lnồ (27) X = ln x (28) ỹ = \ny (29) ta có g( x) = áx +b (30) Với phương trìn h (30) hệ sô* hồi quy a h tín h th eo cơng thúc Ẻ * * Ẻ 7* r (31) (p * )1 A=l Ắ=l ‘2 n Z Ịj _ *=} — n V ' •— II V ’ ~ ■> \ 11 ỵ , x t y k - ¿ x i * ỳ* 1 = M = b x 2] •• • k, K [*1*» ]°1 + [x 2x m ]«: + + = (33) H ộ p h n g t r ì n h n y gọi h ệ p h n g t r ì n h c h í n h t ắ c đ ể x ác đ ị n h ( 'á c h ệ sô’ h i q u y Ọ i d n g m a t r ậ n t a v i ế t h ệ n y n h s a u : 209 (34) với dấu [ ] ký hiệu phép lâ y tổng I Để tìm hệ sô' hồi quy a 0, ữ|, a 2, , a m ta p h ải Ẹiải hệ phương trìn h tắc theo phương pháp loại biến Gauss phương phốp bậc h đ ã mô tả phụ lục m a trận h ệ sơ’ phương trìn h tắc m a trậ n đối xứng- Dưới dây dẫn h a i t h ủ t ụ c h ỗ tr ợ c h o v iệ c lậ p h ệ p h n g t r ì n h đ i số’ tu y ế n t í n h chuẩn tắc (34) - SUBROƯTINE LHPTCT giải h ệ phươnỊ trìn h phương pháp loại biên G auss - SUBROUTINE GAUSS SUBROUTINE L H P T C T (Y, X, A, N, M) INTẼGER N, M, I, J, K REAL Y(10000), X(10000, 50), A(0 : 50, : 51) A (0, 0) = N DO J = 1,M A (0, J) = 0.0 DO k = 1, N A (0, J) = A (0, J) + X (K, J) END DO END DO A ( ,M + 1) = 0.0 DO K = 1, N A (0, M + 1) = A (0, M + 1) + Y (K) END DO DO I = 1, M DO K = 1, N A (I M + 1) - A (I, M + 1) + Y (K) * X(K, I) END DO END DO DO I = 1, M DO J = I, M A (I, J) = 0,0 DO K = 1, N A (I J) = A (1, J) + X (K, I) * X (K, J) END DO ENDDO ENDDO DO I = 1, M DO J = 0, I - A (1, J) = A (J, I) END DO END DO RETURN END SU B R O U TIN E GAUSS (M, A, X) INTEGER M REAL A (0 : 50, : 51) X (0 : 50) REAL MAX DO I = 0, M ■ K=I MAX = ABS (A (K, K)) DO J = I + 1, M IF (MAX LT ABS (A (J, I))) THEN MAX = ABS (A (J, I)) K=J END IF END DO IF (K NE I) THEN DO J = I, M + MAX - A (I J) A (I, J) =A (K, J) A (K, J) = MAX END DO END IF DO J = I + l M + l A (I, J) = A (I, J) / A (I, I) END DO DO J = I + 1, M DO K = I + 1, M + A (J, K) = A (J, K) - A (J, I) * A (I, K) END DO ENDDO END DO X (M) = A (M, M + 1) / A (M, M) D O I = M - 1,0, -1 X (I) = A (I, M + 1) DO J = I + 1, M X (I) = X (I) - A (I, J) * X (J) END DO END DO RETURN END NHÀ XUẤT BẢN NÔNG NGHIỆP 6/167, Phương Mai, Đống Đa, Hà Nội ĐT: 8.521940, 5761075; FAX: (04) 5760748 E-mail: nxbnn@hn.vnn.vn CHI NHÁNH NXBNN 58 Nguyền Bỉnh Khiêm, Q.I, TP Hổ Chí Minh ĐT: 8297157, 8299521 FAX: (08) 9101036 Chịu trách nhiệm xuất NGUYỄN CAO DOANH Phụ trách thảo BÍCH HOA - LÊ LÂN Trình bày bìa HẢI NINH Chịu trách nhiệm nội dung HỘI Đ Ồ N G N G H IỆM TH U G IÁ O TRÌNH TRUỒNG Đ H K H TN - Đ Ạ I H Ọ C Quốc G IA HÀ NỘI Người nhận xét: PG S.TS PH A N V Ã N T Â N TS N G U Y Ề N ĐÚC VINH In 200 khổ 14,5 X 20,5 cm Xưởng in NXB Nông nghiệp Giấy chấp nhận KHĐT số 207/622 XB-QLXB Cục xuất cấp ngày 29/4/2005 In xong nộp lưu chiểu qùý 1/2006 ... ẠM VĂN H U M NGƠN NGỮ L Ậ P T R ÌN H FO R T R A N VÀ ỨNG DỤNG TRONG K H Í TƯỢNG THỦY VẪN • ■ NHÀ XUẤT BẢN NÔNG NGHIỆP HÀ NỘI - 2005 Giới thiêu Giáo trình “Ngơn ngữ lập trình Fortran ứng dựng khí. .. vận dụng lệnh Fortran để viết chương trình ứng dụng nho nhỏ có tính cụ thể, bước đầu làm quen với đặc thù xử lý liệu quan trắc chun mơn khí tượng thủy văn Những đặc điềm khác nội dung ứng dụng lập. .. nhằm giới thiệu cho sinh viên lẫn học lặp trình khái niệm vẽ lặp trình máy tính, tóm tắt yếu tô" lệnh thông dụng, đặc điểm sử dụng chúng ngôn ngữ lập trình Fortran Mục tiêu cì giúp sinh viên làm

Ngày đăng: 20/12/2019, 00:27

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan