intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Tin học trong tự động hóa thiết kế tàu thủy

Chia sẻ: Dang Huu Tri Tri | Ngày: | Loại File: DOC | Số trang:54

174
lượt xem
34
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Thiết kế thân tàu thủy một số những kiến thức cơ bản nhất về tự động hóa tính toán các yếu tố thủy tĩnh và ổn định của các loại tàu thủy thông dụng. Bài giảng này là một bộ phận của giáo trình về “Tự động hóa thiết kế tàu thủy và công trình nổi “ sẽ ra mắt bạn đọc nay mai.

Chủ đề:
Lưu

Nội dung Text: Tin học trong tự động hóa thiết kế tàu thủy

  1. LỜI GIỚI THIỆU Tập bài giảng về “ Tự động hoá thiết kế tàu thuỷ A1” do PGS.TS. Lê Hồng Bang – Bộ môn Lý thuyết thiết kế tàu thủy khoa Đóng tàu Đại học Hàng hải Việt Nam biên soạn nhằm mục đích trang bị cho các sinh viên hệ chính qui chuyên ngành Thiết kế thân tàu thủy một số những kiến thức cơ bản nhất về tự động hóa tính toán các yếu tố thủy tĩnh và ổn định của các loại tàu thủy thông dụng. Bài giảng này là một bộ phận của giáo trình về “Tự động hóa thiết kế tàu thủy và công trình nổi “ sẽ ra mắt bạn đ ọc nay mai. Tập bài giảng được chia thành 2 phần: Phần I mang tiêu đ ề “ PHƯƠNG PHÁP TÍNH TOÁN". Phần này sẽ giới thiệu việc ứng dụng phương pháp số để giải các bài toán về tự động hóa tính toán các yếu tố thủy tĩnh và ổn định của tàu thủy bao gồm đa th ức n ội suy Lagrange, phương pháp bình phương nhỏ nhất, các phương pháp gần đúng để tính các tích phân xác định. Phần II mang tiêu đề “ HƯỚNG DẪN SỬ DỤNG phần mềm AUTOSHIP”. Do thời lượng của môn học có hạn vì vậy ở phần này người biên soạn chỉ tạm dừng lại ở chổ giới thiệu và hướng dẫn sử dụng 3 module trong 5 module của phần mềm nêu trên bao gồm: AUTOSHIP; AUTOHYDRO và AUTOPOWER. Hai module còn lại là ; AUTOPLATE và AUTOSTRUCTURE sinh viên sẽ tự nghiên cứu áp dụng khi thấy cần thiết bởi lẻ trong phần hai của “Tự động hoá thiết kế tàu thuỷ A2” chúng tôi sẽ tập trung hướng dẫn sử dụng phần mềm SHIPCONSTRUCTOR dành cho tự động thiết kế công nghệ mà trong đó có chứa hai Module có tính năng mạnh hơn AUTOPLATE và AUTOSTRUCTURE trong AUTOSHIP. Riêng Phần II của Tập Bài giảng “Tự động hoá thiết kế tàu thuỷ A1” sẽ được in thành một bộ riêng đủ để các sinh viên và các kỹ s ư cũng như các học viên cao học ngành Kỹ thuật tàu thủy sử dụng một cách có hiệu quả trong quá trình thực hiện các bài toán cụ thể. Để học và nghiên cứu có hiệu quả môn học này người biên soạn mong muồn bạn đọc và các em sinh viên chuyên ngành Thiết kế tàu thủy hãy dành một phần thời gian đ ể ôn lại các kiến thức thuộc chương trình toán cao cấp dành cho kỹ sư, tham khảo các tài liệu nói về phương pháp tính, tĩnh học tàu thủy, động lực học tàu thủy, giáo trình toán ứng dụng trong kỹ thuật .... Người biên soạn xin bày tỏ lòng biết ơn chân thành đối với các ý kiến góp ý để tập bài giảng này sẽ ngày càng hoàn thiện hơn cả về nội dung lẫn phương pháp trình bày. Mọi ý kiến góp ý xin bạn đọc gửi về cho tác giả theo địa chỉ sau: Bộ môn Lý thuyết thiết kế tàu thủy khoa Đóng tàu Đại học Hàng hải hoặc E-Mail: lehbang@hn.vnn.vn. TÁC GIẢ 1
  2. MỤC LỤC Chương , Tên chương, mục Trang mục số Chương 1 NGÔN NGỮ LẬP TRÌNH VÀ TỰ ĐỘNG HOÁ THIẾT KẾ 4 Khái niệm về ngôn ngữ lập trình 1.1 4 Giới thiệu một số ngôn ngữ lập trình điển hình 1.2 4 Chương 2 TỰ ĐỘNG HÓA TÍNH TOÁN CÁC YẾU TỐ THỦY TĨNH 9 VÀ TÍNH CÂN BẰNG-ỔN ĐỊNH CỦA TÀU Phương pháp số dùng trong tự động hoá tính toán các yếu tố 2.1 9 thủy tĩnh và tính cân bằng-ổn định của tàu Đa thức nội suy Lagrange 2.1.1 9 Phương pháp bình phương bé nhất 2.1.2 13 Các phương pháp tính gần đúng tích phân xác định 2.2 15 Đặt bài toán 2.2.1 15 Công thức hình thang 2.2.2 16 Đánh giá sai số 2.2.3 17 Ví dụ 2.2.4 17 Sơ đồ tóm tắt 2.2.5 18 Công thức Simson 2.2.6 19 Đánh giá sai số 2.2.7 19 Ví dụ 2.2.8 20 Sơ đồ tóm tắt công thức Simson 2.2.9 20 Ứng dụng các phương pháp tính gần đúng tích phân xác định 2.3. 21 để tính toán các yếu tố tính nổi thủy lực và ổn định cho tàu thủy Phương pháp hình thang 2.3.1 21 Phương pháp Simpson 2.3.2. 22 Phương pháp Tre-bư-sev 2.3.3 25 Tính nổi tàu thuỷ 2.4 26 Tính các đại lượng hình học vỏ tàu 2.4.1 26 Tỉ lệ Bonjean 2.4.2 28 Thể tích phần chìm và các đại lượng liên quan đển thể tích 2.4.3 28 Biện pháp nâng cao độ chính xác của các phương pháp tích 2.4.4 31 phân gần đúng Tính các đường thuỷ tĩnh trên máy cá nhân 2.4.5 35 Biểu đồ mang tên Firsov 2.4.6 40 Cân bằng-Ổn định tàu 2.5 41 Ổn định ngang ban đầu 2.5.1 41 Ổn định khi tàu nghiêng góc lớn 2.5.2 44 Đồ thị ổn định 2.5.3 46 Thuật toán xác lập họ đường Pan-tô-ka-ren 2.5.4 51 Dựng đồ thị ổn định trên cơ sở Pan-to-ka-ren 2.5.5 53 TÀI LIỆU THAM KHẢO 54 2
  3. b¶ng ký hiÖu thêng dïng Tên gọi Ký hiệu Tên gọi Ký hiệu Diện tích hứng gió AV MTRIM Mô men chúi trên 1 cm Diện tích mặt đường nước AW Mchf Mô men nghiêng cho phép Diện tích mặt sườn giữa Mô men tĩnh diện tích mặt AM M0y đường nước đối với trục 0y Khoảng cách từ trọng tâm đến Mô men tĩnh diện tích mặt a M0x tâm nổi đường nước đối với trục 0x Chiều rộng tính toán Mô men tĩnh thể tích đối với xoy B Mx0y Chiều rộng toàn bộ Mô men tĩnh thể tích đối với y0z Bmax My0z Hệ số béo chung Hoành độ trọng tâm CB XG Hệ số béo sườn giữa Hoành độ tâm nổi CM XB Hệ số béo đường nước Hoành độ trọng tâm đường nước CW Xf Hệ số béo thẳng đứng Góc nghiêng ngang của tàu θ CV Hệ số béo dọc Góc chúi của tàu CP ψ Lượng chiếm nước trọng lượng Tung độ tâm nổi ∆ YB Khoảng cách giữa các đường Nửa tung độ đường nước khảo ∆d yi nước sát ứng với sườn thứ i Khoảng cách giữa các sườn Cao độ tâm nghiêng ngang ∆L ZM, KM Chiều cao mạn, Chiều chìm Cao độ tâm nổi D, d ZB, KB cánh tay đòn ổn định động Cao độ tâm nổi dθ ZC Chiều cao tâm nghiêng ngang Cao độ trọng tâm h ZG, KG Chiều cao tâm nghiêng ban đầu Cao độ trọng tâm hứng gió ZV h0, MG Mô men quán tính diện tích Diện tích mặt sườn khảo sát IT Ω đường nước đối với trục dọc Mô men quán tính diện tích Thể tích lượng chiếm nước IL V đường nước đối với trục ngang Mô men quán tính diện tích Thể tích ngâm nước ứng với I’L VZ đường nước đối với trục 0’- y’ đường nước z Hệ số cao độ trọng tâm Diện tích mặt đường nước tại z kg SZ Chiều dài tính toán Mô men tĩnh diện tích mặt sườn L mz Chiều dài toàn bộ Trọng tâm diện tích mặt sườn Lmax Cz Chiều dài đường nước thiết kế Lkwl Bán kính tâm nghiêng ngang r, BM Chiều dài giữa hai đường vuông LPP Bán kính tâm chúi R, BM L góc Cánh tay đòn ổn định hình dáng Lk Tay đòn ổn định tĩnh lθ, GZ lchf Tay đòn mô men nghiêng cho phép Mô men hồi phục Mhp Mô men nghiêng do gió tác dụng MV 3
  4. Chương 1 NGÔN NGỮ LẬP TRÌNH VÀ TỰ ĐỘNG HOÁ THIẾT KẾ 1.1. KHÁI NIỆM VỀ NGÔN NGỮ LẬP TRÌNH Ngôn ngữ lập trình là những phần mềm để phát triển các ứng dụng. Ngôn ngữ lập trình đã trải qua quá trình phát triển và không ngừng hoàn thiện, nó là công c ụ quan trọng đối với sự phát triển của công nghệ thông tin. Tự động hoá tính toán, thiết kế và hi ển th ị kết quả tính đều thông qua ngôn ngữ lập trình. Những ngôn ngữ lập trình có ứng dụng rộng rãi và hiệu quả có thể nêu lên sau đây. 1.2. GIỚI THIỆU MỘT SỐ NGÔN NGỮ LẬP TRÌNH ĐIỂN HÌNH • FORTRAN (viết tắt từ FORmula TRANslation) ra đời từ những năm năm mươi, chính xác hơn năm 1957, ứng dụng chủ yếu trong các ngành khoa học, kỹ thuật. Phiên bản đầu của FORTRAN thường được nhắc đến với tên gọi FORTRAN II , song phiên bản được dùng phổ biến nhất là FORTRAN IV. Các dàn máy IBM thời bấy giờ nhận dạng phiên bản phổ thông này dưới tên viết ghép FORTRAN. Ngôn ngữ thích hợp cho việc xử lý những bài toán cỡ lớn của thời đại, được dùng trong các chương trình tính toán thiết kế ô tô, tàu thuỷ, máy bay, tính toán độ bền các công trình xây dựng, thiết kế tối ưu. Có thể coi hơn 90% những chương trình lớn trong các lĩnh vực khoa học, kỹ thuật được viết bằng ngôn ngữ này. Thực tế sử dụng đã nảy sinh vài vấn đề phiền toái. Các nhà sản xuất các chương trình đa năng tự cho phép mình viết các bộ dịch cho FORTRAN theo sở trường của riêng mình. Tuy phần lớn các nhà sản xuất vẫn dựa vào tiêu chuẩn của ANSI - American National Standards Institute để biên soạn compiler cho FORTRAN IV song chẳng có bộ dịch nào giống bộ dịch nào, vì người nào cũng cố xé rào khỏi chuẩn ANSI. Tình hình ấy bắt buộc ANSI phải ra tay thống nhất, năm 1978 phiên bản cuối cùng mang tên ANSI X3.9 - 1978 đã đặt dấu chấm cho sự bùng phát tự do. Phiên bản này có tên gọi FORTRAN 77, ngày nay được dùng tương đối rộng rãi. • Algol, viết tắt từ Algorithm, ra đời vào đầu những năm sáu mươi với sự tham gia rất đông các nhà toán học, những người viết chương trình của châu Âu. Ngôn ngữ được thiết kế rất trong sáng, dễ học, dễ thực hiện. Đây là phiên bản của bộ môn toán tính dùng trong máy tính. Ngôn ngữ thích hợp cho việc giải quyết những vấn đề khoa học của thời đại. Tất cả các thuật toán chuẩn ra đời trong thời kỳ này được chuyển thành chương trình viết bằng Algol 60. Cho đến cuối những năm bảy mươi chương trình bằng ngôn ngữ Algol còn được chạy trên các dàn máy lớn. Những chương trình mẫu giải quyết những vấn đề tính toán theo phương pháp số, đặc biệt phần đại số tuyến tính, viết bằng Algol từ những năm sáu mươi cho đến tận ngày nay vẫn là những chương trình ưu việt, ch ưa gì thay được. 4
  5. Ngôn ngữ này là ngôn ngữ tốt song không sinh ra tại Mỹ, có lẻ đó là căn c ứ đ ể gi ải thích câu hỏi tại sao ngôn ngữ này không tìm được chỗ đứng ở Mỹ, việc này đ ồng nghĩa với sự hạn chế số người dùng và sự phát triển tiếp theo. • COBOL (Common Business Oriented Language) ra đời năm 1960, áp dụng chủ yếu trong lĩnh vực kinh doanh, thương mại. Ngôn ngữ này được hoàn thiện và còn tìm thấy chỗ đứng tận hôm nay. • BASIC (viết tắt từ Beginner's All-purpose Symbolie Instruction Code) do Kemeny và Kurtz phát triển từ năm 1964 tại Mỹ, là ngôn ngữ dùng cho máy tính nhỏ. Basic dễ học và sử dụng không khó lắm, song khả năng giải quyết công việc không lớn. Điều phiền toái nữa là ngôn ngữ này thuộc dạng "dễ tính" nên được phát triển gần như không kiểm soát được. Tồn tại quá nhiều "thổ ngữ" từ Basic nên khó chọn thứ tiếng chuẩn mực cho ứng dụng. Năm 1975 Gates W. viết ngôn ngữ cũng mang tên BASIC cho máy Altair, dạng microcomputer đầu tiên. Ngôn ngữ mang tên BASIC ngày nay thực tế là các cải biên của thứ tiếng mà Gates đã đưa ra thời đó. • Ngôn ngữ PL ( Programming Language ) còn được viết dưới dạng PL1 hoặc PL/I, cải biên cách viết PL1, được người khổng lồ lúc bấy giờ IBM đặt ra trong thời gian 1963 - 1966 sau thành công của FORTRAN và các ngôn ngữ khác tại Mỹ. Ngôn ngữ thừa kế những kết quả tốt đẹp của FORTRAN, Algol , Cobol . Bản thân ngôn ngữ bậc cao này cũng đã có tham vọng sử dụng ngôn ngữ assembly làm các phương tiện nối ghép, chạy chương trình mẫu. Người ta đặt thêm số 1 cuối tên gọi với hàm ý "ngôn ngữ l ập trình s ố 1". Tuy ý tưởng hay, thiết kế chuẩn song thực tế không được như ý muốn chủ quan của những người sinh non ra nó. Ngôn ngữ được quảng cáo rùm beng, song người dùng không nhiều vì các compiler của PL làm việc quá tồi. Ngôn ngữ không thọ được bao lâu, ngày nay thế hệ trẻ khỏi phải nghe quảng cáo ngôn ngữ number one nữa . • Pascal ra đời chính thức 1971. Người có công thiết kế ngôn ngữ là Niklaus Wirrth . Tên gọi của ngôn ngữ Pascal để ghi nhớ công lao của nhà toán học lớn thế kỷ 17 Blaise Pascal. Ngôn ngữ Pascal thuộc nhóm có cấu trúc chặt, là ngôn ngữ lập trình tiêu chuẩn bất cứ người lập trình nào cũng nên biết. Theo nhận định của các nhà chuyên môn, đây là thứ ngôn ngữ "lingua franca", làm cả chức năng "common tongue", là tiếng nói chung cho lập trình. Ngày nay trong các trường học, trong các lớp học về lập trình, tại các kỳ thi năng khiếu ngôn ngữ này còn là ngôn ngữ chính thức để truyền thụ và thi tài. • C là ngôn ngữ lập trình đa năng, ứng dụng vào việc giải quyết những công việc thực tế nảy sinh từ cuộc sống. C được coi là ngôn ngữ gần "ngôn ngữ máy", có khả năng giải quyết mọi công việc mà những ngôn ngữ lập trình "bậc cao" sinh tr ước nó như FORTRAN, PL1, Pascal đã làm, đồng thời còn giải quyết cả những việc mà đàn anh không muốn chạm tới, những việc chỉ giành cho ngôn ngữ gần gũi máy như Assembler giải quyết. Lịch sử phát triển của C có nhiều điều đáng nhắc. Yêu cầu thực tế của AT & T là phải có ngôn ngữ dùng cho hệ điều hành UNIX, sử dụng trên máy DEC PDP - 11. Việc này được giao cho Nennis Ritchie. Hệ điều hành, compiler và chương trình ứng dụng đ ều được D.Ritchie viết bằng C năm 1972. Thực ra, trước đó Martin Richards đã được giao công việc tương tự và kết quả của nó là ra đời ngôn ngữ có tên viết tắt BCPL. Trên cơ sở BCPL năm 1970 Ken Thompson soạn ngôn ngữ B (có thể bắt nguồn từ cái tên BCPL) và đã soạn đủ phần mềm để điều hành DEC PDP - 7. Vào năm 1972 với sự cộng tác của K.Thompson , D.Ritchie đã đi từ B đến C. Nguồn gốc của tên gọi "C" chỉ đơn giản vậy. Năm 1978 nhà xuất bản Prentice - Hall tung ra thị trường "The C Pragramming Language" 5
  6. do Brian W . Kernighan và Dennis M.Ritchie, viết tắt là K & R cùng viết. Sách ra đ ời là món quà vô giá đối với giới lập trình. C vượt ra khỏi ranh giới ban đầu là ngôn ngữ của hệ điều hành UNIX để thâm nhập vào DOS và hệ điều hành của IBM. Năm 1983 American National Standarts Institute (ANSI) thành lập uỷ ban này là khẳng định tính đúng đắn của C và uỷ ban chấp nhận (có thêm bớt) ngôn ngữ C với tên "ANSI C". ANSI C chính thức có hiệu lực từ năm 1988. Cuối những năm tám mươi và đầu những năm chín mươi thế gi ới lập trình chứng kiến sự bùng nổ ứng dụng C. Ngôn ngữ C đang lấn sân những ngôn ngữ lập trình đàn anh đã một thời vang bóng. Ngoài hệ điều hành UNIX của AT & T, nhiều hãng sản xuất phần mềm xây dựng các bộ dịch C để đưa vào hoạt động. Các bộ dịch có độ tin cậy cao gồm : • Turbo C ++ Professinal, Borland C++ • Zortech C cho máy IBM PC • Microsoft C • Mixsoftware's Power Điểm mạnh của C được thể hiện trên nhiều mặt. C rất gần với ngôn ngữ Assembly và giao tiếp dễ dàng với Assembly. C thao tác trên các bit nhanh chóng, chính xác và hi ệu quả như ngôn ngữ máy vẫn làm. C chấp nhận làm việc với mọi kiểu dữ liệu, với độ chính xác do người dùng đặt. Với biến con trỏ C phát huy thế mạnh khi thao tác mảng, chuỗi, hàm, v v... So với các ngôn ngữ lập trình khác, C điều khiển con trỏ thuần thục, dễ dàng hơn. Con trỏ giúp C đẩy nhanh tốc độ tính toán, giảm chi phí bộ nhớ. Con trỏ làm cho C vượt trội các ngôn ngữ khác về tính mềm mại, dễ sử dụng và tạo cho C s ức mạnh đ ể chinh phục các vấn đề phức tạp. • Ngôn ngữ C++ Bản thân C++ là sự phát triển ở mức cao từ C, song nó lại không hoàn toàn là C. Ngôn ngữ C thuộc nhóm ngôn ngữ lập trình có cấu trúc chặt, còn C ++ lại tạo cho người viết những thoả mái ngoài mong đợi . Trong C chương trình được xây dựng với mục đích rất cụ thể, để giải quyết một việc cụ thể nào đó. C ghi nhận dữ liệu và dữ liệu đó có thể ở dạng đơn giản hoặc phức tạp, xử lý dữ liệu và thông báo ra cũng là dữ liệu là đối tượng phục vụ của nó. Còn C ++, hiểu theo nghĩa lập trình hướng đối tượng (OOP) thì lại nhắm vào đối tượng, mà đối tượng theo nghĩa chung nhất là một cái gì đó có giới hạn. Trong đối tượng người ta đưa dữ liệu vào và cả các phương pháp khai thác, sử dụng dữ liệu nữa. Và lập trình hướng đối tượng không chỉ hạn chế làm một việc c ụ thể mà giải quyết bất kỳ việc gì cần cho đối tượng. Trước khi mang tên C++ ngôn ngữ này có tên ban đầu là "C with Classes" tức là "C với các lớp". Lớp đi liền với chúng ta khi còn dùng C++. C ra đời trên thực tế từ 1972 từ Bell Labs do Dennis Ritchie và Ken Thompson viết. Ban đầu C chưa nổi tiếng ngay, nó phát triển âm thầm cho đến năm 1978 khi Brian Keringhan và Dennis Ritchie tung ra "The C Programming Language". Từ đó ngôn ngữ C phát triển nhanh và được tiêu chuẩn hoá bằng hội đồng của ANSI ( Mỹ ), từ 1983 đ ến năm 1988. Ngôn ngữ ANSI C được chính thức khai tên từ 1988. C++ tự nó đã là ngôn ngữ lập trình như tên gọi của cuốn sách, song nó thừa kế một cách hoàn mỹ những gì tốt đẹp nhất của C và phát triển sự tốt đẹp ở mức cao hơn. Thực tế đã chứng minh C là ngôn ngữ uyển chuyển, có khả năng thâm nhập vào các lĩnh v ực tính toán, quản lý song C++ còn linh hoạt và uyển chuyển hơn. C là ngôn ngữ vô cùng mạnh song C++ được coi là mạnh hơn. 6
  7. Giống như các ngôn ngữ lập trình khác, C theo nghĩa cũ vẫn bị rào cản trong một vài hạn chế, còn C++ đang phá bỏ rào cản đó. Trong thực tế có thể coi C++ là công cụ làm việc thích hợp cho những người lập trình. Trong quản lý dữ liệu, C và nhiều ngôn ngữ khác sử dụng struct (hay còn gọi là record nếu hiểu theo nghĩa chung nhất) để quản lý các đối tượng. Công việc quản lý đó không có gì chê trách được. Song khác với struct, khi C ++ đưa vào lớp (class) cả đối tượng và công cụ quản lý đối tượng nó liền phát huy thế mạnh đến mức không ngờ được. Ngôn ngữ lập trình nếu kể đầy đủ phải bao gồm từ ngôn ngữ máy và ngôn ngữ gần với ngôn ngữ máy. Có thể xếp các ngôn ngữ máy tính vào trong năm nhóm, hay nói cách khác trong năm thế hệ của ngôn ngữ lập trình. Thế hệ đầu tiên giành chỉ các mã số 0 và số 1 mà mỗi bit của máy tính đ ều hi ểu. Ngôn ngữ này làm người thông ngôn duy nhất trong những năm bốn mươi đến đầu những năm năm mươi. Tại thời điểm này máy chỉ có thể "hiểu" ngôn ngữ độc nhất là mã nhị phân (binary code), gồm 0 và 1. Ngôn ngữ đầu tiên này còn mang tên gọi "ngôn ngữ máy". Thế hệ thứ hai của ngôn ngữ máy tính đánh dấu bằng sự ra đời của ngôn ngữ Assembly, ngày nay có người dịch là hợp ngữ. Assembly giúp cho máy tính nhận diện và dịch sang ngôn ngữ máy các mã mnemonic như ADD (cộng, thêm vào), SUB (trừ), MOV (dịch chuyển) v v... Các chương trình sử dụng các mnemonic để viết được gọi là assembly, còn chương trình dịch assembly sang ngôn ngữ máy có tên gọi là Assembler. Ngôn ngữ Assembly ra đời trong những năm năm mươi và đến tận hôm nay còn giữ được vị trí rất cao trong làng ngôn ngữ lập trình, mặc dầu bản thân nó là cầu nối giữa "ngôn ngữ bậc thấp" với "ngôn ngữ bậc cao". Thế hệ thứ ba đánh dấu bằng sự ra đời và thống trị của "ngôn ngữ bậc cao" (tiếng Anh viết là HLL - high level languages), kể từ Algol, FORTRAN,... Ngôn ngữ bậc cao còn được gọi là ngôn ngữ thủ tục hoá. Sở dĩ có tên gọi như vừa nêu vì r ằng cách di ễn đ ạt bằng ngôn từ khi dùng HLL không khác gì làm thủ tục tính toán. Người ta viết các l ệnh dưới dạng công thức tính như đang viết công thức toán vậy, không hề để ý đến nguyên lý làm việc của ngôn ngữ máy là thứ ngôn ngữ duy nhất máy có thể hiểu. Ví dụ khi cần tính "số quả còn lại C, nếu biết rằng tổng số quả A, em đã ăn B quả", người lập trình chỉ cần ra lệnh: C=A-B Để máy hiểu được ý trên nhất thiết phải dịch dòng lệnh này ra ngôn ngữ máy. Những bộ dịch cho HLL mang một trong hai tên gọi "compiler" hoặc "interpreter". Thứ tự truy ền đạt lệnh đến máy có thể hình dung như sau: người lập trình → compiler hoặc interpreter → Assembler → máy tính. Bạn đọc cần phân biệt hai tên gọi vừa nêu "compiler" và "interpreter" cùng làm một việc, trong tiếng Anh người ta dùng khái niệm "translation" (nghĩa của nó là dịch) để diễn đạt việc ấy. Compiler dịch toàn bộ chương trình giống như cách dịch toàn bộ bài nói của một ai đó từ tiếng nước này sang ngôn ngữ của nước chủ nhà. Trong khi đó interpreter dịch từng câu lệnh một, giống kiểu người phiên dịch (tiếng Anh gọi là interpreter) chuyển từng câu nói của một vị khách sang tiếng chủ nhà. Trường hợp bắt buộc phải có mặt c ả hai thành phần cho công việc dịch là người phát biểu bằng tiếng nước ngoài và người phiên dịch. Compiler thực hiện công việc nhanh hơn, gọn hơn. Công việc kiểu sau chậm hơn vì phải chờ thông tin qua lại giữa người phát biểu và phiên dịch viên. Tuy nhiên interpreter có ưu điểm nổi trội là làm cho chương trình hoạt đ ộng thuận lợi và d ễ dàng hơn. Vì không cần thiết phải dịch xong toàn bộ chương trình mới chạy chương trình, interpreter chuyển từng phần chương trình vào hoạt động nếu phần việc ấy đã được viết 7
  8. đúng bằng ngôn ngữ lập trình. Trường hợp có lỗi trong câu l ệnh, interpreter phát hi ện l ỗi ngay tức thì và yêu cầu chỉnh lại ngay lúc đó. Sau mỗi lần chỉnh, nếu đúng, câu lệnh sẽ được thực thi ngay. Trong thực tế người ta đang kết hợp cả hai cách làm việc nh ằm đ ẩy mạnh tốc độ thực hiện và tạo thuận lợi tối đa cho người dùng. Tại đây bạn đọc cần làm quen thêm với khái niệm mã nguồn và mã đối tượng. Mã chương trình được gọi là mã nguồn. Sản phẩm có xuất xứ từ mã nguồn, sau khi dịch gọi là mã đối tượng. Tất cả phần mềm khi bán ra đều được ghi lại dưới dạng mã đối tượng. Với các bản dịch người dùng không còn một khả năng nào để đọc, để nhận biết và không có cách nào để cải biên, thay đổi. Thế hệ thứ tư giành cho ngôn ngữ bậc rất cao (Very high level languages). Trong trào lưu này, nhờ những Generator, người ta chỉ cần đưa những đặc trưng chính của công việc, generator chuyển thông tin vào hệ thống làm việc của máy như đã miêu tả cho thế hệ trước, máy tính "tự động" tạo ra những chương trình ứng dụng. Ý này, phục vụ công việc quản lý cơ sở dữ liệu (tiếng Anh: Database Management) mang dáng dấp của ngôn ngữ thế hệ thứ tư này. Các ngôn ngữ SQL (viết tắt từ Structured Query Language), QBE (Query-by-Example) và QUEL (Query Language) là đại biểu xuất sắc nhất trong nhóm. Từ 1986 bắt đầu quá trình tiêu chuẩn hoá SQL. Năm 1992 ANSI chính thức thông qua tiêu chuẩn cho SQL-92. SQL đang được dùng trong các phiên bản Sybase SQL Server, Microsoft SQL Server, IBM OS/2 Extended Edition Database Manager, DEC RDb/VMS và Oracle Server for OS/2 vv... Trong tài liệu này sẽ không đề cập đến ngôn ngữ này, người viết chỉ có thể hứa nhanh chóng hoàn tất bản thảo giới thiệu tài liệu về các ngôn ngữ này. Thế hệ thứ năm gắn liền với nhóm ngôn ngữ trí tuệ nhân tạo (AI-Artificial Intelligence). Đây là ngôn ngữ không - thủ tục (khác với khái niệm ngôn ngữ thủ tục vừa nêu trên), gắn liền với trạng thái của đối tượng trong vấn đề đang giải quyết, với quan hệ giữa các đối tượng. Một trong các ngôn ngữ đang dùng có kết quả PROLOG, đang được người Nhật chấp nhận, phát triển và hoàn thiện. Ngôn ngữ mang tên Nhật HIMIKO xuất phát từ PROLOG, đang là cơ sở cho nhóm ngôn ngữ thế hệ thứ năm này. Trong lĩnh vực quản lý dữ liệu, sự gắn bó giữa ngôn ngữ thế hệ thứ tư và thứ năm đã sinh ra DATALOG chuyên phục vụ công tác hệ thống dữ liệu. Ngôn ngữ LDL (Logic Data Language) đang chiếm vị trí xứng đáng trong lĩnh vực truyền dữ liệu. Cần nói thêm, ngôn ngữ LISP cũng thuộc nhóm ngôn ngữ trí tuệ nhân tạo, được phát triển từ những năm sáu mươi tại Mỹ, ngày nay đang đóng vai trò hết sức quan trọng trong công cuộc tự động hoá thiết kế. Tài liệu về LISP và AutoLISP đề nghị bạn đọc tìm hiểu thêm qua sách chuyên đề của cùng người viết. 8
  9. Chương 2 TỰ ĐỘNG HÓA TÍNH TOÁN CÁC YẾU TỐ THỦY TĨNH VÀ TÍNH CÂN BẰNG-ỔN ĐỊNH CỦA TÀU 2.1. PHƯƠNG PHÁP SỐ DÙNG TRONG TỰ ĐỘNG HOÁ TÍNH TOÁN CÁC YẾU TỐ THỦY TĨNH VÀ TÍNH CÂN BẰNG-ỔN ĐỊNH CỦA TÀU Chương này sẽ giới thiệu với bạn đọc việc sử dụng các phương pháp tính thông dụng khi xử lý những bài toán thường gặp trong tính toán các yếu tố tính nổi – thủy l ực của tàu. Các phương pháp được đề cập ở trong phạm vi tài liệu này bao gồm: phương pháp tích phân gần đúng, phương pháp nội suy và phương pháp bình phương nhỏ nhất. 2.1.1. Đa thức nội suy Lagrange Trong thực tế nhiều khi người ta phải giải bài toán ngược sau đây: Người ta không biết chính xác hàm số f(x) mà chỉ biết một tập rời rạc hữu hạn của đồ thị biểu diễn nó và một vài nét hết sức khái quát của hàm f(x); người ta muốn dựng lại hàm số f(x) và dĩ nhiên không thể nào dựng đúng nguyên xi hàm f(x) (vì bản thân hàm số f(x) cũng ch ưa được biết) nhưng người ta hy vọng rằng sẽ dựng được một hàm số có các tính chất nh ư hàm số f(x) và dĩ nhiên đồ thị biểu diễn hàm số được dựng nên ít ra thì cũng gần trùng với đồ thị của hàm f(x) tại tập hợp các điểm rời rạc đã cho tr ước ví d ụ nh ư t ừ s ố li ệu thống kê các đặc trưng của một số đối tượng khảo sát bất kỳ nào đó; từ kết quả thí nghiệm tại phòng thí nghiệm; từ số liệu thử mô hình tàu thủy tại bể thử v.v…. Ví dụ ta muốn phục hồi một hàm số f(x) tại mọi giá trị của x X [ a, b] nào đó mà chỉ biết một số hữu hạn gồm (n +1) giá trị của hàm số đó tại các điểm rời rạc x 0 , x1, …, xn X [a, b] . Các giá trị rời rạc này được cho dưới dạng bảng sau: x x0 x1 x2 … xi …. xn y y0 y1 y2 … yi … yn Khi đó ta đặt vấn đề là tìm một đa thức bậc n : Pn(x) = a0 + a1x + a2x2 + … + anxn, an ≠ 0 với a0, a1, …., an X R sao cho Pn(x) trùng với f(x) tại các nút xi , i = 0, n nghĩa là Pn(xi) = f(xi) = yi. Đa thức Pn(x) tìm được đó được gọi là đa thức nội suy. Ta chọn đa thức nội suy hàm số f(x) vì đa thức là loại hàm số đơn giản nhất và dễ xác định nhất. Như vậy ta sẽ có định lý sau: Nếu tồn tại đa thức nội suy P n(x) của hàm số f(x) thì đa thức đó là duy nhất. CM: Thật vậy nếu có hai đa thức Pn(x) và Qn(x) cùng là đa thức nội suy của hàm f(x). Lúc đó theo định nghĩa ta có: Pn(xi) = yi ; Qn (xi) = yi. 9
  10. Vậy hiệu số Pn(xi) – Qn(xi) cũng là môt đa thức có bậc không vượt quá n và bị triệt tiêu tại n + 1 giá trị khác nhau xi, i = 0, n (Vì Pn(xi) – Qn(xi) = yi – yi = 0, i = 0, n ). Do vậy đa thức hiệu Pn(x) – Qn(x) phải đồng nhất bằng không, nghĩa là Pn(xi) ≡ Qn(xi). Có thể tồn tại nhiều đa thức nôi suy nhưng do tính duy nhất nên chúng có th ể đ ều được quy về nhau được. Dưới đây chúng ta sẽ xây dựng đa thức nội suy theo ki ểu Lagrange, gọi là đa thức nội suy Lagrange và được ký hiệu là Ln(x). Đa thức nội suy Lagrange được viết dưới dạng: f(x) = Pn(x) + Rn(x) (2.1) hoặc dạng đầy đủ:  f ( n +1) (ξ ) n n f ( x) = ∑ Li ( x) f ( xi ) + ∏ ( x − xi ) , a
  11. f ( x1 ) a1 = ( x1 − x0 )( x1 − x 2 )...( x1 − x n ) ... f ( xn ) an = ( x n − x0 )( x n − x1 )...( x n − x n −1 ) Hệ số thứ i có dạng tổng quát: f ( xi ) ai = (2.7) ( xi − x0 )( xi − x1 )...( xi − xi −1 )( xi − xi +1 )...( xi − xn ) Thay các biểu thức vừa xác định vào vị trí a0, a1, ..., an sẽ nhận được công thức nội suy hay còn gọi đa thức Lagrange: ( x − x1 )( x − x2 )...( x − xn ) ( x − x1 )( x − x2 )...( x − xn ) Pn ( x) = y0 + y1 + ( x0 − x1 )( x0 − x2 )...( x0 − xn ) ( x1 − x0 )( x1 − x2 )...( x1 − xn ) (2.8) ( x − x1 )( x − x2 )...( x − xn ) + ... + yn ( xn − x0 )( xn − x1 )...( xn − xn−1 ) hoặc dưới dạng tổng quát ta có:  x − xj  n n Li ( x ) = ∏   Pn ( x) = ∑ Li ( x) f ( xi ) , với   j =0  xi − x j  i= 0 j ≠i Những trường hợp riêng của hàm nội suy Lagrange: Với n = 1: x x0 x1 y y0 y1 Đa thức nội suy có dạng ( x − x0 ) ( x − x1 ) P1 ( x) =y0 + y1 (2.9) ( x0 − x1 ) ( x1 − x0 ) Hàm P1(x) là đoạn thẳng qua hai điểm (x0, y0) và (x1, y1), có tên gọi công thức nội suy tuyến tính. Thí dụ: Cho bảng số: x 1 2 y 17 27,5 Hãy lập đa thức nội suy tương ứng. Lời giải: Ở đây n = 1 nên đa thức nội suy sẽ có dạng đa thức bậc nhất. Như vậy đa thức được viết như sau: 11
  12. ( x − 2) ( x − 1) + 27,5 P1 (x) = 17 (1 − 2) (2 − 1) Rút gọn biểu thức ta có: P1(x)= 6,5+ 10,5x Với n = 2: x x0 x1 x2 y y0 y1 y2 Đa thức nội suy có dạng ( x − x 0 )( x − x 2 ) ( x − x 0 )( x − x1 ) ( x − x1 )( x − x 2 ) P2 ( x) = y0 + y1 + y2 ( x 0 − x1 )( x 0 − x 2 ) ( x1 − x 0 )( x1 − x 2 ) ( x 2 − x 0 )( x 2 − x1 ) (2.10) Hàm thứ hai là đường parabol bậc hai qua ba điểm cho trước, gọi là nội suy bậc hai. Thí dụ: Cho bảng số: x 1 2 3 y 17 27,5 76 Hãy lập đa thức nội suy tương ứng. Lời giải: Ở đây n = 2 nên đa thức nội suy sẽ có dạng đa thức bậc 2. Như vậy đa thức đ ược viết như sau: ( x − 2)( x − 3) ( x − 1)( x − 3) ( x − 1)( x − 2) + 27,5 + 76 P2(x) = 17 (1 − 2)(1 − 3) ( 2 − 1)(2 − 3) (3 − 1)(3 − 2) Rút gọn biểu thức ta có: P2(x)= 19x2 – 46,5x + 44,5 Với n =3 Thí dụ: Cho bảng số: x 1 2 3 4 y 17 27,5 76 210,5 Hãy lập đa thức nội suy tương ứng. Lời giải: Ở đây n = 3 nên đa thức nội suy sẽ có dạng đa thức bậc 3. Như vậy đa thức đ ược viết như sau: ( x − x1 )( x − x2 )( x − x3 ) ( x − x0 )( x − x2 )( x − x3 ) P3 ( x) = y0 + y1 + ( x0 − x1 )( x0 − x2 )( x0 − x3 ) ( x1 − x0 )( x1 − x2 )( x1 − x3 ) ( x − x0 )( x − x1 )( x − x3 ) ( x − x0 )( x − x1 )( x − x 2 ) (2.11) y2 + y3 ( x 2 − x0 )( x 2 − x1 )( x 2 − x3 ) ( x3 − x0 )( x3 − x1 )( x3 − x2 ) 12
  13. ( x − 2)( x − 3)( x − 4) ( x − 1)( x − 3)( x − 4) + 27,5 + 17 (1 − 2)(1 − 3)(1 − 4) (2 − 1)(2 − 3)(1 − 4) P3 (x) = ( x − 1)( x − 2)( x − 4) ( x − 1)( x − 2)( x − 3) + 76 + 210,5 (3 − 1)(3 − 2)(3 − 4) (4 − 1)(4 − 2)(4 − 3) Rút gọn biểu thức ta có: P3(x)= -3,5+ 41,5x - 29x2 + 8x3 2.1.2. Phương pháp bình phương nhỏ nhất 2.1.2.1. Đặt bài toán Giả sử có hai đại lượng (vật lý, hóa học, kỹ thuật …) x và y có mối liên hệ ph ụ thuộc nhau theo một số qui luật đã biết nào đó ví dụ như: 1) y = a + bx 2) y = a + bx + cx2 3) y = a+ b cosx + csinx 4) y = aebx 5) y = axb nhưng chưa biết các giá trị cụ thể của các tham số a, b,c. Muốn xác định chúng người ta cần thực hiện các thí nghiệm, các đo đạc v.v…. một số cặp giá trị tương ứng (x i, yi), với i =1,2,…, n theo bảng sau: x x1 x2 … xn y y1 y2 … yn rồi áp dụng phương pháp bình phương bé nhất để xác định các tham số a, b, c. 2.1.2.2. Xét trường hợp y = a + bx Giả sử y phụ thuộc x dạng bậc nhất y = a + bx và khi đó ta có yi - a - bxi = εi , i = 1,2, …, n là các sai số tại xi , do đó ta có S = ∑ ( y i − a − bxi ) 2 (2.12) là tổng các bình phương của các sai số. S phụ thuộc vào tham số a và b còn xi và yi đã biết. Như vậy mục đích của phương pháp bình phương bé nhất là xác định các tham số a và b sao cho S bé nhất. Muốn vậy a và b phải là nghiệm của hệ phương trình sau: ∂S ∂S = 0; =0 (2.13) ∂a ∂b tức là: n a + b ∑ xi = ∑ y i (2.14) a ∑ xi + b ∑ xi2 = ∑ xi y i Từ bảng 2.1.2 ta sẽ tính được các tổng ∑ xi , ∑ yi , ∑ xi , ∑ xi yi , thay vào hệ phương trình 2 (2.14) rồi giải hệ đó ta sẽ nhận được a và b. Hệ (2.14) gọi là hệ chính tắc của phương pháp bình phương nhỏ nhất được viết cho dạng y = a + bx. 13
  14. 2.1.2.3. Thí dụ Cho biết sự phụ thuộc giữa hai đại lượng x và y có dạng y = a + bx và đ ược cho ở bảng 2.1 Bảng 2.1 x - 1,1 2,1 3,2 4,4 5,2 y 0,78 7,3 9,2 11,9 13,3 Hãy xác định các tham số a và b bằng phương pháp bình phương bé nhất. Lời giải: Bước 1. Lập bảng số như sau (Bảng 2.1.1): Bảng 2.1.1 xi yi xi yi 2 x i - 1,1 0,78 1,21 - 0,858 2,1 7,3 4,41 15,33 n=5 3,2 9,2 10,24 29,44 4,4 11,9 19,36 52,36 5,2 13,3 27,24 69,16 Σ n =5 5 5 5 ∑ xi = 13,8 ∑ yi = 42,48 ∑ xi2 = 62,26 ∑x y i = 165,432 i i =1 1 1 1 Bước 2. Lập hệ phương trình sau: 5a + 13,8 b = 42,48 13,8a + 62,26 b = 165,432 Giải hệ phương trình này bằng một trong những pbhuwowng pháp đã biết chúng ta sẽ xác định được tham số : a = 2,9939036 y3 và b = 1,9935131y 2. Vậy ta viết được phương trình cuối cùng như sau: y=3+2x (2.15) Bây giờ chúng ta thử tính các giá trị mới của y tại các x i theo phương trình (2.15) và so sánh chúng với các giá trị yi đã cho bởi bảng 2.1. (Xem bảng 2.1.2) Bảng 2.1.2 x - 1,1 2,1 3,2 4,4 5,2 y (cũ) 0,78 7,3 9,2 11,9 13,3 y (mới) 0,8 7,2 9,4 11,8 13,4 Như vậy quan hệ (2.13) xấp xỉ khá tốt với các số liệu đưa ra ở bảng 2.1.3 2.1.2.4. Các dạng quan hệ khác Các dạng quan hệ (2), (3) được giới thiệu ở mục 2.1.2.1. là các mối quan hệ tuy ến tính đối với các tham số a, b và c nên cũng có thể giải quyết một cách tương tự. Chẳng hạn, nếu : y = a + bx + cx2 thí các tham số a, b và c là nghiệm của hệ phương trình chính tắc sau: n a + b ∑ x i + c ∑ xi2 ∑y = i 14
  15. a ∑ x i + b ∑ xi2 + c ∑ xi3 = ∑x y (2.16) i i a ∑ xi2 + b∑ xi3 + c ∑ xi4 = ∑x 2 yi i Trường hợp các mối quan hệ (4) và (5) ta phải biến đổi đôi chút vì đó là nh ững mối quan hệ phi tuyến đối với các tham số a và b. Giả sử y = a ebx , với a > 0 Lấy lô-ga-rít thập phân hai vế ta được : lg y = lg a + bx lge. Đặt lg y = Y, lg a = A, blge = B , x = X Y Y = A + BX Đây chính là mối quan hệ y = a + bx mà ta đã xét ở trên. Từ bảng số li ệu v ề mối quan hệ giữa y và x ta suy ra bảng số liệu về X và Y với chú ý: X = x ; Y = lg y Sau đó áp dụng cách làm ở trên và sẽ thu được A và B rồi từ đó suy ra a và b 2.1.2.5. Sơ đồ thuật toán của phương pháp bình phương nhỏ nhất a) Cho mối quan hệ y = a + bx 1. Tính các tổng ∑ xi , ∑ y i , ∑ xi , ∑ xi y i 2 2. Giải hệ chính tắc : n a + b ∑ xi = ∑ y i a ∑ xi + b ∑ xi2 = ∑ xi y i tìm a và b 3. Kết luận: Viết ra phương trình cuối cùng b) Cho mối quan hệ y = a ebx 1. Lấy lô-ga-rít hai vế của y = aebx 2. Chuyển bảng số giữa x và y thành bảng số X và Y 3. Tính các tổng 4. Giải hệ chính tắc để tìm A và B 5. Tính : a = aA, b = B/lge 6. Kết luận. 2.2. Các phương pháp tính gần đúng tích phân xác định 2.2.1. Đặt bài toán b ∫ Xét tích phân xác định : I = f ( x) dx a Nếu f(x) liên tục trên [a, b] và có nguyên hàm là F(x) thì công thức Niu-tơn - Lép-nít cho: b I = ∫ f ( x) dx = F(b) – F(a) (2.17) a Nhưng nếu không tìm được nguyên hàm của f(x) ở dạng sơ cấp hoặc nguyên hàm đó quá phức tạp thì tích phân I phải tính gần đúng. Sau đây sẽ trình bày hai công th ức tính gần đúng tích phân I dựa trên tư tưởng thay hàm f(x) bằng một đa thức nội suy. 2.2.2. Công thức hình thang Ta chia [a, b] thành n đoạn con bằng nhau bởi các điểm chia xi : a = x0 < x1 < ….< xn-1 = b 15
  16. (b − a ) xi = a + i h, h = , với i = 0, 1, …, n n Đặt yi = f(xi) x2 xn x1 b ∫ f ( x) dx +…+ ∫ f ( x) dx ∫ f ( x) dx I = ∫ f ( x) dx = Ta có + x0 xn −1 x1 a (2.18) Để tính mỗi tích phân ở vế phải ta thay hàm f(x) bằng một đa thức nội suy bậc nhất P1(x). Với tích phân thứ nhất ta có: x1 x1 ∫ f ( x) dx ≈ ∫ P ( x)dx 1 x0 x0 Đổi biến x = x0 + ht thì dx = hdt, ứng với x0 là t0 = 0 , ứng với x1 là t = 1, nên ta có t =1 x1 1 y +y t2   1 ∫ P1 ( x) dx = h ∫ ( y 0 + t∆y 0 )dt = h ( y 0 t + ∆y 0 ) = h  y 0 + ∆y 0  = h 0 1 . t =0   2 2 2 x0 0 x1 y0 + y1 ∫ f ( x) dx ≈ h Vậy ta có : 2 x0 Về mặt hình học điều đó có nghĩa là: Thay diện tích hình thang cong x 0M0M1x1 bởi diện tích hình thang thường x0M0M1x1 (Hình 2.1) M1 M0 x0 x1 Hình 2.1 xi +1 yi + yi +1 ∫ f ( x) dx ≈ h Đối với tích phân thứ i + 1 ta có: 2 xi Vậy công thức (2.18) được viết lại như sau: b h ∫ f ( x) dx ≈ 2 [ ( y + y1 ) + ( y1 + y2 ) + ... + ( yn−1 + yn )] 0 a 16
  17. b I = ∫ f ( x) dx ≈ I T Nghĩa là a  y + yn  (2.19) IT = h  0 + y1 + y 2 ) + ... + yn−1  với 2  (b − a ) h= và n Công thức này gọi là công thức hình thang. 2.2.3. Đánh giá sai số Người ta đã chứng minh được rằng: M2 I − IT = ≤ h (b − a ), (2.20) 12 M = max f '' ( x) , a ≤ x ≤ b 2.2.4. Thí dụ Hãy tính gần đúng : 1 dx I =∫ 0 1+ x 2 Lời giải: Ta đã biết giá trị đúng của tích phân này là π/4. Do đó nếu biết số π thì ta có: I = 0,78539816 … Bây giờ ta tính gần đúng I bằng công thức hình thang rồi so sánh kết quả. Công việc được tiến hành như sau: Chia đoạn [0, 1] thành 10 khoảng (n =10) con bằng nhau với h = 0,1. Lập bảng trị số như sau ( bảng 2.2) Bảng 2.2 f(x) = 1/(1 + x2) x 0 1,000000 = y0 0,1 0,9900990 = y1 0,2 0,9615385 = y2 0,3 0,9174312 = y3 0,4 0,8620690 = y4 0,5 0,800000 = y5 0,6 0,7352941 = y6 0,7 0,6711409 = y7 0,8 0,6097561 = y8 0,9 0,5524862 = y9 1,0 0,500000 = y10 Áp dụng công thức hình thang (2.15) ta nhận được I y0,7849815 với sai số tương đối 0,054 %. 2.2.5. Sơ đồ tóm tắt công thức hình thang Phương án 1: Cho trước số khoảng chia n 17
  18. b ∫ f ( x) dx 1) Xét tích phân I = ; a 2) Ấn định số khoảng chia n; 3) Chia [a, b] thành n phần bằng nhau và tính b−a h= ; xi = a + i h , i = 0, 1,…,n.; n yi = f (xi) , i = 0, 1, …, n.  y + yn  IT = h  0 + y1 + y 2 ) + ... + y n−1  ; 4) Tính 2  5) Kết quả: I y IT Phương án 2: Cho trước sai số b ∫ f ( x) dx 1) Xét tích phân I = ; a 2) Ấn định sai số cho phép ε; 3) Dùng công thức (2.16) để xác định khoảng chia n sao cho sai số bé hơn sai số cho phép; b−a 4) Tính h = ; xi = a + i h , i = 0, 1,…,n.; n yi = f (xi) , i = 0, 1, …, n.  y0 + y n  5) Tính I T = h  + y1 + y 2 ) + ... + y n−1  2  6) Kết quả : I y IT Với sai số I − I T 〈 ε 2.2.6. Công thức Simson Ta chia [a, b] thành 2n đoạn con bằng nhau bởi các điểm chia xi: a = x0 < x1 < …< x2n = b (b − a ) xi = a + ih, h = , i = 0, 1, …, 2n 2n Giả sử yi = f(xi) . Ta có: x2 n x2 x4 b ∫ f ( x)dx = ∫ f ( x)dx + ∫ f ( x)dx + ... + ∫ f ( x)dx (2.21) a x0 x2 x2 n − 2 Để tính mỗi tích phân ở vế phải ta thay f(x) bằng đa thức nội suy bậc hai P 2(x). Với tích phân thứ nhất ta có : x2 x2 ∫ f ( x)dx ≈ ∫ P ( x)dx2 x0 x0 Đổi biến x = x0 + h t thì dx = h dt, ứng với t = 0, ứng với x2 là t = 2. Do đó: 18
  19.   t =2 x2 1  t3 t2  2 t (t − 1) 2 t2 ∫ P2 ( x)dx = h ∫ ( y0 + t∆y0 + ∆ y 0 ) dt = h  y 0 t + ∆y 0 +  − ∆2 y 0  3 2  t =0 2 2 2   x0 0  18 4 2  h = h 2 y 0 + 2∆y 0 +  −  ∆ y 0  = ( y 0 + 4 y1 + y 2 ) . 23 2 3  x2 h ∫ f ( x)dx ≈ 3 ( y + 4 y1 + y 2 ) . Vậy ta có: 0 x0 Đối với các tích phân sau ta cũng tiến hành tương tự và nhận được: x2 i + 2 h ∫ f ( x)dx = 3 ( y + 4 y 2i +1 + y 2i + 2 ) 2i x2 i Thay vào công thức (2.17) ta được b h ∫ f ( x)dx ≈ 3 [ ( y + 4 y1 + y 2 ) + ( y 2 + 4 y3 + y 4 ) + ... + ( y 2 n− 2 + 4 y 2 n −1 + y 2 n )] . 0 a b ∫ f ( x)dx ≈ I Vậy ta có: I = S a h [ ( y0 + y2 n ) + 4( y1 + y3 + ... + y2 n−1 ) + 2( y2 + y4 + ... + y2 n−2 )] với I S = (2.22) 3 (b − a) trong đó h = 2n Công thức (2.22) được gọi là công thức Simson. 2.2.7. Đánh giá sai số Người ta đã chứng minh được M4 I − IS =≤ h (b − a ), 180 M = max f IV ( x) , a ≤ x ≤ b 2.2.8. Thí dụ 1 dx Xét tích phân I = ∫ 2 . Với bảng trị số (Bảng 2.2) đã cho ở trên ta có thể áp dụng 0 1+ x công thức Simson vì 10 = 2 *5. Ta được I y 0,78539815 với sai số tương đối 0,000002% Đối chiếu với kết quả được xác định bởi công thức hình thang ta nhận thấy kết quả tính theo công thức Simson chính xác hơn nhiều. 2.2.9. Sơ đồ tóm tắt công thức Simson Phương án 1: cho trước số khoảng chia 2n b ∫ 1) Xét tích phân I = f ( x) dx ; a 2) Xác định số khoảng chia 2n; 3) Chia [a, b] thành 2n phần bằng nhau và 19
  20. (b − a) tính h = ; xi = a + ih, với i= 0,1,…,2n; yi = f(xi ), i= 0,1,…, 2n 2n h [ ( y0 + y2 n ) + 4( y1 + y3 + ... + y2 n−1 ) + 2( y2 + y4 + ... + y2 n−2 )] 4) Tính I S = 3 5) Kết quả I yIS Phương án 2: Cho trước sai số b ∫ 1) Xét tích phân I = f ( x) dx ; a 2) Ấn định sai số phép tính ε; 3) Dùng công thức (2.19) để xác định số khoảng chia 2n sao cho sai số < sai số cho phép; 4) Chia [a, b] thành 2n phần bằng nhau và tính b I = ∫ f ( x)dx ; xi = a + ih, với i= 0,1,…,2n; yi = f(xi ), i= 0,1,…, 2n; a h [ ( y 0 + y 2 n ) + 4 y1 + y3 + ... + y 2 n−1 ) + 2( y 2 + y 4 + ... + y 2 n−2 )] ; 5) Tính I S = 3 6) Kết quả : I y IS với sai số I − I S < ε . BÀI TẬP 1. Cho hàm số y = lg x với các giá trị tương ứng của x và y cho trong bảng sau: x 50 55 60 65 y 1,6990 1,7404 1,7782 1,8129 Hãy tính đạo hàm của y tại x = 50 và so sánh với kết quả tính trực tiếp . 1 dx 2. Cho tích phân: ∫ 1+ x 0 Hãy chia đoạn con [0, 1] thành 10 đoạn con bằng nhau ( n=10) rồi tính gần đúng I và đánh giá sai số bằng : a) Công thức hình thang; b) Công thức Simson. 1 sin x ∫ dx 3. Cho tích phân x 0 1) Hỏi phải chia đoạn [0,1] thành mấy (n = ?) đoạn con bằng nhau để khi tính I bằng công thức hình thang bảo đảm được sai số tuyệt đối < 3*10-4; 2) Với n ấy khi tính bằng công thức Simson thì sai số là bao nhiêu? 3) Hãy tính I với n đã chọn ở trên bằng công thức hình thang và công thức Simson đến 6 chữ số lẻ thập phân. 2.3. ỨNG DỤNG CÁC PHƯƠNG PHÁP TÍNH GẦN ĐÚNG TÍCH PHÂN XÁC ĐỊNH ĐỂ TÍNH TOÁN CÁC YẾU TỐ TÍNH NỔI THỦY LỰC VÀ CÂN BẰNG-ỔN ĐỊNH CHO TÀU THỦY 2.3.1. Phương pháp hình thang 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2