1. Trang chủ
  2. » Giáo án - Bài giảng

tài liệu ôn thi công chức lập trình máy tính

112 453 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 112
Dung lượng 1,05 MB

Nội dung

NGÔN NGỮ LẬP TRÌNH FORTRAN VÀ ỨNG DỤNG TRONG KHÍ TƯỢNG THỦY VĂN Phạm Văn Huấn NXB Nông nghiệp - Hà Nội - 2005 Từ khóa: Ngôn ngữ, lập trình, Fortran, thuật giải, giả trình, lưu đồ, khai báo, hằng, biến, file, lệnh, tuần tự, rẽ nhánh, lặp, chương trình con, thủ tục, hàm Tài liệu Thư viện điện tử Trường Đại học Khoa học Tự nhiên sử dụng cho mục đích học tập nghiên cứu cá nhân Nghiêm cấm hình thức chép, in ấn phục vụ mục đích khác không chấp thuận nhà xuất tác giả ĐẠI HỌC QUỐC GIA HÀ NỘI PHẠM VĂN HUẤN NGÔN NGỮ LẬP TRÌNH FORTRAN VÀ ỨNG DỤNG TRONG KHÍ TƯỢNG THỦY VĂN NHÀ XUẤT BẢN NÔNG NGHIỆP – 2005 MỤC LỤC Giới thiệu Chương - Khái niệm lập trình máy tính để giải toán ứng dụng 1.1 Phần cứng phần mềm máy tính 1.2 Thực chương trình máy tính 1.3 Quy trình giải toán máy tính 1.4 Những chương trình Fortran hoàn chỉnh 10 1.5 Quy cách soạn thảo chương trình Fortran 11 Chương - Những yếu tố Fortran 12 2.1 Dữ liệu cách biểu diễn liệu Fortran 12 2.2 Hằng biến 13 2.2.1 Tên biến tên 13 2.2.2 Mô tả (khai báo) kiểu biến kiểu 14 2.3 Biến có số (mảng) 16 2.3.1 Khái niệm mảng 16 2.3.2 Mô tả mảng 17 2.4 Các hàm chuẩn 17 2.5 Lệnh gán toán tử số học 18 2.5.1 Lệnh gán 18 2.5.2 Các phép tính số học đơn giản 19 2.5.3 Ước lượng biểu thức số học 19 2.5.4 Khái niệm cắt phép tính hỗn hợp 20 2.5.5 Khái niệm số bé số lớn (underflow overflow) 20 Chương - Nhập xuất liệu đơn giản 22 3.1 Các lệnh xuất nhập liệu 22 3.2 Các đặc tả lệnh FORMAT 24 Chương - Các cấu trúc điều khiển 27 4.1 Khái niệm cấu trúc thuật toán 27 4.1.1 Các thao tác Giả trình lưu đồ 27 4.1.2 Các cấu trúc tổng quát thuật giải 28 4.1.3 Thí dụ ứng dụng thuật toán cấu trúc 28 4.2 Cấu trúc IF lệnh tương ứng 29 4.2.1 Biểu thức lôgic 29 4.2.2 Lệnh IF lôgic 30 4.2.3 Lệnh IF số học 32 Chương - Cấu trúc lặp với lệnh DO 44 5.1 Vòng lặp DO 44 5.1.1 Cú pháp lệnh DO vòng lặp DO 44 5.1.2 Những quy tắc cấu trúc thực vòng lặp DO 45 5.1.3 Thí dụ ứng dụng vòng lặp DO 46 5.2 Vòng DO lồng 47 Chương - File liệu tổ chức file liệu Fortran 51 6.1 Khái niệm file liệu tổ chức lưu trữ liệu 51 6.2 Các lệnh nhập, xuất liệu với file 52 6.3 Kỹ thuật đọc file liệu 54 6.3.1 Số dòng ghi định 54 6.3.2 Dòng ký hiệu kết thúc liệu 55 6.3.3 Sử dụng tuỳ chọn END 56 6.4 Tạo lập file liệu 58 6.5 Kỹ thuật trợ giúp tìm lỗi chương trình 58 Chương - Sử dụng biến có số Fortran 60 7.1 Mảng chiều 61 7.2 Lệnh DATA 62 7.3 Mảng hai chiều 62 7.3 Mảng nhiều chiều 64 7.4 Những điều cần ý sử dụng mảng 67 Chương - Chương trình loại hàm 70 8.1 Các hàm chuẩn 70 8.2 Các hàm chương trình 71 8.2.1 Hàm lệnh 71 8.2.2 Hàm chương trình 72 8.3 Chỉ dẫn gỡ rối phong cách viết chương trình có hàm 76 Chương - Chương trình loại thủ tục 78 9.1 Khai báo gọi chương trình thủ tục 78 9.2 Những thí dụ ứng dụng chương trình thủ tục 79 9.3 Những dẫn gỡ rối sử dụng thủ tục 83 Chương 10 - Kiểu liệu văn 85 10.1 Tập ký tự Fortran 85 10.2 Các dạng khai báo biến ký tự 85 10.3 Nhập, xuất liệu ký tự 86 10.4 Những thao tác với liệu ký tự 86 10.4.1 Gán giá trị ký tự 86 10.4.2 So sánh giá trị ký tự 87 10.4.3 Trích xâu 88 10.4.4 Kết hợp xâu ký tự 88 10.4.5 Những hàm chuẩn xử lý xâu ký tự 89 Chương 11 - Những đặc điểm bổ sung file 94 11.1 Các file nội (Internal Files) 94 11.2 Các file truy nhập (Sequential Files) 95 11.3 Các file truy cập trực tiếp (Direct-Access Files) 97 11.4 Lệnh truy vấn INQUIRE 98 Tài liệu tham khảo 101 Phụ lục 1: Bảng hàm chuẩn FORTRAN 102 Phụ lục 2: Phương pháp Gauss giải hệ phương trình đại số tuyến tính 104 Phụ lục 3: Phương pháp bình phương nhỏ phân tích hồi quy 108 Phụ lục 4: Sơ đồ ứng dụng phương pháp hồi quy nhiều biến 110 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 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 cuối giúp sinh viên làm quen với phương pháp xây dựng thuật giải toán thông dụng toán học tính toán, thống kê toán học xử lý số liệu, rèn luyện kỹ lập trình để giải toán xử lý phân tích số liệu, tính toá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ị toán động lực khí quyển, đại dương chưa đề cập khuôn khổ kiến thức chuyên môn người học, đối tượng môn học chuyên đề 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ố 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 trình, thấy ứng dụng máy tính có ích học tập nghiên cứu nảy sinh nhu cầu tìm hiểu khai thác Fortran 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 chuyên môn khí tượng thủy văn, mà có ích cho sinh viên, học viên cao học nhiều chuyên ngành khác muốn tự học lập trình 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 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 toán khác sử dụng cách giải Chương trình thí dụ 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 cuối Với cách trình bày này, bạn đọc thấy lập trình không rắc rối, khó hiểu, mà tự nhiên ta giải toá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 có ích cho người học Và lời khuyên cho người học lập trình: Hãy tưởng tượng xem phải giải toán “bằng tay” trước bắt đầu nghĩ cách viết chương trình 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 đơn giản Nhưng ý 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 danh sách, mục in, mục in Tác giả Chương - Khái niệm lập trình máy tính để giải toán ứng dụng 1.1 Phần cứng phần mềm máy tính đích Những chương trình thực thao tác chung, thường nhiều người sử dụng gọi phần mềm công cụ Hệ điều hành tập hợp chương trình giúp người dùng giao tiếp với máy tính Hệ điều hành tạo môi trường thuận tiện cho người dùng “giao tiếp” với máy tính, thực chương trình ứng dụng biên dịch ngôn ngữ lập trình, phần mềm công cụ Hệ điều hành gồm số chương trình cho phép thao tác với file in, chép, hiển thị danh sách file Những hệ điều hành đại Windows giúp máy tính nhận biết quản lý công việc nhiều thiết bị ngoại vi nối kèm với máy tính thiết bị nhập, xuất liệu, hình, máy in, máy quét ảnh, loa, máy quan trắc chuyên dụng Máy tính thiết kế để thực thao tác tuân theo tập câu lệnh người dùng viết ra, gọi chương trình Các máy tính có cấu tạo chung bên hình 1.1 Người dùng sử dụng bàn phím, chuột thiết bị nhập liệu khác để đưa thông tin vào máy tính Bộ xử lý (processor) phần máy tính kiểm soát tất phần khác Bộ xử lý nhận liệu vào lưu chúng nhớ (memory) Nó nhận biết lệnh chương trình Nếu ta muốn cộng hai giá trị, xử lý lấy hai giá trị từ nhớ gửi đến khối xử lý số học lôgic (ALU) Khối thực phép cộng xử lý lưu kết vào nhớ Trong xử lý, xử lý khối số học lôgic sử dụng lượng nhớ nhỏ gọi nhớ (internal memory) Phần lớn liệu lưu nhớ (external memory) đĩa cứng, đĩa mềm, chúng nối với xử lý Bộ xử lý, nhớ ALU gọi chung khối xử lý trung tâm hay CPU Trong chương trình, ta thường lệnh cho máy tính in kết tính toán lên hình hay máy in nối với máy tính thiết bị xuất liệu Phần mềm chứa dẫn lệnh mà ta muốn máy tính thực Phần mềm viết nhiều ngôn ngữ cho nhiều mục External memory Internal memory Input Processor Output ALU CPU Hình 1.1 Sơ đồ khối máy tính Thông thường chuyên gia lập chương trình viết nhiều chương trình để máy tính thực hiện, từ chương trình đơn giản để giải toán nhỏ, tính toán vài giá trị, đến chương trình đồ sộ xử lý thông tin phức tạp, thông minh, giải toán khoa học kĩ thuật lớn, chế văn bản, thiết kế đồ họa, chương trình nghe nhạc, xem phim, trò chơi, truy cập Internet Những chương trình tương đối lớn phức tạp thường gọi phần mềm Người dùng máy tính sử dụng chương trình Ngày có cảm giác máy tính làm tất việc Tuy nhiên, phải nhớ tất máy tính làm làm việc theo chương trình người tạo 1.2 Thực chương trình máy tính Thực chương trình máy tính thường gọi tắt chạy chương trình Khi người dùng máy tính muốn làm việc đó, thí dụ giải toán, người dùng phải viết chương trình máy thực Người lập trình thường viết chương trình máy tính ngôn ngữ bậc cao với câu lệnh giống câu tiếng Anh, dễ học sử dụng Ngôn ngữ Fortran thuộc loại Mỗi bước ta muốn máy tính thực phải mô tả theo cú pháp ngôn ngũ đặc thù (language syntax) Tuy nhiên, chương trình ta viết phải chương trình chuyên (bộ biên dịch - compiler) dịch thành ngôn ngữ máy máy tính hiểu thực Khi compiler dịch dòng lệnh ta viết, tự động tìm lỗi dịch, hay lỗi cú pháp (syntax error), tức lỗi tả, dấu phân cách Nếu chương trình viết có lỗi dịch, biên dịch thông báo để người viết chương trình sửa Sau sửa hết lỗi, ta chạy lại chương trình bước dịch Một dịch xong, chương trình soạn thảo liên kết (linkage editor program) thực việc hoàn tất sẵn sàng cho bước thực Chính bước lệnh ta viết thực máy tính Lỗi chương trình xuất bước này, gọi lỗi chạy chương trình (runtime error) hay lỗi lôgic Những lỗi không liên quan tới cú pháp lệnh, mà liên quan tới lôgic lệnh, lộ máy tính thực thi câu lệnh Thí dụ, lệnh X = A/ B câu lệnh đúng, bảo máy tính lấy A chia cho B gọi kết X Tuy nhiên, giả sử B không, phép tính chia cho số không phép tính sai, nghĩa ta thông báo lỗi chạy chương trình Các lỗi lôgic thông báo Thí dụ, chương trình thay chia số cho 0.10 ta viết thành nhân với 0.10, chạy chương trình chẳng có lỗi thông báo, đáp số toán, tức kết mà ta mong đợi, sai 1.3 Quy trình giải toán máy tính Nhìn chung công việc giải toán máy tính gồm năm bước sau: 1) Phát biểu toán cách rõ ràng 2) Mô tả thông tin nhập vào xuất 3) Giải toán tay tập liệu đơn giản 4) Phát triển cách giải toán thành dạng tổng quát 5) Kiểm tra đáp số với nhiều tập liệu khác Bây ta minh họa năm bước qua thí dụ toán tính giá trị trung bình tập số liệu thực nghiệm Bước 1: Ta phát biểu toán cách rõ ràng sau: “Tính trị số trung bình tập giá trị số liệu thực nghiệm” Bước 2: Chỉ cụ thể số liệu vào gì, hình thức Nếu có tờ ghi số giá trị số liệu, đòi hỏi nhập vào máy qua bàn phím, hết số liệu gõ giá trị 0.0 để báo hết, sau tính trị số trung bình in kết trị số trung bình Vậy phải mô tả bước sau: “Đầu vào chuỗi giá trị số thực khác không Đầu giá trị trung bình, số thực in hình” Giả sử đầu vào số số liệu ghi vào tệp (file) ổ cứng, quy cách ghi có đặc điểm định, bước mô tả vào hoàn toàn khác cách giải khác Khi ta phải mô tả rõ cách thức số liệu ghi file Thí dụ, ta mô tả liệu đầu vào đầu sau: Dữ liệu đầu vào chuỗi số thực ghi file văn có tên SOLIEU.DAT với quy cách ghi sau: dòng ghi số nguyên số phần tử chuỗi, dòng tiếp sau ghi số thực, số dòng Bước 3: Dùng máy tính tay tính thử với tập đơn giản gồm năm số liệu: thí dụ: Thứ tự Giá trị Trung bình = 23.43 37.43 34.91 28.37 30.62 30.95 Tập số liệu kết dùng để kiểm tra bước Bước 4: Trong bước ta khái quát lại thao tác cần làm bước Tuần tự thao tác để dẫn đến giải toán thuật giải hay thuật toán (algorithm) Ta mô tả từ đầu đến cuối trình giải Chia trình thành số khối liệt kê khối Sau chương trình máy tính thực khối chia Trong khối ta lại chi tiết hóa thêm đến mức chuyển thành lệnh máy tính Vậy áp dụng hai phương pháp: phân khối chi tiết hoá khối Với toán xét, trường hợp liệu đầu vào cần nhập từ bàn phím, ta chia thành ba khối: - Nhập giá trị số lấy tổng chúng - Chia tổng cho số giá trị - In trị số trung bình Cụ thể hoá khối dẫn tới giả trình chương trình sau: Cho tổng giá trị không Cho số số liệu vào không Nhập vào giá trị kiểm tra chừng giá trị nhập vào khác số 0.0 thì: - Cộng thêm giá trị vào tổng - Cộng thêm vào số số liệu Chia tổng cho số số liệu để giá trị trung bình In giá trị trung bình Vì thuật giải mô tả chi tiết, ta chuyển thuật giải thành chương trình sau: PROGRAM TGTTB INTEGER DEM REAL X, TONG, TB TONG = 0.0 DEM = READ*, X IF (X NE 0.0) THEN TONG = TONG + X DEM = DEM + GOTO END IF TB = TONG / REAL(DEM) PRINT 6, TB FORMAT (1X, 'TRUNG BINH BANG ' , F6.2) STOP END Bước 5: Trong bước ta thử chạy chương trình viết với tập số liệu thử cách tính tay mục Đầu hình máy tính phải sau: TRUNG BINH BANG 30.95 Ngoài ra, ta chạy thử với số tập số liệu khác để tin vào tính đắn lôgic hoàn hảo chương trình xây dựng Những khái niệm thuật giải giả trình có ý nghĩa quan trọng Cách giải, phương pháp giải toán thuật giải Các toán khoa học kĩ thuật thực máy tính thường có thuật giải phương pháp toán học khoa học chuyên ngành mà người lập trình biết Một số nhiệm vụ, toán khác có cách giải xuất phát từ kinh nghiệm thực tế, từ cách suy nghĩ lôgic thường ngày Thí dụ, giải phương trình bậc hai a x + bx + c = máy tính, ta tính giá trị biệt thức Δ Sau tùy giá trị Δ là: Δ < phương trình vô nghiệm, Δ = phương trình có nghiệm kép Δ > phương trình có hai nghiệm riêng biệt mà đưa thông báo kết Trong thí dụ này, thuật toán phương pháp quen thuộc mà học đại số Một thí dụ khác: Có danh sách sinh viên với điểm môn thi Sắp xếp lại danh sách cho người có điểm thi cao dòng Ta làm sau: Tạm thời xem người thứ người đứng đầu danh sách Dùng ngón tay trỏ dõi theo người lại, kể từ người thứ hai hết danh sách, có điểm thi cao chuyển người lên đầu danh sách người đầu danh sách chuyển xuống chỗ người vừa thay Kết ta danh sách với người có điểm thi cao dòng đầu Nhưng từ dòng thứ hai đến dòng cuối danh sách thứ tự lộn xộn Bây ta việc xếp lại từ dòng thứ hai trở Ta theo dõi từ người thứ ba người cuối cùng, có điểm thi cao đưa lên dòng thứ hai người dòng thứ hai bị đưa xuống dòng người vừa thay Kết người dòng thứ hai danh sách người có điểm thi cao thứ nhì Nhưng từ dòng thứ ba đến cuối danh sách lộn xộn Tiếp tục, ta phải xếp lại danh sách kể từ dòng thứ ba theo cách Lặp lại công việc dòng trước dòng cuối cùng, ta danh sách hoàn chỉnh xếp theo thứ tự giảm dần điểm thi Ta thấy, trường hợp thuật giải toán cách mà thường làm thực tế đời sống phải xếp lại danh sách theo thứ tự không dùng máy tính Và cách làm “bằng tay” áp dụng làm thuật toán cho loại toán xếp máy tính Chúng giới thiệu chi tiết hai thí dụ vừa cốt để sinh viên ý thức tư thuật giải, suy nghĩ cách giải bước quan trọng bắt tay vào xây dựng chương trình máy tính Có xác định thuật giải nói đến việc lập chương trình để giải toán máy tính Còn giả trình giống lời dẫn phương pháp, cách giải cho thực bước thuật giải toán để dẫn tới kết Chỉ định ERR tuỳ chọn có giá trị để xử lý lỗi Nếu lỗi xảy thực lệnh OPEN hay lệnh có chứa định chương trình chuyển điều khiển tới lệnh có nhãn ghi định ERR thay tạo lỗi thực chương trình Chỉ định ERR dùng với lệnh READ WRITE • Lệnh CLOSE lệnh thực hiện, ngắt file ngoại khỏi chương trình Dạng tổng quát sau: chuyển vị trí đọc ngược lại phía trước ghi file • Lệnh ENDFILE ENDFILE (UNIT = Biểu thức nguyên, * IOSTAT = Biến nguyên, * ERR = Nhãn lệnh điều khiển) ghi vào file ghi kết thúc file file tạo CLOSE (UNIT = Biểu thức nguyên, * STATUS = Biểu thức ký tự, 11.3 Các file truy cập trực tiếp (Direct-Access Files) * IOSTAT = Biến nguyên, * ERR = Nhãn lệnh chuyển điều khiển) Các ghi file truy cập trực tiếp truy cập không theo cách tuần tự, mà theo thứ tự định chương trình Khi file trực tiếp mở, định ACCESS lệnh OPEN phải đặt ‘DIRECT’ độ dài ghi phải cho với định RECL Các lệnh READ WRITE phải chứa định REC để cung cấp số hiệu ghi cần truy cập Lệnh CLOSE định tuỳ chọn Chỉ định STATUS lệnh CLOSE có giá trị ‘KEEP’ có nghĩa file giữ lại, ‘DELETE’ có nghĩa file không cần nên xóa • Lệnh REWIND REWIND (UNIT = Biểu thức nguyên, * IOSTAT = Biến nguyên, * ERR = Nhãn lệnh điều khiển) Dạng tổng quát lệnh READ WRITE với file truy cập trực tiếp sau: READ (Số hiệu file, nhãn lệnh FORMAT, * dùng để chuyển vị trí ghi thứ file • Lệnh BACKSPACE BACKSPACE (UNIT = Biểu thức nguyên, * IOSTAT = Biến nguyên, * ERR = Nhãn lệnh điều khiển) REC = Biểu thứ nguyên) Danh sách biến WRITE (Số hiệu file, nhãn lệnh FORMAT, * REC = Biểu thức nguyên) Danh sách biến Biểu thức nguyên định REC dùng để số hiệu ghi cần xử lý Các định ERR IOSTAT sử dụng với lệnh READ WRITE trực tiếp Tuỳ chọn END dùng với lệnh READ Khi tổ chức file truy cập trực tiếp, người ta thường sử dụng số thứ 97 tự số hiệu phân biệt - phần ghi làm số hiệu ghi Thí dụ số hiệu phân biệt sinh viên trường đại học thường bắt đầu 00001 đến 00002 Do thông tin sinh viên số 00210 lưu ghi 210 Đôi thực số tính toán với trường ghi để nhận số hiệu Bảng 11.1 Các định truy vấn lệnh INQUIRE Kiểu biến Giá trị truy vấn file FILE Giá trị truy vấn đơn vị file UNIT ACCESS = CHARACTER 'SEQUENTIAL' 'DIRECT' 'SEQUENTIAL' 'DIRECT' BLANK = CHARACTER 'NULL' 'ZERO' DIRECT = CHARACTER 'YES' 'NO' 'NULL' 'ZERO' _ ERR = INTEGER Số hiệu lệnh xử lý lỗi Số hiệu lệnh xử lý lỗi EXIST = LOGICAL TRUE .FALSE .TRUE .FALSE FORM = CHARACTER FORMATTED = CHARACTER IOSTAT = INTEGER NAME = CHARACTER − NAMED + = LOGICAL _ INQUIRE (FILE = biểu thức ký tự, danh sách định truy vấn) NEXTREC = INTEGER INQUIRE (UNIT = biểu thức nguyên, danh sách định truy vấn) NUMBER + = INTEGER File truy cập trực tiếp thường tạo cách ghi thông tin vào cách tuần tự, với ghi bắt đầu tăng lên lần có ghi viết vào File xử lý theo thứ tự cách thay đổi số hiệu ghi từ đến tổng số tất ghi Tuy nhiên, ưu điểm file trực tiếp thể rõ muốn cập nhật thông tin số ghi file Thay đọc ghi cách tuần tự, tìm ghi mà ta muốn cập nhật, ta cần định số hiệu ghi ghi tự động xử lý Khi cập nhật thông tin xong, ta ghi thông tin vào ghi Nếu lệnh READ ta định số hiệu ghi mà ghi không tồn xảy lỗi Để khôi phục lỗi, định ERR cần phải có mặt lệnh READ Chỉ định truy vấn 'FORMATTED' 'FORMATTED' 'UNFORMATTED' 'UNFORMATTED' 'YES' 'NO' 'UNKNOWN' − Mã lỗi Mã lỗi 11.4 Lệnh truy vấn INQUIRE Lệnh INQUIRE có hai dạng: Lệnh lệnh thực hiện, truy vấn thông tin file hay số hiệu file Bảng 9.1 liệt kê định truy vấn Thí dụ: INQUIRE (FILE = 'TSDATA', SEQUENTIAL = TRALOI) INQUIRE (UNIT = 12, SEQUENTIAL = TRALOI) Số hiệu ghi file truy cập trực tiếp Đơn vị file Số hiệu ghi file truy cập trực tiếp TRUE .FALSE OPEND = LOGICAL TRUE .FALSE RECL = INTEGER Độ dài ghi SEQUENTIAL = CHARACTER UNFORMATTED = CHARACTER Tên file file file loại scratch TRUE .FALSE 'YES' 'NO' 'UNKNOWN' 'YES' 'NO' 'UNKNOWN' − Độ dài ghi − − 98 Thí dụ 36: Sự tương tác người dùng chương trình Giả sử chương trình yêu cầu người dùng gõ tên file liệu để mở làm việc chương trình Trường hợp file không tồn tại, chương trình kết thúc lỗi thực Nếu ta dùng lệnh INQUIRE, chương trình xác định file có tồn không không tồn tại, chương trình nhắc người dùng gõ tên file khác Các lệnh sau thực tương tác này: CHARACTER *70 TENFIL, TIT LOGICAL XONG, OK, CO XONG = FALSE OK = FALSE PRINT *, 'NHAP TEN FILE' READ *, TENFIL IF (.NOT XONG) THEN INQUIRE (FILE = TENFIL, EXIST = CO) IF (.NOT CO) THEN PRINT *, 'FILE KHONG TON TAI' PRINT *, 'NHAP TEN KHAC HOAC GO THOI' READ *, TENFIL IF (TENFIL EQ 'THOI') XONG = TRUE ELSE XONG = TRUE OK = TRUE ENDIF GOTO ENDIF IF (OK) THEN OPEN (UNIT = 10, FILE = TENFIL, STATUS = 'OLD') END IF END Bài tập Viết chương trình đếm in số ghi file DATA1 DATA2 Giả sử file file ghi chứa hai giá trị thực với format sau: FORMAT (F6.2, 1X, F6.2) Nếu lỗi xảy mở file, in thông báo lỗi thay in số ghi File TEM60.JAN lưu trường ba chiều nhiệt độ nước biển Đông tháng Giêng độ phân giải 1o kinh vĩ có quy cách ghi sau: Dòng gồm số nguyên cách kinh độ mép trái, kinh độ mép phải, vĩ độ mép trên, vĩ độ mép miền không gian số tầng sâu Dòng thứ hai ghi độ sâu (số nguyên) tầng Sau bảng giá trị nhiệt độ (số thực cách nhau) với số cột số điểm nút theo kinh tuyến, số dòng số điểm nút theo vĩ tuyến Các tầng ghi hoàn toàn tương tự Giá trị nhiệt độ khuyết rơi vào vùng đất liền ghi số 99.99 Viết chương trình tính giá trị nhiệt độ nước trung bình toàn biển Đông Với file số liệu tập 2, viết chương trình đọc thông tin file tạo cho điểm nút thuộc miền tính file đặt tên theo quy tắc sau: bắt đầu chữ K, sau đến chữ số kinh độ điểm, sau chữ V chữ số vĩ độ điểm, đuôi file ‘.BLN’ Trong file có 99 quy cách ghi sau, dòng có số nguyên số tầng quan trắc thực tế điểm, dấu cách chữ số Sau liệt kê liên tiếp giá trị nhiệt độ tầng sâu ứng với nhiệt độ với dấu ngược lại Giả sử có file liệu lưu giá trị quan trắc số yếu tố khí tượng thủy văn trạm hải văn, có quy cách ghi sau: - Dòng thứ có hai số nguyên cách dấu trống - Dòng thứ hai ghi tên trạm (không 100 ký tự) - Dòng thứ ba ghi hai số nguyên số dòng liệu (không 5000) số yếu tố quan trắc (không 12) cách dấu trống dạng phương trình hồi quy với tên yếu tố ghi file Gợi ý: Xem phương pháp thiết lập phương trình hồi quy tuyến tính nhiều biến phụ lục File HESOA.MAT lưu giá trị hệ số hệ phương trình đại số tuyến tính theo quy cách sau: Dòng thứ có số nguyên số phương trình Các dòng tiếp sau ghi giá trị hệ số, kể hệ số tự ứng với phương trình, phương trình dòng, hệ số ghi với định dạng F8.4, thí dụ: 1.1161 0.1254 0.1397 0.1490 1.5471 - Dòng thứ tư ghi tên yếu tố quan trắc, tên với định dạng A8 0.1582 1.1675 0.1768 0.1871 1.6471 - Dòng thứ ghi đơn vị đo yếu tố quan trắc, với định dạng A8 0.2368 0.2471 0.2568 1.2671 1.8471 - Mỗi dòng dòng tiếp sau ghi giá trị quan trắc yếu tố, giá trị ghi với định dạng F8.2 Viết chương trình cho phép nhập tên file từ bàn phím, đọc liệu lập phương trình hồi quy biến thứ (biến phụ thuộc) biến thứ hai (biến độc lập) In kết hình theo quy cách sau: giả sử tên biến thứ Tw, biến thứ hai Ta, phương trình phải viết có dạng: Tw = 0.915 Ta + 1.237 (Ghi chú: xem công thức phụ lục 3) 0.1968 0.2071 1.2168 0.2271 1.7471 Viết chương trình đọc file giải hệ phương trình phương pháp loại biến Gauss Kết in hình gồm: viết lại hệ phương trình, sau cách dòng ghi nghiệm dòng cuối cùng, thí dụ, ứng với ma trận hệ số phải có kết sau: 1.1161X1 + 0.1254X2 + 0.1397X3 + 0.1490X4 = 1.5471 0.1582X1 + 1.1675X2 + 0.1768X3 + 0.1871X4 = 1.6471 0.1968X1 + 0.2071X2 + 1.2168X3 + 0.2271X4 = 1.7471 0.2368X1 + 0.2471X2 + 0.2568X3 + 1.2671X4 = 1.8471 Cải tiến chương trình tập phép người dùng tuỳ ý định biến phụ thuộc biến độc lập từ bàn phím 1.04059 0.98697 0.93505 0.88130 Gợi ý: Xem phương pháp giải hệ phương trình đại số tuyến tính theo sơ đồ loại biến Gauss phụ lục Với file liệu mô tả tập 4, lập chương trình tính phương trình hồi quy nhiều biến yếu tố quan trắc thứ (biến phụ thuộc) yếu tố quan trắc 2, 3, 6, 8, In kết lên hình File HESOAB.MAT lưu giá trị hệ số hệ phương trình đại số tuyến tính theo quy cách mô tả tập Giả sử 100 ma trận a ij = a ji hệ số A = [ j ] ma trận đối xứng, tức (i, j = 1, 2, , n) Hãy viết chương trình đọc file hệ số giải hệ phương trình In kết theo quy cách tập Gợi ý: Trường hợp ma trận hệ số A ma trận đối xứng, nên dùng phương pháp bậc hai để giải hệ phương trình đại số tuyến tính (phụ lục 2) Tài liệu tham khảo Etter D M Structured Fortran 77 for engineers and scientists Fourth edition The Benjamin/Cummings Publishing Co., Inc California, 1993, 616 p Koffman Elliot B., Friedman Frank L Fortran with engineering applications Fifth Edition Addison-Wesley Publishing Co Massachusetts- , 1993, 664 p N V Kopchenova and I.A Maron Computational Mathematics Worked examples and problems with elements of theory Mir Publishers, Moscow, 1975 Васильевич О Б Современный Фортран “Диалог-Мифи” Москва, 1998, 397 c Васильевич О Б Фортран для профессионалов: Математическая библиотека IMSL “Диалог -Мифи”, Москва, 2000, 448 c Тюрин Ю Н., Макаров А А Статистический анализ данных на компьютере “ИНФРА” - Москва, 1998, 528 с 101 Tên hàm Phụ lục 1: Bảng hàm chuẩn FORTRAN Trong bảng hàm chuẩn đây, tên đối số kiểu liệu theo quy ước sau: Đối số X CHX DX CX LX IX GX → → → → → → → Tên hàm Kiểu liệu thực xâu ký tự độ xác đôi phức lôgic nguyên tự sinh (in đậm, nghiêng) Kiểu hàm Định nghĩa Kiểu hàm Định nghĩa X EXP (X) Thực e DEXP (DX) Độ xác đôi e DX CEXP (CX) Phức e CX LOG (GX) Kiểu theo GX log e GX ALOG (X) Thực log e X DOG (GX) Độ xác đôi log e DX CLOG (CX) Phức log e CX LOG10 (GX) Kiểu theo GX log10 GX ALOG10 (X) Thực log10 X DLOG10 (DX) Độ xác đôi log10 DX REA L(GX) FLOAT (IX) SNGL (DX) Thực Thực Thực Chuyển GX thành giá trị thực Chuyển IX thành giá trị thực Chuyển DX thành độ xác đơn ANINT(X) Thực Làm tròn tới số thực gần DNINT(DX) Độ xác đôi Làm tròn tới số thực gần NINT(X) Nguyên Làm tròn tới số nguyên gần IDNINT (DX) Nguyên Làm tròn tới số nguyên gần AINT (X) Thực Cắt phần thập phân X DINT (DX) Độ xác đôi Cắt phần thập phân DX Cắt GX thành số nguyên SQRT(X) Thực X DSQRT (DX) Độ xác đôi DX INT (GX) Nguyên CSQRT (CX) Phức CX IFIX (X) Nguyên Cắt X thành số nguyên IDINT (DX) Nguyên Cắt DX thành số nguyên ABS (X) Thực X IABS (IX) Nguyên IX SIGN (X, Y) Thực Gán dấu Y cho X DABS (DX) Độ xác đôi DX ISIGN (IX, IY) Nguyên Gán dấu IY cho IX CABS (CX) Phức CX DSIGN (DX, DY) Độ xác đôi Gán dấu DY cho DX 102 Tên hàm Kiểu hàm Định nghĩa MOD (IX,IY) Nguyên Lấy số dư phép chia IX / IY AMOD (X,Y) Thực Lấy số dư phép chia X / Y DMOD (DX,DY) Độ xác đôi Lấy số dư phép chia DX / DY DIM (X,Y) Thực X − (cực tiểu X Y) IDIM (IX,IY) Nguyên DDIM (DX,DY) Tên hàm Kiểu hàm Định nghĩa ASIN (X) Thực arcsin X DASIN (X) Độ xác đôi arcsin DX IX − (cực tiểu IX IY) ACOS (X) Thực arccos X Độ xác đôi DX − (cực tiểu DX DY) DACOS (DX) Độ xác đôi arccos DX MAX (GX,GY, ) Kiểu theo GX, GY, Cực đại (GX, GY, ) ATAN (X) Thực arctgX MAX0 (IX,IY, ) Nguyên Cực đại (IX, IY, ) DATAN (DX) Độ xác đôi arctgDX AMAX1 (X,Y, ) Thực Cực đại (X, Y, ) DMAX1 (DX,DY, ) Độ xác đôi Cực đại (DX, DY, ) ATAN2 (X,Y) Thực arctg ( X / Y ) AMAX0 (IX,IY, ) Thực Thực, cực đại (IX, IY, ) DATAN2 (DX,DY) Độ xác đôi arctg ( DX / DY ) MAX1 (X,Y, ) Nguyên Cực đại (X, Y, ) SINH (X) Thực shX MIN (GX,GY, ) Kiểu theo GX,GY, Cực tiểu (GX, GY, ) DSINH (DX) Độ xác đôi shDX MIN0 (IX,IY, ) Nguyên Cực tiểu (IX, IY, ) COSH (X) Thực AMIN1 (X,Y, ) Thực Cực tiểu (X, Y, ) chX DMIN1 (DX,DY, ) Độ xác đôi Cực tiểu (DX, DY, ) DCOSH (DX) Độ xác đôi chDX AMIN0 (IX,IY, ) Thực Cực tiểu (IX, IY, ) TANH (X) Thực th X MIN1 (X,Y, ) Nguyên Cực tiểu (X, Y, ) DTANH (DX) Độ xác đôi thDX SIN (X) Thực sin X (X - rađian) DPROD (X, Y) Độ xác đôi Tích X Y DBLE (X) Độ xác đôi Chuyển X thành độ xác đôi CMPLX (X) Phức CMPLX (X, Y) Phức AIMAG (CX) Thực Phần ảo CX DSIN (DX) Độ xác đôi sin DX (DX - rađian) CSIN (CX) Phức sin CX COS (X) Thực cos X (X - rađian) DCOS (DX) Độ xác đôi cos DX (DX - rađian) REAL (CX) Thực Phần thực CX CCOS (CX) Phức cos CX CONJG (CX) Phức Liên hợp CX, a − bi TAN (X) Thực tgX (X - rađian) LEN (CHX) Nguyên Độ dài xâu ký tự CHX tgDX (DX - rađian) INDEX (CHX, CHY) Nguyên Vị trí xâu CHY xâu CHX DTAN (DX) Độ xác đôi X + 0i X + Yi 103 Tên hàm Kiểu hàm Định nghĩa CHAR (IX) Ký tự Ký tự ứng với vị trị thứ IX chuỗi so sánh ICHAR (CHX) Nguyên Vị trí ký tự CHX chuỗi so sánh LGE (CHX, CHY) Lôgic Giá trị biểu thức (CHX lớn CHY từ vựng) LGT (CHX, CHY) Lôgic Giá trị biểu thức (CHX lớn CHY từ vựng) LLE (CHX, CHY) Lôgic Giá trị biểu thức (CHX nhỏ CHY từ vựng) LLT (CHX, CHY) Lôgic Giá trị biểu thức (CHX nhỏ CHY từ vựng) Phụ lục 2: Phương pháp Gauss giải hệ phương trình đại số tuyến tính a11x1 + a12 x2 + + a1n xn = b1 a21x1 + a22 x2 + + a2n xn = b2 + an2 x2 + ann xn = bn an1x1 + hay Ax=b    A = aij =     ( ) a11 a21 a12 a22 an1 an2       (*)  a1n   b1      a2 n   b2  x =  b=   ;  ;       b  ann    n  x1   x2    xn  Nếu ma trận A không suy biến, tức det A = a1n a2 n a11 a21 a12 a22 an1 an ann ≠ 104 hệ (*) có nghiệm Có thể tính nghiệm theo công thức Cramer xi = det Ai , det A Ai − ma trận A với cột i bị thay cột số hạng tự b Phương pháp loại biến Gauss giải hệ phương trình đại số tuyến tính: (3) aij(1) = aij − ai1b1 j (i = 2, 3, 4; j = 2, 3, 4, 5) (4) (1) Bây chia phương trình thứ hệ (3) cho phần tử a22 ta có: Thí dụ cho hệ a11 x1 + a12 x2 + a13 x3 + a14 x4 = a15   a21 x1 + a22 x2 + a23 x3 + a24 x4 = a25   a31 x1 + a32 x2 + a33 x3 + a34 x4 = a35  a41 x1 + a42 x2 + a43 x3 + a44 x4 = a45  (1) (1) (1) x2 + b23 x3 + b24 x4 = b25 , (5) (1) b2(1j) Giả sử phần tử a11 ≠ Chia phương trình thứ cho a11 , ta có = a2(1j) (1) a22 ( j = 3, , 5) Bằng cách tương tự loại x1 , ta loại x2 khỏi phương trình thứ ba thứ tư, ta có: x1 + b12 x2 + b13 x3 + b14 x4 = b15 , với (1) (1) (1) (1)  a22 x2 + a23 x3 + a24 x4 = a25  (1) (1) (1) (1) a32 x2 + a33 x3 + a34 x4 = a35   (1) (1) (1) (1) a42 x2 + a43 x3 + a44 x4 = a45  b1 j = a1 j a11 ( 2) ( 2) ( 2)  a33 x3 + a34 x4 = a35   ( 2) ( 2) ( 2)  a43 x3 + a44 x4 = a45 (2) ( j = 2, 3, 4, 5) Dùng phương trình (2) để loại ẩn x1 khỏi phương trình số 2, 3, hệ (1): Muốn vậy, nhân phương trình (2) với a 21 , a31 , a 41 lấy phương trình số 2, 3, trừ tích tương ứng vừa nhận được, ta có ba phương trình: (6) aij( 2) = aij(1) − ai(12) b2(1j) (i = 3, 4; j = 3, 4, 5) (7) Chia phương trình thứ hệ (6) cho phần tử a33( ) , ta có: ( 2) ( 2) x3 + b34 x4 = b35 , (8) 105 b3( 2j) = a3( 2j) ( j = 4, 5) ( 2) a33 Sau nhờ (8) ta loại x khỏi phương trình thứ hai hệ (6), nhận được: ( 3) ( 3) a44 x4 = a45 Nếu phần tử hệ không cần thay đổi chỗ phương trình hệ tương ứng để làm cho phần tử khác không Số phép tính số học N cần thực phương pháp Gauss 2n (n + 1) (n + 2) N= + n (n − 1) Vậy số phép tính số học xấp xỉ tỷ lệ với luỹ thừa bậc ba số ẩn ( 2) ( 2) a 4(3j) = a4( 2j) − a43 b3 j ( j = 4, 5) (9) Như ta đưa hệ (1) hệ tương đương có ma trận hệ số ma trận tam giác x1 + b12 x + b13 x3 + b14 x = b15   x + b23(1) x3 + b24(1) x = b25(1)   x3 + b34( ) x = b35( )  ( 3) (3)  a 44 x = a 45  Phương pháp bậc giải hệ phương trình đại số tuyến tính trường hợp ma trận A ma trận đối xứng Phương pháp thuận lợi trường hợp hệ phương trình (12) Ax=b (10) có ma trận A ma trận đối xứng, điều thường gặp toán kỹ thuật Theo phương pháp ma trận A biểu diễn thành tích hai ma trận tam giác chuyển vị A = T′T (13) Từ (10) xác định ẩn x4 = a x3 = b x2 = b (1) 25 (2) 35 − x4b (1 ) 24 (3) 45 a − x4b (3) 44 (2) 34 − x3b (1 ) 23 x1 = b15 − x b14 − x b13 − x b12        (11) Vậy thủ tục giải hệ phương trình đại số tuyến tính bậc quy hai trình:  t11  0 T =  0  t12 t1n   t22 t2 n  ,   tnn   t11  t T ′ =  12  t  1n t22 t2 n      tnn  Nhân hai ma trận T ′ T cho tích ma trận A , ta suy cá công thức tính phần tử tij : a) Quá trình thuận: đưa hệ (1) dạng tam giác (10); b) Quá trình nghịch: tìm ẩn theo công thức (11) 106 t11 = a11 , t ii = a ii − a ij − a1 j t1 j = t11 i −1  t ki2 ( j > 1) (1 < i ≤ n ) (14) k =1 Vậy trình thuận gồm tính phần tử ma trận T theo công thức (14) Quá trình nghịch tính ma trận cột y x theo công thức (18), (19) i −1  t ki t kj t ij = k =1 t ij = (i < j ) t ii i> j Như ta thay hệ (12) hai hệ tương đương T' y = b, 15) Tx=y hay t11 y1 = b1       (16) t11 x1 + t12 x2 + + t1n xn = y1   t22 x2 + + t2 n xn = y2    tnn xn = yn  (17) t12 y1 + t22 y2 = b2 t1n y1 + t2 n y2 + + tnn yn = bn Từ suy công thức tính: i−1 y1 = b1 , t11 y xn = n , tnn yi = bi −  tki yk k=1 tii yi − xi = (i > 1) (18) (i < n) (19) n  tik xk k=i+1 tii 107 a= n n n x y k k =1 k =1 n k − n  xk y k k =1 n k =1 Phụ lục 3: Phương pháp bình phương nhỏ phân tích hồi quy k =1 x x k =1 n n n b= (20) ( x k ) − n  x k2 k k =1 n k y k −  x k2 k =1 n n y k =1 ( x k ) − n  x k2 k =1 k , (21) k =1 hay hệ số b tính theo công thức: n Mô hình tuyến tính b= Mô hình hồi quy tuyến tính có dạng: 1 y k= k −a n 1 x k= k n (22) Mô hình đa thức y = f ( x) = ax + b Theo phương pháp bình phương nhỏ nhất, hệ số hồi quy a b phương trình tìm cho tổng bình phương sai số n E =  ( y k − axk − b) Phương pháp bình phương nhỏ áp dụng để tính hệ số hồi quy đa thức dạng f ( x) = a + a1 x + a x + + a n x m k =1 cực tiểu Lần lượt lấy đạo hàm biểu thức theo a , b cho không, ta hệ phương trình sau để xác định a b : n n n n n k =1 k =1 k =1 k =1 k =1 a  xk2 + b xk =  xk y k , a  xk + b n =  y k thí dụ mô hình bậc hai f ( x) = a + a1 x + a x Lấy đạo hàm tổng sai số theo hệ số cho không ta có hệ sau để xác định hệ số hồi quy bậc hai: Vậy hệ số hồi quy tính theo công thức sau: 108   a2    a2    a2  (29) n n n k=1 k=1 n n n n k=1 k=1 k=1 k=1 n n n n k=1 k=1 k=1 k=1  xk2 + a1  xk + a0 n =  yk ta có k=1  xk3 + a1  xk2 + a0  xk =  xk yk (23)  xk4 + a1  xk3 + a0  xk2 =  xk2 yk ~ g ( x ) = a~ x +b (30) ~ Với phương trình (30) hệ số hồi quy a b tính theo công thức Về nguyên tắc ta sử dụng phương pháp để tìm phương trình đa thức bậc Tuy nhiên thực tế phương pháp trở thành không ổn định bậc đa thức lớn sai số làm tròn số máy tính a= n n k =1 k =1 Phương pháp bình phương nhỏ áp dụng cho hàm bất kỳ, hệ phương trình để tìm hệ số phi tuyến, giải cách sử dụng phương trình tuyến tính Tuy nhiên, số trường hợp, hàm phi tuyến chuyển thành hàm tuyến tính Thí dụ hàm tuyến tính hoá f ( x) = b x a (24) Nếu lấy loga hai vế phương trình này, ta có ln f ( x) = a ln x + ln b ~ b= (31) xk ) − n  ~ xk2 ( ~ n n n Mô hình phi tuyến n n n ~ xk  ~ yk − n  ~ xk ~ yk  k =1 k =1 k =1 n  ~x  ~x ~y −  ~x  ~y k =1 k k =1 n k k k =1 n k k =1 xk ) − n  ~ xk2 ( ~ k =1 k (32) k =1 Vậy công việc tính toán gồm: chuyển đổi giá trị số liệu x k y k theo công thức (28), (29), tính tổng, kết vào phương ~ trình (31), (32) để tìm a b Giải phương trình (27) b đặt vào phương trình (24) (25) Nếu ký hiệu g ( x) = ln f ( x) (26) ~ b = ln b (27) ~ x = ln x y = ln y (28) ~ 109 Phụ lục 4: Sơ đồ ứng dụng phương pháp hồi quy nhiều biến  n   [x1 ]  [x ]     [x m ] [x1 ] [x2 ] [x1 x1 ] [x2 x1 ] [x1 x2 ] [x2 x2 ] [x1 xm ] [x2 xm ] [xm ]   [xm x1 ]  [xm x2 ]   [xm xm ]  a0   b0       a1   b1   a  =  b2               a m   bm  (34) n với dấu [ ] ký hiệu phép lấy tổng  Giả sử có n quan trắc biến phụ thuộc y biến độc lập x1 , x , , x m Phương trình hồi quy thiết lập sau: y = a + a1 x1 + a x + + a m x m Các hệ số hồi quy (i = 1, , m) chọn cho thoả mãn n δ =  ( y − a − a1 x1 − a x − − a m x m )2 = i =1 Lần lượt lấy đạo hàm biểu thức theo a0 , a1 , a , , a m cho đạo hàm không, ta có hệ m + phương trình để xác định hệ số a na [x1 ]a [x ]a [x m ]a + + + [x1 ]a1 [x1 x1 ]a1 [x1 x ]a1 + [x1 x m ]a1 + + + [x ]a [x x1 ]a [x x ]a + [x x m ]a + + + + + + + + [x m ]a m [x m x1 ]a m [x m x ]a m = = [x m x m ]a m = [ yx m ] = [y ] [yx1 ] [yx ] (33) Hệ phương trình gọi hệ phương trình tắc để xác định hệ số hồi quy Dưới dạng ma trận ta viết hệ sau: Để tìm hệ số hồi quy a0 , a1 , a2 , , am ta phải giải hệ phương trình tắc theo phương pháp loại biến Gauss phương pháp bậc hai mô tả phụ lục ma trận hệ số phương trình tắc ma trận đối xứng Dưới dẫn hai thủ tục hỗ trợ cho việc lập hệ phương trình đại số tuyến tính chuẩn tắc (34) − SUBROUTINE LHPTCT giải hệ phương trình phương pháp loại biến Gauss − SUBROUTINE GAUSS SUBROUTINE LHPTCT (Y, X, A, N, M) INTEGER 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 (0, M + 1) = 0.0 DO K = 1, N A (0, M + 1) = A (0, M + 1) + Y (K) END DO 110 DO I = 1, M A (I, M + 1) = 0.0 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 (I, J) + X (K, I) * X (K, J) END DO ENDDO ENDDO DO I = 1, M DO J = 0, I - A (I, J) = A (J, I) END DO END DO RETURN END SUBROUTINE GAUSS (M, A, X) INTEGER M REAL A (0 : 50, : 51), X (0 : 50) DO I = 0, M - K=I AMAX = ABS (A (K, K)) DO J = I + 1, M R = ABS (A (J, I)) IF (AMAX LT R) THEN AMAX = R K=J END IF END DO IF (K NE I) THEN DO J = I, M + AMAX = A (I, J) A (I, J) =A (K, J) A (K, J) = AMAX END DO END IF DO J = I + 1, M + 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 END DO END DO X (M) = A (M, M + 1) / A (M, M) DO 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 111 [...]... trng trong ngụn ng lp trỡnh u mc ny ó núi mt tờn thc cht l ký hiu quy c ca mt 14 a ch trong b nh ca mỏy tớnh lu giỏ tr Lnh khai bỏo bin mi ch t tờn cho mt a ch trong b nh v quy nh trong a ch ú cú th lu gi d liu kiu gỡ Cũn c th trong ụ nh ú ó cú cha giỏ tr cha hay cha giỏ tr bng bao nhiờu thỡ tựy thuc vo cỏc lnh thc hin trong chng trỡnh, ti tng on ca chng trỡnh iu ny ging nh ta quy c nh ra mt ngn trong. .. s liu 8) i vi cỏc giỏ tr lụgic trong Fortran dựng c t L w , trong ú w s v trớ ginh cho d liu Thớ d theo lnh 16 FORMAT (L5) nu ti mt trong 5 v trớ ginh cho bin cú ch T, thỡ giỏ tr TRUE s c gỏn vo bin lụgic trong lnh c Khi xut, ch cỏi T hoc F (tng ng vi TRUE hoc FALSE s in ra ti v trớ th 5, tc v trớ cui cựng bờn phi trong 5 v trớ 9) Chỳng ta cú th s dng mt s c im b sung trong cỏch vit cỏc c t ca lnh... , 9, nhng phi bt u bng ch cỏi Trong mt chng trỡnh cỏc tờn bin khụng c trựng nhau Trong cỏc phiờn bn Fortran hin nay, dựng lm tờn khụng phõn bit ch cỏi hoa v ch cỏi thng Ngoi ra, cũn mt vi ký t khỏc cng cú th dựng cu to tờn Phiờn bn Fortran 90 cho phộp t tờn vi s ký t di hn 6 v trong tờn cú th cú mt s ký t khỏc na Tuy nhiờn, sinh viờn nờn tp thúi quen t tờn gn gng theo Fortran chun, bi vỡ tp hp 6 ký... Vit gi trỡnh cho bi toỏn ú 11 vo dng, hay kiu (kind) khai bỏo ca s thc Chng 2 - Nhng yu t c bn ca Fortran 2.1 D liu v cỏch biu din d liu trong Fortran Fortran cú th thao tỏc vi sỏu loi (kiu) d liu c bn thng gp trong thc t l: cỏc s nguyờn, s thc, s phc, s thc chớnh xỏc gp ụi, cỏc giỏ tr lụgic v d liu vn bn Trong chng ny ta s lm quen vi cỏc d liu kiu s nguyờn, s thc, giỏ tr lụgic v vn bn (chui ký t) S... quan trng trong Fortran Sau ny ta s thy s 16 dng mng trong ngụn ng lp trỡnh cú th giỳp vit nhng on chng trỡnh rt ngn gn, trong sỏng c bit trong cỏc vũng lp, ch bng vi dũng lnh cú th khin mỏy tớnh thc hin nhiu triu phộp tớnh s hc 2.3.2 Mụ t mng Mụ t mng thc hin ngay u chng trỡnh v cha thụng tin v tờn, chiu v kớch thc mng vi toỏn t DIMENSION: DIMENSION A (n1 , n2 , , n ), MAT (m1 , m2 , , mk ) trong ú... cú th lu trong mt bin tu thuc vo chớnh h mỏy tớnh, mt phộp tớnh cú th a ra kt qu quỏ ln hoc quỏ bộ Xột cỏc thớ d sau: 1) X = 0.25E20 2) A = 0.25E20 Y = 0.10E30 B = 0.10E+20 Z=X*Y C=A/B Kt qu s ca phộp nhõn trong thớ d 1 bng 0.25E49, rừ rng l cú th quỏ ln, khụng lu gi c trong mỏy tớnh vi bc cc i l 38, cũn kt qu s ca phộp chia trong thớ d 2 bng 0.25E49 s quỏ bộ Trong nhng trng hp ny cỏc lnh Fortran hon... Tt c nhng i lng ú phi c lu gi trong mỏy tớnh Nhng i lng khụng i trong sut quỏ trỡnh thc hin ca chng trỡnh gi l cỏc hng, cũn nhng i lng cú th nhn nhng giỏ tr khỏc nhau gi l cỏc bin Vi mi hng hoc bin, trong b nh mỏy tớnh ginh ra mt a ch lu giỏ tr Tờn chớnh l ký hiu quy c ca a ch ú 2.2.1 Tờn bin v tờn hng Tờn bin trong Fortran chun c biu din bng tp hp t 1 n 6 cỏc ch cỏi trong bng ch cỏi la tinh (26 ch... mng EMONTH, ta vit EMONTH(12) Trong Fortran IV, mt phiờn bn trc õy ca ngụn ng Fortran, cho phộp dựng cỏc mng ti a 7 ch s Chiu ca mng ng vi s ch s, cũn kớch thc ca mng ng vi s phn t cha trong mng 2.3.1 Khỏi nim mng Mng l tp hp cú sp xp ca cỏc i lng c ký hiu bng mt tờn duy nht Cỏc thnh phn ca tp hp gi l nhng phn t mng Mi phn t c xỏc nh theo tờn ca mng v v trớ ca phn t ú trong mng, tc tr s ca cỏc ch s... liu v mt s lnh khỏc Cui cựng chng trỡnh cú lnh STOP v END Trong thc t cú th cú nhng chng trỡnh ln hn rt nhiu, gm hng nghỡn dũng lnh v cú cu trỳc phc tp Nhng ta vn thy nú cú phn u, phn thõn v phn cui, trong phn thõn chng trỡnh cng ch cú hai nhúm lnh ging nh trong chng trỡnh n gin trờn õy 1.5 Quy cỏch son tho mt chng trỡnh Fortran Cỏc chng trỡnh Fortran c son tho nh mt b son tho (editor) hoc phn mm son... sỏch y hn v cỏc hm chun ca Fortran c dn trong ph lc 1 Khi dựng mt hm chun no ú phi c k li mụ t xem nú tớnh ra giỏ tr gỡ, iu kin ca cỏc i s ra sao Thớ d cỏc hm lng giỏc phi dựng i s l raian, nu ta cho giỏ tr i s l thỡ kt qu tớnh s sai 2.5 Lnh gỏn v cỏc toỏn t s hc 2.5.1 Lnh gỏn Cỏc tớnh toỏn trong Fortran cú th ch nh bng lnh gỏn vi dng tng quỏt nh sau: Tờn bin = Biu thc Trong lnh th nht ta gi giỏ tr

Ngày đăng: 22/11/2016, 15:51

TỪ KHÓA LIÊN QUAN

w