Tin học chuyên ngành của đóng tàu
Trang 1LỜ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ạnnhằ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ủymộ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áncá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ươngphá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ủamô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ẻ trongphầ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 trongAUTOSHIP 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ọcngà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àitoá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ạicá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ụngtrong 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ậpbà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àuthủy khoa Đóng tàu Đại học Hàng hải hoặc E-Mail: lehbang@hn.vnn.vn
TÁC GIẢ
1
Trang 2MỤC LỤC
Chương ,
1.2 Giới thiệu một số ngôn ngữ lập trình điển hình 4
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
2.4.3 Thể tích phần chìm và các đại lượng liên quan đển thể tích 282.4.4 Biện pháp nâng cao độ chính xác của các phương pháp tích
2.5.5 Dựng đồ thị ổn định trên cơ sở Pan-to-ka-ren 53
b¶ng ký hiÖu thêng dïng
Trang 3Ký hiệu Tên gọi Ký hiệu Tên gọi
A V Diện tích hứng gió M TRIM Mô men chúi trên 1 cm
A W Diện tích mặt đường nước M chf Mô men nghiêng cho phép
A M Diện tích mặt sườn giữa M 0y Mô men tĩnh diện tích mặt đường
nước đối với trục 0y
a Khoảng cách từ trọng tâm đến
tâm nổi
M 0x Mô men tĩnh diện tích mặt đường
nước đối với trục 0x
B Chiều rộng tính toán M x0y Mô men tĩnh thể tích đối với xoy
B max Chiều rộng toàn bộ M y0z Mô men tĩnh thể tích đối với y0z
C W Hệ số béo đường nước X f Hoành độ trọng tâm đường nước
C V Hệ số béo thẳng đứng Góc nghiêng ngang của tàu
Lượng chiếm nước trọng lượng Y B Tung độ tâm nổi
d Khoảng cách giữa các đường
nước
y i Nửa tung độ đường nước khảo sát
ứng với sườn thứ i
L Khoảng cách giữa các sườn Z M , KM Cao độ tâm nghiêng ngang
d θ cánh tay đòn ổn định động Z C Cao độ tâm nổi
h Chiều cao tâm nghiêng ngang Z G , KG Cao độ trọng tâm
h 0 , MG Chiều cao tâm nghiêng ban đầu Z V Cao độ trọng tâm hứng gió
I T Mô men quán tính diện tích
đường nước đối với trục dọc Ω Diện tích mặt sườn khảo sát
I L Mô men quán tính diện tích
đường nước đối với trục ngang V Thể tích lượng chiếm nước
I ’
L Mô men quán tính diện tích
đường nước đối với trục 0’- y’ V Z Thể tích ngâm nước ứng với
đường nước z
kg Hệ số cao độ trọng tâm S Z Diện tích mặt đường nước tại z
L Chiều dài tính toán m z Mô men tĩnh diện tích mặt sườn
Lmax Chiều dài toàn bộ C z Trọng tâm diện tích mặt sườn
L kwl Chiều dài đường nước thiết kế r, BM Bán kính tâm nghiêng ngang
L PP Chiều dài giữa hai đường vuông
M hp Mô men hồi phục
M V Mô men nghiêng do gió tác dụng
3
Trang 4Chươ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
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 , songphiê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ậndạ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ằngngô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 NationalStandards Institute để biên soạn compiler cho FORTRAN IV song chẳng có bộ dịch nàogiố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ộcANSI 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ữ đượcthiế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ùngtrong 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ếtbằ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ínhtoá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ămsá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
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ảithí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
Trang 5 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ìmthấ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ềuphiề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ôngkiể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ựccho ứng dụng
Năm 1975 Gates W viết ngôn ngữ cũng mang tên BASIC cho máy Altair, dạngmicrocomputer đầu tiên Ngôn ngữ mang tên BASIC ngày nay thực tế là các cải biên củathứ 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àycũ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ạychươ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ữngngườ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ỷ 17Blaise 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êuchuẩ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óichung 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ănggiả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ôngmuố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 đượcgiao cho Nennis Ritchie Hệ điều hành, compiler và chương trình ứng dụng đều đượcD.Ritchie viết bằng C năm 1972 Thực ra, trước đó Martin Richards đã được giao công việctươ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" 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 StandartsInstitute (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
5
Trang 6nhậ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 dongườ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ácngô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ônngữ 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ữngthoả 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 theonghĩ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ĩachung 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ếtbấ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ớicá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 BrianKeringhan và Dennis Ritchie tung ra "The C Programming Language" Từ đó ngôn ngữ Cphá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áchhoà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
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àihạ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ệcthí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
Trang 7(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ôngngờ đượ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ớingô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áctrong 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ônngữ 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ămnă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 caotrong 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 Anhviết là HLL - high level languages), kể từ Algol, FORTRAN, Ngôn ngữ bậc cao còn đượcgọ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ạngcô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ủangô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ộtviệ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ủamột ai đó từ tiếng nước này sang ngôn ngữ của nước chủ nhà Trong khi đó interpreter dịchtừ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ừngcâ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ànhphầ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ảichờ 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ầnthiế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ừngphần chương trình vào hoạt động nếu phần việc ấy đã được viết đúng bằng ngôn ngữ lậptrì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ầuchỉ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 Trongthự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ạothuậ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à
7
Trang 8mã đố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ớicá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àolư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 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 choSQL-92 SQL đang được dùng trong các phiên bản Sybase SQL Server, Microsoft SQLServer, IBM OS/2 Extended Edition Database Manager, DEC RDb/VMS và Oracle Serverfor 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
(Query-by-Thế hệ thứ năm gắn liền với nhóm ngôn ngữ trí tuệ nhân tạo (AI-ArtificialIntelligence) Đâ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ừanê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 đượcngườ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ấtphát từ PROLOG, đang là cơ sở cho nhóm ngôn ngữ thế hệ thứ năm này Trong lĩnh vựcquản lý dữ liệu, sự gắn bó giữa ngôn ngữ thế hệ thứ tư và thứ năm đã sinh ra DATALOGchuyên phục vụ công tác hệ thống dữ liệu Ngôn ngữ LDL (Logic Data Language) đangchiế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áttriể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 trongcông cuộc tự động hoá thiết kế Tài liệu về LISP và AutoLISP đề nghị bạn đọc tìm hiểuthêm qua sách chuyên đề của cùng người viết
Chương 2
Trang 9TỰ ĐỘ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ụngkhi 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ângầ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ôngbiế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ênkhô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àmf(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ưngcủ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 x0 , x1, …, xn X[a, b] Các giá trị rời rạc này được cho dưới dạng bảng sau:
Đ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 Pn(x) của hàm số f(x) thì đathức đó là duy nhất
CM: Thật vậy nếu có hai đa thức Pn (x) và Q n (x) cùng là đa thức nội suy của hàm f(x) Lúc đó theo định nghĩa ta có:
P n (x i ) = y i ; Q n (x i ) = y i Vậy hiệu số P n (x i ) – Q n (x i ) 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 x i , i 0 ,n (Vì P n (x i ) – Q n (x i ) = y i – y i = 0, i 0 ,n ) Do vậy đa thức hiệu P n (x) – Q n (x) phải đồng nhất bằng không, nghĩa là P n (x i ) ≡ Q n (x i ).
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ểuLagrange, 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:
9
Trang 10f(x) = Pn(x) + Rn(x) (2.1)hoặc dạng đầy đủ:
n n
i
i i
n
f x x x
f x L x
f
0
) 1 ( 0
,)!
1(
)()
()
()()
0 ) (2.3)
Cụ thể như sau:
( ) (( )()( )) (( )(( ) ) (( ),)
1 1
1 0
1 1
1 0
n i i
i i i i
i
n i
i i
x x x
x x x x
x x x
x x x
x x x x
x x x x
i j khi x
0 1 ) (
i i
P
0
)()()
( mang tên gọi đa thức Lagrange, còn số hạng thứ haicủa vế phải công thức (2.2) gọi là hàm sai số
Đa thức Pn(x) được hiểu là đa thức bậc n và được khai triển dưới dạng:
Pn(xi) = f(xi) = yi; i = 0, 1, 2, (2.6)Lần lượt thay x = x0, x = x1, vào công thức (2.5) ta có thể xác định được công thứctính các hệ số ai
Ví dụ, từ Pn(x0) = f(x0) = y0 = a0(x0 - x1)(x0 - x2) (x0 - xn) sẽ nhận được:
( )( ( )) ( )
0 2 0 1 0
0 0
n
x x x x x x
x f a
x x
x f
0
0 ) (
tương tự ta có thể viết:
) ) (
)(
(
) (
) ) (
)(
(
) (
1 1
0
1 2 1 0 1
1 1
n
n n
n
x x x x x x
x f a
x x x x x x
x f a
Hệ số thứ i có dạng tổng quát:
)) (
1 1
1
i
i i
x x x
x x x x x x x
x f a
Trang 11
n n n n
n
n
n
n n
n n
y x x x x x x
x x x x x x
y x x x x x x
x x x x x x y
x x x x x x
x x x x x x x
P
) ) (
)(
(
) ) (
)(
(
) ) (
)(
(
) ) (
)(
( )
) (
)(
(
) ) (
)(
( ) (
1 1
0
2 1
1 1
2 1 0 1
2 1
0 0
2 0 1 0
2 1
n x L x f x P
0
) ( ) ( )
x x x x x L
0 )
Những trường hợp riêng của hàm nội suy Lagrange:
0 0
1 0
1 1
)(
)()(
)()
x x
x x y x x
x x x P
) 2 ( 17
1 2 1 0 1
2 0
0 2 0 1 0
2 1
2
) )(
(
) )(
( )
)(
(
) )(
( )
)(
(
) )(
(
)
x x x x
x x x x y x x x x
x x x x y x x x x
x x x x
Trang 121 2 (
) 3 )(
1 ( 5 , 27 ) 3 1 )(
2 1 (
) 3 )(
2 ( 17
2 1
0 2
3 2 1 2 0 2
3 1
0
1 3 1 2 1 0 1
3 2
0 0
3 0 2 0 1 0
3 2
1 3
) )(
)(
(
) )(
)(
( )
)(
)(
(
) )(
)(
(
) )(
)(
(
) )(
)(
( )
)(
)(
(
) )(
)(
( ) (
y x x x x x x
x x x x x x y
x x x x x x
x x x x x x
y x x x x x x
x x x x x x y
x x x x x x
x x x x x x x
2 4 )(
1 4 (
) 3 )(
2 )(
1 ( 5 , 210 )
4 3 )(
2 3 )(
1 3 (
) 4 )(
2 )(
1 ( 76
) 4 1 )(
3 2 )(
1 2 (
) 4 )(
3 )(
1 ( 5 , 27 ) 4 1 )(
3 1 )(
2 1 (
) 4 )(
3 )(
2 ( 17
x x
x x
x x
x x
x x
5) y = axbnhư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ầnthực hiện các thí nghiệm, các đo đạc v.v… một số cặp giá trị tương ứng (xi, yi), với i =1,2,
…, n theo bảng sau:
Trang 13
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
(2.13)tức là:
Trang 14Bây giờ chúng ta thử tính các giá trị mới của y tại các xi 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)
Đâ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
Trang 15b) Cho mối quan hệ y = a ebx
1 Lấy lô-ga-rít hai vế của y = aebx
I ( ) = F(b) – F(a) (2.17)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ínhgầ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
1
0
)(
x
x
dx x
f +
2
1
)(
x
x
dx x
n n
x
x
dx x f
1
)(
0
)()
Đổ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ó
22
10
1)
2(
)(
)
0 0
1
0
0
2 0 0
0 1
1
0
y y h y y
h t
t y
t t y h dt y t y h dx
1
0
y y h dx x f
Trang 16y y h dx x f
b
a
y y y
y y y
h dx x
a b h M I
), (
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
x f(x) = 1/(1 + x2)
(2.19)
(2.20)
Trang 172.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
1) Xét tích phân
b
a
dx x f
Trang 18xi = a + ih, h b n a
2
) (
, i = 0, 1, …, 2n Giả sử yi = f(xi) Ta có:
x f dx x f dx x f
2
2 2 4
2 2
0
)(
)()
()
0
)()
Đổi biến x = x0+ h t thì dx = h dt, ứng với t = 0, ứng với x2 là t = 2 Do đó:
0
22
32
12
)2
)1((
)
(
2 0
0 2 2 3 0
2 0 0
2 0
0 2
3 2
4 3
8 2
1 2
2
0
y y y
h dx x f
2 2
i x
x
y y
y
h dx x f
( 0 1 2 2 3 4 2n 2 2n 1 2n
b
a
y y
y y
y y y
y y
h dx
2
) (
a b h M I
I
IV S
), (
Trang 192.2.9 Sơ đồ tóm tắt công thức Simson
Phương án 1: cho trước số khoảng chia 2n
1) Xét tích phân
b
a
dx x f
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
0
sin
1) Hỏi phải chia đoạn [0,1] thành mấy (n = ?) đoạn con bằng nhau để khití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ứcSimson đến 6 chữ số lẻ thập phân
19
Trang 202.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
Cho đường cong y = f(x) được thể hiện trên hình 2.2
Tọa độ các tung độ có khoảng cách L bằng nhau
Diện tích hình phẳng được giới hạn bởi đường cong trong khoảng từ a đến b với trụchoành ox sẽ được xác định như sau:
b a b
n
n n
y K
L y
y y
y y L
y y
L y
y L y
y L
0 1
2 1 0
1 2
1 1
0
2 ) 2
2 2 (
2
2 2
trong đó: Ki = 1, 2, 2, , 2, 1 - hệ số tính toán của phương pháp hình thang
yi – giá trị tung độ tại vị trí thứ điểm thứ i trên trục ox
2.3.2 Phương pháp Simpson
2.3.2.1 Qui tắc thứ nhất của Simpson (Simpson I)
Qui tắc này được áp dụng cho nhóm 3 tọa độ có khoảng cách bằng nhau Cho đườngcong y = f(x) biểu thị trên hình 2.3 Giả sử đây là đường cong bậc 2 và có phương trìnhbiểu diễn như sau :
y = a0 + a1x + a2x2
(2.24)Khi thay x = 0; x = L và x = 2L vào phương trình (2.24) ta thu được
y0 = a0 ;
y= a + a L + a L2
f(x)
xy
Trang 21y2 = a0 + 2a1L + 4a2L2Suy ra
a0 = y0;
y y y a
2
2
L
y y y a
b a b
b a
x
x
dx x a x a
2 1 0
2
2 1
8 2
1 4 1
1 4 1
1 4 1
1 4 1 + Ki: 1 4 2 4 2 2 4 2 4 1
Trang 22Hình 2.4 Sơ đồ xác định hệ số qui tắc Simpson I.
Như vậy công thức tổng quát để tính diện tích được chắn bởi đường cong (2.24)trong khoảng a đến b áp dụng chi nhóm 3 tọa độ đều nhau được viết như sau :
b a b
b a
x
x
dx x a x a
2 1
n i
i y K L
0
3 (2.27)
trong đó: L ab n ; Ki = 1, 4, 2, 4, 2, ,4, 2, 4, 1 (theo hình 2.4)
2.3.2.2 Qui tắc thứ hai của Simpson (Simpson II)
Qui tắc này được áp dụng cho nhóm 4 tọa độ có khoảng cách bằng nhau
Cho đường cong y = f(x) biểu thị trên hình 2.4 Giả sử đây là đường cong bậc 3 và cóphương trình biểu diễn như sau :
y = a0 + a1x + a2x2
+a3x3 (2.28)Khi thay x = 0; x = L; x = 2L và x = 3 L vào phương trình (2.28) ta thu được
2
452
L
y y y y a
6
33
L
y y y y a
b a
x
x
dx x a x a x a
3
2 2 1 0
4 3
3 2
2 1 0
4
81 9
Trang 23Thay các giá trị a0, a1, a2 và a3 vào (2.29) ta có :
F = (1y0 + 3y1+ 3y2 + 1y3) 3L/8 (2.30)Trong trường hợp chung có n khoảng chia đều nhau (với n là bội số của 3) qui tắcthứ hai của phương pháp Simpson cho nhóm 4 tọa độ kế tiếp nhau, các hệ số tính toán đượcchọn như sau:
b a
x
x
dx x a x a x a
3
2 2 1
n i
i y K L
0
83
1 4 2 3 3 1
Trang 24Giả sử ta có đường cong được biểu diễn trên hình 2.8.
Diện tích hình phẳng được chắn bởi đường cong y = f(x) trong khoảng từ - L/2 đến +L/2 được xác định như sau:
)
( 1 2
2 /
2 /
n L
L
y y
y n
L dx y
(2.32)Trong công thức (2.32) khoảng cách giữa các tung độ không bằng nhau, vị trí cáctung độ thay đổi tùy theo số đường thẳng góc dùng trong tính toán n và đối xứng với nhauqua trục oy Vị trí các tung độ được cho trong bảng 2.3
Hình 2.8 Chia tọa độ theo phương pháp Tre-bư-sev
Vị trí các đường thẳng góc xác định theo phương pháp Tre-bư-sev Bảng 2.3
2.4 TÍNH NỔI - THUỶ LỰC TÀU THUỶ
2.4.1 Tính các đại lượng hình học vỏ tàu
xy
x4
x3x
Trang 25Từ đường hình lý thuyết tiến hành tính các giá trị đặc trưng hình học vỏ tàu Thứ tựtính toán chia làm hai giai đoạn:
1- Các đại lượng đặc trưng của mặt đường nước;
2- Các đại lượng đặc trưng của mặt đường sườn tàu
Sau hai phần tính vừa nêu tiến hành tính toán các yêu tố tính nổi và thủy lực (gọi tắt
là các yếu tố thủy tĩnh) cho toàn tàu
Hình 2.9 Hệ tọa độ chuẩn
2.4.1.1 Đại lượng hình học của mặt đường nước
Biểu diễn đường nước bất kỳ của tàu (hình 2.9) dạng đường cong y = f(x), các phéptính đại lượng hình học của mặt đường nước được đưa về dạng sau
Diện tích mặt đường nước A w
Trang 26Hoành độ trọng tâm mặt đường nước
n
i i n
i i
n
i i b
a
b a f
y K
y i K L y
K L
y i K L ydx
xydx X
2 (2.36)
Momen quán tính mặt đường nước so với trục 0'y' (song song với trục Oy và đi qua
trọng tâm mặt đường nước) và cách trục Oy một đoạn Xf tính theo công thức trên sẽ là:
I'L = IL – Xf2.A w = 2
2
0
0 0
2 3
n
i i n
i i
y K
y i K L y
i K
n
i
i y K L
0
2 (2.37)
Momen quán tính diện tích mặt đường nước đối với trục dọc tàu 0x được gọi là
momen quán tính ngang tính theo công thức:
n i i b
3
23
2
(2.38)Trong các biểu thức trên y mang giá trị 1/2 chiều rộng tàu tại vị trí đang xét
2.4.1.2 Đại lượng hình học của mặt sườn (Mặt cắt ngang thân tàu)
Các đại lượng hình học đặc trưng cho mặt sườn thân tàu (hình 2.11) bao gồm: