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

Tự động hóa tính toán, thiết kế và đóng tàu

296 643 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 296
Dung lượng 6,18 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Mở đầu mỗi chương bạn đọc có điều kiện ôn lại những hiểu biết cần thiết về các phương pháp tính liên quan đến nội dung của chương, có điều kiện làm quen chương trình tính viết bằng ngôn

Trang 2

Trang để trống

Trang 3

Trần công nghị

TỰ ĐỘNG HÓA TÍNH TOÁN, THIẾT

KẾ VÀ ĐÓNG TÀU

ĐẠI HỌC GIAO THÔNG VẬN TẢI TP HỒ CHÍ MINH

Trang 4

Mục lục

1 2 Các phương pháp thiết kế tàu 7

1.3 Thiết kế tối ưu tàu thủy 13

1.4 Ngôn ngữ lập trình và tự động hóa thiết kế 14

Chương 2: Tính nổi và tính ổn định tàu 29

2.1 Phương pháp số dùng trong tự động hóa tính toán tính nổi tàu 29

2.1.4 Đa thức Tchebyshev 37

2.2.1 Kích thước chính và các hệ số thân tàu 38

2.4 Thuật toán xác lập họ đường Cross Curves (pantokaren) 52

2.5 Giới thiệu chương trình tính tính nổi tàu thủy 63

3.1 Phương pháp tính áp dụng tính sức cản và chân vịt 64

3.3 Các phương pháp kinh nghiệm tính sức cản vỏ tàu 74

Chương 4: Thiết kế chân vịt tàu thủy 87

Trang 5

Chương 5: Qui hoạch tuyến tính và qui hoạch phi tuyến 133

5.1 Qui hoạch tuyến tính 133

5.2 Qui hoạch phi tuyến 140

5.2.1 Hàm một biến 140

5.2.2 Hàm nhiều biến 141

5.2.3 Xác định min/max hàm một biến 142

5.2.4 Phương pháp sử dụng gradient 146

5.2.5 Phương pháp tìm trực tiếp (không qua giai đoạn tính gradient) 150 5.2.6 Phương pháp dùng hàm phạt penalty 155

Chương 6: Thiết kế tối ưu tàu thủy 164

6.1 Đánh giá các chỉ tiêu kinh tế – kỹ thuật của tàu 164

6.2 Sơ đồ tính hiệu quả kinh tế 166

6.3 Tự động thiết kế tàu vận tải 167

6.4 Thiết kế tàu đánh cá 181

Chương 7: Spline và vẽ đường hình tàu 189

7.1 Spline 189

7.2 Vẽ đường hình tàu 195

7.3 Tự động hóa quá trình vẽ tàu 200

7.4 Sử dụng hàm spline vẽ đường hình tàu thủy 232

Tài liệu tham khảo Phụ lục 233

Trang 6

Mở đầu

“Tự động hóa tính toán, thiết kế và đóng tàu” trình bày cách tính toán, thuật toán phục

vụ việc lập chương trình tính tính năng tàu thủy, tính di chuyển, thiết bị đẩy tàu và tự động hóa vẽ tàu Sau mười năm sử dụng sách cho chuyên đề này những người viết chỉnh, sửa, viết lại, có bổ sung những phần lần xuất bản đầu chưa kịp đưa vào Sửa chữa và bổ sung lần này nhằm làm cho tài liệu phù hợp đề cương giảng dạy và học tập tại trường Đại học Giao thông Vận tải Tp Hồ Chí Minh

Hy vọng rằng sách có ích cho những người đang theo học đóng tàu và công trình nổi cũng như các đồng nghiệp đang làm việc trong cùng lĩnh vực

Thành phố Hồ Chí Minh tháng 6 năm 2009

Người viết

“Mở đầu” lần in thứ nhất

“Tự động hóa tính toán, thiết kế và đóng tàu” bao gồm hướng dẫn tính toán, chương

trình tính phục vụ những môn học tàu thủy tại trường đại học Những đề tài trong tài liệu này:

Thiết kế tàu, Tính nổi và tính ổn định, Sức cản vỏ tàu và thiết bị đẩy tàu, Qui hoạch tuyến tính, qui hoạch phi tuyến và ứng dụng của lý thuyết này vào thiết kế tối ưu tàu thủy, Spline và ứng dụng trong vẽ đường hình, khai triển vỏ tàu

Tài liệu được bố trí theo cách tiện lợi cho người đọc Mở đầu mỗi chương bạn đọc có điều kiện ôn lại những hiểu biết cần thiết về các phương pháp tính liên quan đến nội dung của chương,

có điều kiện làm quen chương trình tính viết bằng ngôn ngữ C áp dụng trong tính toán Các chương trình nhỏ này còn được dùng cho những vấn đề liên quan với ngành tàu Nội dung mỗi chương chỉ gồm những kiến thức đã được truyền đạt trong trường đại học chuyên ngành Trên cơ

sở những vấn đề đang được trình bày bạn đọc tìm hiểu thêm giải thuật xử lý những bài toán cụ thể đang đặt ra và cách hoàn thiện một chương trình máy tính dựa vào giải thuật vừa có

Tài liệu có thể giúp ích cho sinh viên khoa đóng tàu, kỹ sư làm việc trong lĩnh vực đóng sửa tàu, thiết kế, nghiên cứu tàu cùng đông đảo bạn đọc quan tâm đến tàu thủy khi tính toán tính năng, như tính nổi, ổn định, tính sức cản, chọn máy phù hợp, thiết kế mới, lập phương án đóng mới, lập phương án sửa chữa tàu vv

Trong quá trình biên soạn tài liệu những người làm công tác chuẩn bị nhận được sự giúp đỡ chân tình và thiết thực của ban giám hiệu phân hiệu Đại học Hàng hải, phân khoa đóng tàu, bạn cùng nghề và những bạn bè xa, gần Những đóng góp quí giá về nội dung, về biên soạn và hiệu chỉnh tài liệu, hiệu chỉnh các bản in thử vv… đã làm cho tài liệu có nội dung phù hợp hơn, tránh được nhiều sai sót Xin chân thành cám ơn về sự đóng góp quí giá trên Người viết căn cứ sự giúp

đỡ, chỉ dẫn trên đã cố gắng hoàn chỉnh tài liệu kịp ra mắt bạn đọc, tuy nhiên vì khả năng có hạn chắc rằng trong tài liệu vẫn còn những sai sót khó tránh Rất mong bạn đọc gần, xa góp thêm ý kiến nhằm làm cho tài liệu ngày càng hoàn thiện Thư, bài góp ý, xây dưng xin gửi về phân hiệu Đại học Hàng Hải, thành phố Hồ Chí Minh

Thành phố Hồ Chí Minh tháng 12 năm 2000

Trang 7

Chương 1

THIẾT KẾ TÀU

1.1 CÁC GIAI ĐOẠN THIẾT KẾ

Thông thường, theo truyền thống, thiết kế cần trải qua các giai đoạn:

(1) Xây dựng yêu cầu và nhiệm vụ thiết kế

Công việc mở đầu này thường do người chủ phương tiện đặt ra, người thiết kế phải thực hiện đúng và đủ Trong nhiệm vụ thiết kế cần thiết phải đề cập đến công dụng, loại hình, khu vực hoạt động của tàu Những tính năng kỹ thuật chủ yếu của tàu tương lai được trình bày rõ trong yêu cầu thiết kế Trong điều kiện Việt nam những vấn đề được đề cập trong nhiệm vụ thư có thể như sau:

- thiết bị sinh hoạt,

- thiết bị trên tàu (thiết bị boong): thiết bị lái, neo, buộc, phương tiện cứu sinh, phương tiện an toàn, cần cẩu,

- thiết bị buồng máy,

c/ Trên cơ sở kích thước chính, các hệ số đầy, bắt đầu triển khai việc xác định hình dáng hay

là dạng vỏ tàu, lập bản vẽ đường hình tàu

d/ Với tàu tự chạy, bắt đầu tính sức cản vỏ tàu, công suất máy cần thiết để tàu có thể hoạt động đạt yêu cầu đề ra

e/ Xác định lần nữa lượng chiếm nước và tính ổn định tàu, trên cơ sở đường hình vừa tạo ra f/ Kiểm tra tính nổi của tàu trên cơ sở đường hình mới tạo

g/ Chuẩn bị bố trí chung, có tính sơ bộ

h/ Tính trọng lượng, trọng tâm tàu trên cơ sở bố trí chung và các bản vẽ kết cấu ban đầu

Trang 8

(3) Thiết kế kỹ thuật

Trong phần thiết kế kỹ thuật chỉ sử dụng kết quả của một trong rất nhiều phương án từ thiết

kế sơ bộ, và kết quả ấy đã được thừa nhận Trên cơ sở đường hình tàu đã có, bố trí chung đã ổn định cho đến thời điểm đang kể, thiết bị máy móc đã được chọn, các bộ phận thiết kế tiến hành các công việc hợp tác, thiết kế chi tiết hơn, bố trí chi tiết và cụ thể hơn, mối liên hệ giữa các bộ phận trên tàu trở thành hiện thực hơn Trong giai đoạn này các sơ đồ lắp ráp được hoàn thiện, các thiết kế kết cấu được triển khai đến chi tiết Từ các bản vẽ chi tiết đã có thể tiến hành tính toán giá thành sản phẩm một cách chi tiết

Trong giai đoạn thiết kế kỹ thuật, các Viện thiết kế có thể tiến hành phân việc theo nhóm Các nhóm công tác có thể theo dạng sau

+ Bố trí các hệ thống ống liên quan máy chính, máy phụ,

+ Bố trí hệ thống điều khiển máy chính, máy phụ, tự động hoá buồng máy vv

- Bộ phận điện - điện tử

+ Cân bằng năng lượng điện trên tàu,

+ Bố trí hệ thống điện trên tàu,

+ Bố trí hệ thống nhận điện từ bờ,

+ Thiết bị an toàn điện,

+ Bố trí hệ thống máy móc thiết bị điện tử đảm bảo an toàn hàng hải, thông tin, liên lạc

Nếu coi quá trình thiết kế là sự hoàn thiện dần các phép tính nhằm thỏa mãn yêu cầu đề ra, quá trình này có thể minh họa dưới dạng sự tiến hóa theo đường xoắn ốc Mọi phép tính, phép thử được tiến hành riêng nhau, theo những qui luật vật lý nhất định Kết quả của phép tính này làm tiền

đề cho phép tính tiếp theo, sau đó kết quả của phép tính tiếp theo này làm tiền đề cho phép tính sau

nó Sau mỗi vòng tiến hóa, kết quả của cùng một phép tính sẽ đổi thay so với giá trị ban đầu, và kết quả lần thứ hai (sau đó là thứ ba, thứ tư ) lại làm chức năng dữ liệu đầu vào cho phép tính kế tiếp Chu trình trên lặp lại nhiều lần, theo đường xoắn ốc, cho đến khi kết quả cuối cùng thỏa mãn các điều kiện đặt ra, với sai sót trong phạm vi cho phép

Trên hình xoắn ốc minh hoạ cách làm này

Trang 9

yêu cầu của chủ tàu mạn khô

tính ổn định, tính chống chìm

tính êm

sức chở, dung tích máy chính vận tốc

Hình 1.1

1.2 CÁC PHƯƠNG PHÁP THIẾT KẾ TÀU

Ngày nay cĩ thể chia các phương pháp thiết kế thành những nhĩm sau:

1.2.1 THIẾT KẾ TỔNG HỢP

Phương pháp dựa trên cơ sở thống kê Trong phương pháp này tiến hành xác định các kích

thước chính của tàu, tỉ lệ kích thước, các hệ số, các đặc trưng hình học khác trên cơ sở các cơng thức kinh nghiệm, rút ra từ thực tế Các yêu cầu và mọi địi hỏi về ổn định, an tồn vv của tàu được thử sau mỗi lần tính

Phương pháp phương trình vi phân cho phép thay đổi một số đặc trưng trong khi chọn các

thơng số của tàu thiết kế Trong một phạm vi nhất định phương pháp phương trình vi phân tương đồng với cách làm của phép biến phân trong thiết kế

Phương pháp thiết kế khơng dựa hồn tồn vào tầu mẫu cũng được coi là một phương

pháp tổng hợp Trong cách làm này người ta dựa vào nguyên tắc đi dần đến mục tiêu bằng cách phép tính gần đúng dần Một trong những mơ hình tốn dùng để tính cĩ thể như sau:

Bước 1 Xác định lượng chiếm nước theo một trong các cách thơng dụng

Xác định các kích thước chính của tàu và các hệ số đầy

Bước 2 Xác định sức cản vỏ tàu, xác định cơng suất máy chính, thiết kế máy đẩy tàu, xác

định vận tốc tàu,

Xác định khối lượng thân tàu,

Điều chỉnh lượng chiếm nước của tàu

Bước 3 Xác định chính xác lượng chiếm nước, cơng suất máy chính, chọn các máy phụ, thiết

bị tàu

Bước 4 Kiểm tra tính ổn định, chiều cao mạn khơ, dung tích hầm hàng, kiểm tra tính chống

chìm, khả năng đi biển và nếu cĩ địi hỏi, kiểm tra độ bền chung tồn tàu

Bước 5 Hiệu chỉnh tồn bộ thơng số đã tính, xác định thơng số ở dạng cuối cùng

Cách làm khác cĩ thể là:

Bước 1 Xác định lượng chiếm nước

Bước 2 Xác định sức cản vỏ tàu, xác định cơng suất máy chính, thiết kế máy đẩy tàu, xác

định vận tốc tàu,

Xác định khối lượng thân tàu,

Điều chỉnh lượng chiếm nước của tàu

Tính chiều dài L, hệ số đầy thể tích

Bước 3 Tính H/T

Bước 4 Tính B/T theo tiêu chuẩn ổn định

Trang 10

Bước 5 Tính các đại lượng khác trên cơ sở D,L, CB (δ), H/T, B/T

Dưới đây sẽ giới thiệu tiếp một phương án thiết kế tàu vận tải biển do Watson đề nghị

1 Xác định sức chở của tàu: P = D - Ws

2 Xác định lượng chiếm nước: D = CB.L.B.T

Trong đó CB xác định từ các phương pháp thông dụng được trình bày tiếp

CB = f( L, v) , v- vận tốc tàu

4 B = f(L)

5 H = f(L)

6 T = f(L)

Các kích thước chính từ 4 đến 6 phụ thuộc vào các hạn chế sau:

4a L/B, phụ thuộc vào công suất máy,

5a L/H, đảm bảo độ bền tàu,

6a L/T

7 B/H hoặc là H = f(B), đảm bảo ổn định tàu,

8 T/B hoặc là T = f(B), ảnh hưởng đến chọn công suất máy tàu,

9 T/H, hoặc là T = f(H), đảm bảo chiều cao mạn khô

Ví dụ giải theo các phương pháp kinh điển

Các phương pháp tính kinh điển được áp dụng xử lý bài toán thiết kế thường gặp Cần thiết

kế tàu vận tải hàng khô, sức chở 13000dwt, khai thác với vận tốc 18 HL/h Tàu được trang bị máy diesel làm máy chính

Sơ bộ xác định lượng chiếm nước

Từ lý thuyết thiết kế tàu, cách xác định D nhanh nhất là sử dụng hệ số hiệu năng sức chở, tính bằng tỷ lệ giữa sức chở và lượng chiếm nước ηDW

13000 =

=

Chiều dài thiết kế của tàu vận tải tùy thuộc vào lượng chiếm nước và vận tốc khai thác Một

trong những công thức có độ tin cậy cao là công thức của Posdiunine, dùng cho tàu vận tải thế hệ những năm sáu mươi, bảy mươi:

][,2

3

2

m D c

Hệ số c trong trường hợp cụ thể bằng 7,16 Chiều dài thiết kế tính từ công thức sẽ là L = 153,5m (504’)

Vận tốc tương đối1 theo cách dùng tại UK và USA:

Trang 11

Hệ số đầy thân tàu CB = 1,06 -

L

s

v2

1 = 0,66

Tỷ lệ L/B = 2.L1/4 = 7

Tỷ lệ B/T được chọn nhằm đảm bảo các yêu cầu về ổn định tàu, B/T = 2,3

Tỷ lệ H/T nhằm đảm bảo đòi hỏi về chiều cao mạn khô tàu: H/T = 1,42

Trên cơ sở các kích thước chính tiến hành xác định trọng lượng và trọng tâm tàu theo các công thức kinh nghiệm

γ.CB l.(l /b).B3 = l (l /b).h.B3 pHF + ( )

c

V B b

CB.(1/ ) 3 2/3 s3

γ

.pM + (WDW + WR) hoặc:

γ.CB l.(l /b).B3 = l.(l /b).h pHF.B3 + ( )

c

V b

CB 2 / 3 s3

)

/1.(

CB.(1/ ) 2 / 3 s3

.pM.B2 - (WDW + WR) = 0

Từ phương trình cuối sẽ tìm được nghiệm B

Kích thước chính còn lại xác định theo công thức:

Trang 12

Sử dụng công thức (γ.CB (l/b) –(l/b).h.pHF ).B3 - ( )

c

V b

CB.(1/ ) 2 / 3 s3

.pM.B2 - (WDW + WR) =

0, trong đó WR chiếm khoảng 2% sức chở, tính bằng 260t, tiếp tục tính phương trình trọng lượng

Từ thống kê có thể nhận được các giá trị c = 400; pHF = 0,1295 t/m3; pM = 0,077t/HP

[1,031 0,66.(7/2,3) – (7/2,3).1,42 0,1295] B3 -

400

66,03,2

7.031,1

3 / 2

25,9

=

=

x gL

v

; CB = 0,66; CM = 0,981; CP = 0,673

WS = 2,73 D = 4600 mL 2

Từ đồ thị sức cản tàu vận tải, theo phương pháp Harwald – Guldhammer có thể đọc được hệ

số sức cản dư CR = 1,234x10-3 Sau hiệu chỉnh theo B/T thực tế hệ số lực cản mang giá trị CR = 1,21x10-3

Sức cản ma sát: CF = 1,49x10-3 Hiệu chỉnh cho các phần lồi CF = 1,54x10-3

Với dự trữ công suất chừng 25%, cần thiết chọn máy 12500 PS

Trọng lượng buồng máy tính theo công thức:

WM = BHP.pM = 12500x0,077 = 962 t

Theo cách tính này, trọng lượng tàu sẽ là:

D = 5260 + 962 + 13260 = 19482 t

Trang 13

So với lượng chiếm nước tính toán, trọng lượng dự trữ bị giảm 82 t, điều đó có thể chấp nhận được khi thiết kế

1.2.2 Thiết kế theo phương pháp biến phân

Theo cách đặt vấn đề của giáo sư Nogid, có thể sử dụng phương pháp biến phân xử lý các bài toán cơ bản của thiết kế tàu

Bài toán xác định giá trị thích hợp nhất của CB (hay là δ) và L/B khi các giá trị của vận tốc tàu vs, sức chở đã được xác định gần đúng, đưa về dạng:

P; Vecon; Q; k; q; = f( CB, L/B, ) theo cách diễn đạt của giáo sư Nogid

Bài toán xác định kích thước tàu thích hợp nhất khi vận tốc tàu đã đặt ra không được phép

hạ thấp, còn trọng tải đã được xác định gần sát

N; Q; k; q; = f(P, CB, L/B)

Bài toán mang tính tổng quát hơn được ghi làm hai dạng:

D; N; k; q; = f(CB, L/B, ) với Vecon = const

D; Vecon, k; q; = f(CB, L/B, ) với N = const

Cách giải theo phương pháp này thông thường theo trình tự sau

D = f(CB, L,B,T,H) + P

Thay vào phương trình trên một dẫy giá trị của một biến số, ví dụ CB = var, với giả thiết các biến khác, ví dụ B/T = const; H/T = const; và dưới dạng khai triển người giải bài toán cần thực hiện công việc theo sơ đồ:

D; N = f( CB, L/B) với Vecon = const;

D; Vecon = f( CB, L/B) với N = const; n = const

Để so sánh tính kinh tế của các phương án, tiến hành vẽ các đồ thị dạng:

Trang 14

D = D0 = const, trong đó D0 - lượng chiếm nước khởi đầu của thiết kế

Thực hiện các phép tính xác định trọng lượng, dung tích, ổn định vv cho các phương án theo sơ đồ tính thích hợp, ví dụ sơ đồ sau:

Bước tiếp theo tiến hành tính sức cản tàu cho tất cả phương án, theo mẫu tương tự Sau khi

có sức cản, động tác tiếp theo là xác định công suất máy chính Cách làm không khác các động tác khi xác định kích thước chính

Xác định công suất máy

Bảng 1.3 Tên gọi CB = CB1 CB = CB2

L B

⎝⎜ ⎞⎠⎟1

L B

⎝⎜ ⎞⎠⎟2

L B

⎝⎜ ⎞⎠⎟3

L B

⎝⎜ ⎞⎠⎟1

L B

⎝⎜ ⎞⎠⎟2

L B

⎝⎜ ⎞⎠⎟3

vecon

R, từ bảng tính sức cản

Trang 15

1.3 THIẾT KẾ TỐI ƯU TÀU THỦY

1.3.1 Mô hình toán thiết kế tàu

Khác với phương pháp biến phân, trong đó người thiết kế phải so sánh, đối chiếu hàng loạt phương án thiết kế dùng cho 1 sản phẩm, cụ thể hơn là cho 1 con tàu đang được đặt lên bàn cân, kết quả của phép so sánh đó là chọn ra một và chỉ một phương án “ tốt nhất” Trong thiết kế dựa vào lý thuyết tối ưu người thiết kế không phải so sánh, đối chiếu các phương án và thực tế người thiết kế không thể làm được việc đó, mà công cụ lao động được người thiết kế sử dụng “tự” xác định kết quả

“tối ưu” bằng con đường ngắn nhất tùy thuộc cách điều khiển của người thiết kế Trong cách làm theo lý thuyết tối ưu chúng ta không phải để mắt đến hàng ngàn, hàng triệu thậm chí hàng tỷ

“phương án” sẵn sàng bày ra trước mắt người xem, người thiết kế hướng dẫn công cụ lao động thử tìm phương án đạt yêu cầu trong số hàng triệu lời giải để có căn cứ làm việc

Bài toán thiết kế tàu trong thực tế không khác bài toán qui hoạch tuyến tính hoặc phi tuyến Giả sử chúng ta cần thiết kế một con tàu dân dụng nhằm mục đích mang lại lợi nhuận nhiều nhất chúng ta phải tính lợi ích kinh tế Lợi ích kinh tế ở đây thường có thể hiểu là tàu sẽ mang lại lợi

nhuận nhiều nhất trong trong phạm vi có thể, hoặc chi phí cho sản xuất và sử dụng tàu ít nhất trong điều kiện cho phép, hoặc hiểu theo cách thời gian hoàn vốn của công trình đầu tư ngắn nhất vv Trong thực tế người thiết kế phải giải bài toán tối ưu sau:

Hàm f(x) trong ngôn từ chuyên môn gọi là hàm mục tiêu Trong thiết kế tàu có thể coi nó dưới

dạng hàm chi phí sản xuất, sử dụng hoặc thời gian hoàn vốn Bản thân nó chứa tất cả thông số xác định đặc trưng hình học và động học tàu

Thông thường các thông số trong hàm mục tiêu bị hạn chế trong phạm vi nhất định, ví dụ chiều dài, chiều rộng, chiều cao tàu không thể là số 0 hoặc số âm, tỉ lệ giữa chiều chìm và chiều cao không thể là số âm và không thể lớn hơn 1 Mặt khác tàu được thiết kế phải đảm bảo ổn định, an toàn, phải đảm bảo độ bền khi nổi trên nước cũng như khi hoạt động vv Tất cả những đòi hỏi này trở thành những hạn chế mà bài toán bị ràng buộc Và như vậy điều kiện cần của bài toán trên đây được viết như sau:

a i ≤ x i ≤ b i

Trang 16

Mơ hình tốn cụ thể cho từng loại tàu bạn đọc sẽ tìm hiểu tại các phần tiếp theo Tại đây chúng ta

cĩ thể tiến đến bước tiếp của chương trình là chọn phương pháp số cho lời giải ổn định

Để giải bài tốn (A) cùng các hạn chế (B) cĩ thể sử dụng các phương pháp qui hoạch tuyến tính hoặc qui hoạch phi tuyến, hay cịn gọi là các phương pháp tính tối ưu thích hợp

1.4 NGƠN NGỮ LẬP TRÌNH VÀ TỰ ĐỘNG HĨA THIẾT KẾ

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à hồn thiện, là cơng cụ quan trọng phát triển cơng nghệ thơng tin Tự động hĩa tính tố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

• 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 mà ngày nay gọi là cơng nghệ

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 FFORTRAN Ngơn ngữ thích hợp cho việc xử lý những bài tốn

cỡ lớn của thời đại, được dùng trong các chương trình tính tốn thiết kế ơ tơ, tàu thủy, máy bay và tàu khơng gian, tính tố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 tối Các nhà sản cuấ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 rộng rãi

• Algol , viết tắt từ Algorithm, ra đời vào đầu những năm sáu nươi với sự tham gia rất đơng các nhà tốn học, các 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 tố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 tố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 những năm cuối 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 tố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 3

Ngơn ngữ này là ngơn ngữ tốt song khơng sinh ra tại Mỹ, và theo đĩ khơng tìm được chỗ đứng ở Mỹ, việc ấy đồng nghĩa với sự hạn chế số người dùng và sự phát triển tiếp theo

3 Toàn bộ thuật toán thuộc đại số tuyến tính do các nhà toán học giỏi nhất biên soạn đã được mã hóa thành chương trình bằng ngôn ngữ Algol 60, in lại trong tài liệu do Wilkinson J.H và Reinsch C chủ biên “Handbook for

Trang 17

• 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 Symbolic Instruction Code) do Kemeny và

Kurtz phát triển từ 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 quan trọ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 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 Wirth Tên gọi của ngôn ngữ Pascal để ghi nhớ công lao 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 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 Dennis 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 Programming 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 Standarts Institute (ANSI) thành lập ủy ban để tiêu chuẩn hoá ngôn ngữ C Kết quả làm việc của Uûy ban này là khẳng

Trang 18

định tính đúng đắn của C và ủy 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 của những ngôn ngữ lập trình đàng 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++ Professional , 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, vv 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

Chương trình viết bằng ngôn ngữ C dạng tiêu biểu thể hiện ở ví dụ sau đây:

Chương trình viết bằng ngôn ngữ C, bất kể lớn hay nhỏ, dài hay ngắn, gồm có hàm và biến

Hàm chứa các dòng lệnh ghi rõ các phép tính phải thực hiện còn biến ghi nhớ và lưu giữ giá trị hiện hành lúc chương trình làm việc Hàm ở đây tương đương với chương trình con hoặc thủ tục trong

FORTRAN và Pascal Ở ví dụ trên đây, hàm có tên là main (chương trình chính) Với một hàm bất

kỳ, bạn tùy ý gán cho nó một tên riêng bạn thích Trong trường hợp cụ thể này toàn bộ chương trình chỉ có một hàm và hàm đó đóng vai trò chương trình bởi vậy nó có tên chuẩn là main

Chương trình trên đây gồm các phần sau:

Phần 1: Dòng 1 chứa đường dẫn cho compiler

Trang 19

khoa học - kỹ thuật là object file) Sau đó bộ phận liên kết thâu nhận object file đó, và các file khác

nếu có, tạo ra file EXE hay còn gọi là mođun để nạp vào máy

Riêng quá trình dịch tiến hành theo thứ tự sau Chương trình gốc đi qua máy quét (scanner) dưới dạng một dòng các ký tự Máy quét nhận dạng đợt đầu, chỉ chấp nhận các ký tự đã được phép

đi qua để đến bộ phận phân loại ra từ khoá, nhận dạng, hằng số, ký hiệu v v Tạm gọi giai đoạn vừa qua là giai đoạn kiểm tra chính tả Bài viết đúng chính tả mới được đưa đến bộ phận kiểm tra ngữ pháp Trong ví dụ trên, sau printf phải có dấu “(“- mở và sau đó đóng lại bằng dấu “)” Khi đã làm xong tất cả công việc mệt nhọc đó compiler mới cho phép chuyển bộ mã dịch sang object file

Từ khóa

Đây là một trong 6 nhóm được C phân loại 5 nhóm còn lại là dấu nhận dạng, hằng số, dấu đặc biệt cho các xâu ký tự, toán tử và ký hiệu nêu ở phần đầu ANSI C dành 32 cụm từ sau đây làm

từ khoá Trong chương trình C sẽ viết, đừng bao giờ sử dụng các từ khoá này làm tên riêng cho

chương trình, nhận dạng, macro Những từ khoá đó là: auto double int struct

Thư viện của C

Thư viện chuẩn cho C tùy thuộc vào khả năng cung cấp của các hãng sản xuất phần mềm liên quan đến C Theo qui định trong ANSI C các hàm, kiểu, vĩ mô của thư viện chuẩn được khai báo

trong các header chuẩn Khai báo khi mở đầu bạn phải dùng ,ví dụ:

#include <stdlib.h>

là xuất phát từ các từ vừa nêu Std có nghĩa là chuẩn, lib - thư viên, còn “h” viết tắt từ header

Các header chuẩn tối thiểu , trong C nguyên thủy như sau :

<assert.h> <float.h> <math.h> <stdarg.h> <stdlib.h>

<ctype.h> <limits.h> <setjump.h> <stddef.h> <string.h>

<erro.h> <local.h> <signal.h> <std.h> <time.h>

Trong những chương tiếp theo của tài liệu, các ví dụ minh họa phương pháp tính và các chương trình tính được thể hiện bằng ngôn ngữ C Những hàm toán tính được chọn từ các chương trình mẫu viết bằng Algol sau đó được “dịch” sang C Những hàm khác được chuyển từ FORTRAN sang hoặc viết mới bằng C Bạn đọc quan tâm đến ngôn ngữ C đề nghị tìm đọc thêm “Giáo trình ngôn ngữ lập trình C Giành cho học viên kỹ thuật viên tin học”, Vi tính Bách khoa, Tp Hồ Chí Minh, 1997

• Ngôn ngữ C++

Trang 20

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 thỏa 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 vì 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 tiể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 hóa 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

Không phải điều ngạc nhiên, cũng chính từ Bell Labs, nơi sản sinh ra C, năm 1986 “The C++ Programming Language” do Bjarne Stroustrup viết với tư cách là “một cuốn sách” ra đời, mang lại cho người lập trình không khí mới

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ì là 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à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 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ị thức (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) vv… 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

Trang 21

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 hóa 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 sát 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 sau 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 việc ấy đã được viết đú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 nhanh 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 Ý tưởng này nảy sinh từ những năm bảy mươi Những ngôn ngữ ra đời trong thập niên 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 hóa 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

Trang 22

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 hòan 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 cá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 đóng vai trò hết sức quan trọng trong công cuộc tự động hóa 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

Những cấu trúc chính trong ngôn ngữ C

Trong tài liệu tự động hóa thiết kế này, các chương trình mẫu được mã hoá bằng ngôn ngữ C Với bạn đọc chưa viết chương trình bằng C cần xem phần này trước khi làm quen các ví dụ minh họa

Cấu trúc If - Else

Bạn cần đến cấu trúc If - Else khi phải ra quyết định Về hình thức, cú pháp của If - Else có dạng :

if (expression) Statement1

else Statement2

Trong đó Else là phần chọn lựa, có nghĩa là nó có thể xuất hiện khi cần hoặc không có mặt else cú pháp vẫn đúng Biểu thức expression phải được xử lý trước tiên Nếu điều kiện đặt ra trong biểu thức này là khác 0 thì statemant1 được thi hành Nếu điều kiện đưa ra kết quả bằng 0 thì theo

sau else statement2 sẽ được thực hiện

Ở dạng đơn giản nhất If và theo nó là phép thử dưới dạng biểu thức đủ để làm công việc:

mà không cần viết đầy đủ if (expression! = 0)

Giả sử đang tồn tại 2 số nguyên a, b; Yêu cầu đặt ra là : cần gán vào z giá trị a nếu a lớn hơn

b, ngược lại z sẽ nhận giá trị của b Đoạn chương trình sau làm việc này

Trang 23

Tiếp đó chúng ta yêu cầu, tất cả công việc đó chỉ có ý nghĩa thực tế trong điều kiện thỏa mãn phép thử n > 0 Trong trường hợp này có thể sử dụng các “if” lồng vào nhau theo dạng sau:

if (n>0) {

if (a>b)

z = a; } else z= b;

Theo cách gọi của những người soạn ngôn ngữ C thì đây là cấu trúc Else - if Cấu trúc này là

cách tốt nhứt để thực hiện quyết định do nhiều yếu tố gây ra Thứ tự thực hiện lần lượt từ trên xuống, đúng hơn là từ ngoài vào trong, nếu điều kiện thử của expressison là khác 0 hãy thực hiện statement, ngược lại thì bắt tay vào vòng if đứng sau else Công việc lặp lại động tác như vừa nêu Khi thực hiện xong statement, công việc trong if sẽ kết thúc để thoát ra ngoài Ví dụ:

7 while (low < = high) {

8 mid = (low+ high) /2;

9 if (x< v [mid] )

10 high = mid-1;

Trang 24

[default] : Statements

Trước tiên expression của Switch ( ) phải được đánh giá Expressison này chỉ thuộc một trong hai kiểu int hoặc char Khi giá trị biểu thức đã được xác định, switch ( công tắc điều khiển)

hướng chương trình đến một trong ba vị trí sau đây:

1 Nếu case const expr phù hợp với giá trị expressison, các dòng lệnh trong phạm vi

của case (trường hợp) này được thực thi

2 Nếu không có một case conts expr trong lòng của switch ( ) phù hợp với expressison, chương trình sẽ cho thi hành công việc ghi sau default, nếu bạn có đưa default (mặc định) vào thành

phần cùa switch ()

3 Trường hợp không có default, các trường hợp case đều không phù hợp với biểu thức expressison, chương trình bỏ qua cấu trúc switch để tiếp tục công việccủa mình

Đường đi của Switch có thể miêu tả trên sơ đồ sau:

int count=2; /* gán count =2 */

switch (count) { /* tại đây biểu thức count =2*/

case 1: /*trường hợp 1= count */

Trang 25

5 {

6 int c, I, nwhite, nother, ndigit[10];

7 nwhite = nother = 0 ;

8 for (i = 0; i<10; i ++) ndigit [i]= 0;

9 while ( ( c = getchar ( )) ! = EOF) {

Trong chương trình bạn hãy để ý đến dòng lệnh break, là lệnh yêu cầu lập tức thoát ra khỏi

switch() Break còn được dùng trong các cấu trúc for(), while thực hiện các vòng lập loop Mặc dù

sau default không cần thiết phải đặt break, song sự có mặt của nó không làm hại cho ai cả

Biểu thức sau while:

(c = getchar ( )) ! = EOF được hiểu như sau “nếu ký tự bạn đọc từ hàm getchar ( ) và đã gán cho c, không phải là dấu hiệu EOF (kết thúc file) “

Cấu trúc while ( )

Đây là vòng lặp có kiểm tra trước C chỉ cho phép lặp lại công việc khi điều kiện thử đặt ra trong while ( ) được thỏa mãn, hoặc theo cách nói của người trong ngành y là phép thử đưa ra kết quả dương tính (khác 0) Cú pháp của while như sau:

statements

Biểu thức expression được đánh giá trước Nếu giá trị của nó không phải là 0, các statement được thi hành và sau đó quay lại đánh giá expression Vòng lặp cứ tiến hành mãi cho đến khi expression được đánh giá là 0 Tại thời điểm này chương trình thoát khỏi while Ví dụ tính tổng các

số từ 1 đến 10 như sau:

int number = 1, total = 0;

while (number < 11) {

total + = number ; number + + ;

}

Với while, bạn có thể tạo được vòng lặp vĩnh cửu, ví dụ :

while (1) {

Trang 26

/* các lệnh cần thiết tại đây */

}

Cấu trúc Do - While ( )

Cấu trúc while ( ) vừa nêu yêu cầu kiểm tra phép thử trước, thực hiện cơng việc sau Cĩ khả

năng chỉ sau lần thử đầu kết quả đưa ra false ( hoặc 0 ) và vịng lặp while khơng được thực hiện

Trong thực tế sử dụng, cĩ lúc người ta yêu cầu chương trình cứ thử làm việc một lần rồi mới kiểm tra

phép thử Nếu phép thử đạt giá trị true ( hoặc 1) các bước lặp lại từ đầu, ngược lại sẽ cho phép

thốt Cách làm này được gọi là thực hiện trước, thử sau, người Mỹ gọi Back - End Condition Checking

1 /* itoa : chuyển n thành ký tự chữ cái trong s */Ø

2 void itoa (int n, char s [ ])

Cú pháp của vịng lặp for() như sau:

for ( expr 1 ; expr2 ; expr 3)

Thí dụ đơn giản bạn hay gặp là tính tổng đại số của một mảng, ví dụ gồm 10 thành phần Aùp dụng cấu trúc for ( ) cho phép tính tổng, bạn cĩ thể tính như sau:

int c [10] ;

int i , sum ;

Trang 27

for (i = 0; i <10 ; i + +) sum + = c[i] ;

Hoặc có thể viết gọn hơn như sau:

for ( i = 0 , sum = 0 ; i < 10 ; sum + = c [i] , i + + ) ;

Bạn cần biết thêm khi khai báo bạn có quyền bỏ qua expr1 hoặc expr2, hoặc expr3, hoặc bỏ qua cả 3 biểu thức trên Chỉ có một điều cần nhớ là không được bỏ dấu “;” bạn hãy để ý, nếu expr2 không xuất hiện, có nghĩa là không có điều kiện thử, vòng lặp của bạn trở thành vĩnh cữu Bạn phải dùng đến các biện pháp can thiệp bằng tay để thoát khỏi vòng lặp Ví dụ sau vẫn hợp lệ

Ví du Ch là biến kiểu char chiếm một byte, còn p (viết tắt từ pointer) là con trỏ kiểu char, trỏ đến biến Ch, cũng chỉ chiếm 1 byte, sơ đồ làm việc giữa con trỏ p và biến Ch như nhau:

để gán địa chỉ của Ch cho biến p

Trong trường hợp này p được giao công việc “chỉ điểm” Ch.Toán tử & chỉ được dùng cho các

đối tượng trong bộ nhớ, không được sử dụng cho biểu thức, hằng số hoặc biến thanh ghi

Toán tử đơn “*” có tên gọi là toán tử gián tiếp, khi áp dụng với con trỏ, nó thâm nhập vào

ngay đối tượng mà con trỏ trỏ đến

double * df ; /* *df thuộc kiểu double */

float * fd ; /* *fd thuộc kiểu float */

char * cp ; /* biểu thức * cp - dạng char hoặc chuỗi */

Trang 28

Mỗi con trỏ, bị hạn chế trong phạm vi, chỉ được trỏ đến một dạng thức dữ liệu mà thôi, thí dụ đến int,

double vv Chỉ có một trường hợp ngoại lệ, con trỏ dạng thức void được phép chỉ đến tất cả các

kiểu dữ liệu

Chúng ta hãy quay trở lại với thí dụ đầu Nếu ip trỏ đến số nguyên, các phép tính sau đây sẽ hợp lệ:

* ip = * ip + 2 ; /* tăng *ip thêm 2 */

* ip += 2 ; /* kết quả như trên */

Con trỏ không chỉ được dùng để trỏ đến biến dữ liệu mà còn được dùng khi cần trỏ đến con trỏ Trong C được phép đăng ký:

int i = 1 ; /* gán i = 1 */

int * ip = &i ; /* ip chỉ đến i còn * ip mang giá trị một số nguyên */

int ** iq = & ip ; /* *iq là con trỏ của con trỏ int, còn ** iq

Ví dụ sau minh hoạ cách làm việc của con trỏ pa với mảng một chiều a[]

int * pa ;

Với phép gán:

pa = & a [0] ; / * được viết theo cách khác pa = a */

làm cho con trỏ chỉ vào phần tử đầu tiên của mảng a[0], còn pa chứa địa chỉ của a[0] Nếu tiếp tục gán:

x = * pa ;

thì giá trị của a[0] sẽ gán cho biến x

Khi pa đã chỉ vào một phần tử đặc trưng của mảng, trong thí dụ này là a[0], theo định nghĩa

pa + 1 sẽ chỉ vào phần tử kế tiếp, còn pa + i chỉ vào phần tử thứ i+ 1 của mảng

pa: pa + 1: pa + 9:

a: a[0] a[1] a[9]

Bằng cách hiểu tương tự, chúng ta hiểu quan hệ giữa con trỏ và thành phần của mảng như sau:

* pa là nội dung của phần tử a[0]

* (pa + 1) là nội dung của phần tử a[1]

* (pa + i) là nội dung của phần tử a[i]

Quan hệ giữa chỉ mục của mảng a và các phép đại số của con trỏ rất chặt chẽ

Từ hình trên chúng ta nhận thấy rõ ràng ý nghĩa phép gán:

Trang 29

pa = &a[k] ; sumc += * pa; /* += * (a + k) */

Dạng thức đăng ký con trỏ tới hàm và cách sử dụng nó theo thứ tự như sau:

Kiểu (* con trỏ - hàm) (danh sách tham số)

hoặc

kiểu ( * con trỏ [giới hạn] - hàm) (danh sách tham số );

giới hạn ở đây cần được hiểu là một số nguyên chỉ số lượng tối đa của các phần tử

Con trỏ chỉ hàm cũng giống như con trỏ trỏ đến các biến khác, cần phải được gán giá trị đầu trước khi sử dụng Thứ tự đăng ký, gán giá trị theo mẫu sau:

void func (void) ; /* nguyên mẫu của hàm */

void (* pf) (void) ; /* con trỏ chỉ hàm */

void (* tab[12]) (void) ; /* mảng các con trỏ chỉ làm */

fun1 = func ; /* gán giá trị ban đầu từ con trỏ khác */

Thí dụ sau đây nêu rõ cách làm khi cần gọi hàm sqrt.c, tính bình phương một số dạng double

và gọi hàm pow.c làm nhiệm vụ nâng một số dạng double lên bậc bất kỳ dạng double

double result;

double ( * docalc) (double arg) ;

double ( * mtab [10]) ( double arg1, double arg2);

docalc = sqrt ; /* trỏ đến hàm sqrt trong thư viện toán */

mtab[0] = pow ; /* trỏ đến hàm pow */

Trong bộ nhớ của mảng vùng HEAP làm nhiệm vụ cung cấp vùng nhở để nhập/xuất dữ liệu

và giải phóng vùng đó khi không cần đến

Vùng heap không trùng lặp với vùng stack của bộ nhớ song, heap và stack lại cùng chia nhau một phân khu bộ nhớ Nếu chương trình sử dụng nhiều ký ức của stack, thì ký ức của heap bị thu lại hoặc ngược lại Khi sử dụng vùng heap người lập trình cần được thông báo thường xuyên, ký ức còn

đủ để cấp phát hay đang bị thiếu để kịp thời điều chỉnh Cần lưu ý rằng, trong ngôn ngữ C của K&R

Trang 30

chưa sử dụng khái niệm vùng heap khi cấp phát vùng nhớ Tại thời điểm đó người ta chỉ sử dụng khái niệm vùng stack

Quay trở lại đề tài cấp phát vùng nhớ của chúng ta Khi bắt đầu chạy, chương trình không thể nhận biếøt vùng nhớ cần thiết nằm ở đâu vì thực tế không tồn tại vùng nhớ đó Vùng nhớ chỉ được cấp lúc chương trình thật sự cần và lập tức giải phóng vùng nhớ khi nó không còn tác dụng Từ cách làm đó chúng ta gọi cách cấp phát trên là cấp phát động, còn ký ức dùng cho việc đó cũng được gọi

là ký ức động Trong C có bốn hàm quản lý bộ nhớ làm nhiệm vụ cấp phát, quản lý nhớ động,

calloc(), malloc(), realloc() và free().

Có thể nhận vùng được cấp phát theo hai cách: dưới dạng các nhóm của đối tượng hoặc ở nhóm của các bytes Cách đầu sử dụng hàm calloc() còn cách sau sử dụng malloc() Định nghĩa đầy

đủ của bốn hàm như sau:

void * calloc ( size_t nmemb, size_t size );

void * malloc (size_t size);

void * realloc (void * ptr, size_t newsize);

void free (void * pheap);

Ví dụ cấp phát bộ nhớ cho mảng double a[10][100], có thể như sau:

double * pd ;

pd = alloc (10 * 100, sizeof (double));

Trang 31

Chương 2

TÍNH NỔI VÀ TÍNH ỔN ĐỊNH TÀU

2.1 PHƯƠNG PHÁP SỐ DÙNG TRONG TỰ ĐỘNG HÓA TÍNH TOÁN TÍNH NỔI TÀU

Trong chương này bạn đọc sử dụng những phương pháp tính thông dụng khi xử lý những vấn đề thường gặp trong tính tính nổi tàu thủy Các phương pháp được đề cập gồm các phương pháp tích phân, phương pháp nội suy và ngoại suy Các phương pháp số rất cần khác, bạn đọc sẽ làm quen trong những chương tiếp theo

2.1.1 Nội suy Lagrange

Đa thức nội suy Lagrange được viết dưới dạng1:

f(x) = pn(x) + Rn(x), (2.1) hoặc dạng đầy đủ:

b a

n

f x x x

f x L x

f

n i n i n

)()

()()()

(

) 1 ( 0

j i

x x

x x x

p

0

)()()

(

Đa thức pn(x) mặt khác được hiểu là đa thức bậc n, có dạng:

pn(x) = a0(x – x1) (x – x2) (x – xn) +

+ a1(x – x0) (x – x2) (x – xn) + + a2(x – x0) (x – x1) (x – xn) +

+ ai(x – x0) (x – x1) (x – xi-1) (x – xI+1) (x – xn)

an(x – x0) (x – x1) (x – xn-2)(x – xn-1) (2.4) Các hệ số a0, a1, a2, tính từ quan hệ:

pn(xi) = f(xi) = yi ; i = 0, 1, 2, (2.5) Lần lượt thay x = x0, x = x1, vào công thức cuối có thể xác định công thức tính các hệ số Ví dụ,

từ pn(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

1 R.W Hamming, “Numerical Methods for Scientists and Engineers”, McGraw-Hill, N.Y, 1962,

F.B Hildebrand, “Introduction to Numerical Analysis”, McGraw-Hill, N.Y., 1956

Trang 32

)(

(

)(

1 2 1 0 1

1 1

n x x x x x x

x f a

)(

(

)(

1 1

=

n n n

n

n n

x x x x x x

x f a

Hệ số thứ i mang dạng chung:

)) (

1 1

1

i

i i

x x x

x x x x x x x

x f a

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

1 1

0

1 1

2 1 0 1

2 0

0 0

2 0 1 0

2 1

p

0

)()()

j i

x x

x x x

0 0

1 0

1 1

)(

)()(

)()

x x

x x y x x

x x x

p

−+

1 0

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 x

−+

void Lagrange(xa, ya, n, x, y, dy)

float xn[], ya[], x,*y, *dy;

for (i=1; i<=n; i++) {

if ( ( dift = fabs(x - xa[1] )) < dif) {

Trang 33

Giả sử cần thực hiện tích phân hàm f(x) từ a đến b, có thể tiến hành tích từng phân đoạn và sau

đó tổng hợp kết quả Đoạn [a, b] được chia làm n phân đoạn bằng nhau, giới hạn bằng các nút, trong đó nút đầu tiên x0 = a, tiếp đó x1, x2, …, xn-1, xn= b Giá trị hàm f(x) được xác định cho tất cả các nút

)1(

0

2f x p

p − Δ + …+ R(x0 + p.h) (2.10) trong đó hàm sai số được tính theo công thức:

R(x0 + ph) = hn+1 p(p-1)…(p-n)/ (n+1)! * [f(n+1)(ξ) / 2! ], ξ ∈(x0, xn) (2.11) Công thức tính tích phân nêu trên có thể viết thành:

(1) Trong đa thức cuối chỉ giữ lại một thành phần đầu tiên, kết quả nhận được công thức tính tích phân theo nguyên tắc hình chữ nhật

)()

()

k b

a

n k

x x

x f dx

x

f

k k

()

([)

()

(

2 1

1 0

1

0

1 1

f x

f x

f

h

x f x f h du x f p x f h dx

x f dx

x

f

n

n k

k k

n k

b

a

n k

x x k

k

k

++

++

=

=

+

Trang 34

(3) Công thức Simpson được tính theo luật trên đây khi giữ lại ba thành phần đầu tiên của chuỗi

3)]

()(4)([3

)]

(

!2

)1()()

([)

()

(

2 1

2 2

1 0

2 2

,

2 , 0

2 1

2 2

2

,

2 , 0

2

0

2 2

,

2 , 0

2

n n

n

k

k k

k

k k

n k

k b

a

n k

x x k

x f x

f x

f x f x f

h x

f x f x f h

du x f p

p x f p x f h dx

x f dx

x

f

k k

++

++

+

=+

+

=

−+Δ+

#define FUNC(x) ((*func) (x) )

float trapezd( func, a, b, n)

)()

()

()

3

1

x f a x f a x f a dx x

x x

Nếu gán fi(x) các giá trị 1, x và x2, các ẩn số ai được xác định theo công thức:

Trang 35

3 2 1 3 1

2 3 1 2

3 1 3 2

2 3

1 3 1

3 3

;))(

(

)(

61

;6

12

1)(

a a x x a

x x x x

x x a

x x

x x x

x a

void integrationv(int N, float *X, float *f, float *Ans)

Cách làm trên đây được áp dụng tính gần đúng tích phân, trong đó các bước chia trên trục

không bắt buộc đều nhau, số phân đoạn lớn hơn 1, được thể hiện tại hàm sau đây:

float integ(int N, float *X, float *f )

Trang 36

()(x P x dx c n

1)

(12)

n

n x xP n

n x

Áp dụng tính trực giao của đa thức Pn(x) để xác định các tọa độ xj nhằm giảm thiểu sai số khi tính Công thức tính tích phân Gauss-Legendre có dạng:

dx x R dx x p dx x

f

b a n b

a

b a

Trong đó hàm f(x) có thể viết: f(x) = pn(x) + Rn(x)

b a

n

f x x x

f x L x

i n

)()

()()()

0 0

j i

x x

x x x

L

0

)(

Nếu sử dụng biến z theo cách sau đây:

x a b b a

z

22

−+

j i

z z

z z z

Trang 37

(z dz L z F z dz z z q z dz

i

i i

n i

()()

i

i i n

i

i

z F dz

z

Từ công thức cuối có thể xác định:

)) (

)(

) (

(

)) (

)(

) (

()

(

1 1

i i

i

z z z z z z z z

dx z z z

z z z z z dz

z L w

n i

i

z z

0

)(

=

0 1

1 0

0 0

)(

)()

()

i i i n

i P z c

0

)(Thay hai đa thức cuối vào biểu thức thuộc vế hai phía phải công thức (2.19) có thể viết:

dz z P z P c b z P z P c b n

i

n j

n i

n i i n j

i j i

()

z q z

i i i

n

i i i i n

1

1 0

2 1

1 0

)()

()

()

22

−+

+

Công thức tính tích phân theo Gauss-Legendre có dạng:

Trang 38

b ≅ − ∑=

a

n i

i

i f z W a b dx x

f

1

)()

()

a2,3 = 0,652145

x4,2 = 0,339981

Ví dụ tính theo công thức Gauss-Legendre

Tính giá trị tích phân sau ∫2

1 x dx

Thay thế biến z = 2x – 3 và hàm f(x) thành F(z) = 2/ (z+3) Tích phân ∫2

1 x

dx

có giá trị bằng tích phân ∫−+ +

float qgaus (func, a, b)

Trang 39

m n dx x T x T

()(1

1

n c dx x T x T

Tích phân hàm f(x), giới hạn a, b theo công thức Gauss – Tchebyshev sẽ là:

dz z a b b a f a b dx x

Hàm trọng lượng được trình bày trên, cho phép viết tiếp:

dz z F z

a b dx x

12

)()

1)

i x f z a

b n dx x

f

1

2 ( )1

)(2)

−+

Các nút trong công thức Tchebyshev được trình bày tại bảng sau

Trang 40

2.2 TÍNH NỔI TÀU THỦY

2.2.1 Kích thước chính và các hệ số thân tàu

Phân biệt các tên gọi liên quan đến chiều dài tàu sau:

Chiều dài toàn bộ tàu, Lt hoặc Loa, là khoảng cách đo từ điểm xa nhất trước tàu đến điểm xa nhất

sau lái

Chiều dài đường nước kết cấu LKW, đo trên đường nước thiết kế, kể từ điểm tiếp nước ở mũi tàu đến điểm tiếp nước phía sau lái

Chiều dài giữa hai trụ Lpp, là khoảng cách đo trên mặt đường nước, tính từ trụ lái đến trụ mũi

Trên tàu vỏ thép trụ lái được hiểu là trục đi qua trục quay bánh lái, còn trụ mũi đi qua điểm cắt nhau của đường nước thiết kế với mép ngoài trên lô mũi tàu Với các tàu có vách đuôi nằm nghiêng so với mặt cơ bản qua đáy (vách T ), trụ lái nhận đi qua đường cắt của vách nghiêng với đường nước thiết kế, tính trên mặt cắt dọc giữa tàu

Chiều rộng tàu lớn nhất Bmax, là khoảng cách lớn nhất đo tại mặt cắt ngang tại khu vực rộng nhất

của tàu, tính từ điểm xa nhất bên mạn trái đến điểm xa nhất bên mạn phải của tàu

Ngày đăng: 26/03/2015, 15:43

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Brant, R.P., “Algorithms for minimization without derivatives”, Englewood Cliffs, N.Y., 1973 Sách, tạp chí
Tiêu đề: Algorithms for minimization without derivatives
2. Demidovitch B.P, Maron I. A., “Computational Mathematics”, Moscow 1976 Sách, tạp chí
Tiêu đề: Computational Mathematics
Tác giả: Demidovitch B.P, Maron I. A
Nhà XB: Moscow
Năm: 1976
3. Ащик В.В., “Проектирование судов”, Ленинград, 1975 Sách, tạp chí
Tiêu đề: Проектирование судов
4. Kuniyatsu T. , “Application of computer to optimisation of principal dimensions of ships by parametric study”, Japan Shipbuiding and Marine Engineering, 1968 Sách, tạp chí
Tiêu đề: Application of computer to optimisation of principal dimensions of ships by parametric study
5. Mandel P. Reuven L., “Optimization methods applied to ship design”, Trans. SNAME, N.Y. , 1966 -1967 Sách, tạp chí
Tiêu đề: Optimization methods applied to ship design
Tác giả: Mandel P., Reuven L
Nhà XB: Trans. SNAME, N.Y.
Năm: 1966 -1967
6. Moler C.B., Solomon L.P. “Use of splines and numerical integration in geometrical acoustics"” Jour. Acous. Soc. Amer., 48, No 3, 1970 Sách, tạp chí
Tiêu đề: Use of splines and numerical integration in geometrical acoustics
7. Orchard-Hays W. , “Advanced linear-programming computing techniques”, McGraw-Hill N.Y., 1968 Sách, tạp chí
Tiêu đề: Advanced linear-programming computing techniques
8. Pchenitchny B., Daniline Y., “Méthodes numériques dans les proplèmes d’extrémum”, Moscow 1977 Sách, tạp chí
Tiêu đề: Méthodes numériques dans les proplèmes d’extrémum
Tác giả: Pchenitchny B., Daniline Y
Nhà XB: Moscow
Năm: 1977
9. Reinsch C., “Smoothing by spline functions”, Numer. Math., 10, 1967 10. Reinsch C., “Smoothing by spline functions”, Numer. Math., 16, 1971 Sách, tạp chí
Tiêu đề: Smoothing by spline functions
Tác giả: Reinsch C
Nhà XB: Numer. Math.
Năm: 1967
11. Toyoo M., Toshio Y. “Mathematical mould lofting by electronic computer”, Report No 2, Jour. Of Naval Arch. Of Japan, Vol 1, 1968, Tokyo Sách, tạp chí
Tiêu đề: Mathematical mould lofting by electronic computer
Tác giả: Toyoo M., Toshio Y
Nhà XB: Jour. Of Naval Arch. Of Japan
Năm: 1968
12. Wilkinson J.H., Reinsch C., “Handbook for automatic computation”, Heidelberg Springer, 1971 Sách, tạp chí
Tiêu đề: Handbook for automatic computation

HÌNH ẢNH LIÊN QUAN

Hình 2.11 Đồ thị Bonjean - Tự động hóa tính toán, thiết kế và đóng tàu
Hình 2.11 Đồ thị Bonjean (Trang 46)
Sơ đồ tính được giới thiệu tại hình 2.22. - Tự động hóa tính toán, thiết kế và đóng tàu
Sơ đồ t ính được giới thiệu tại hình 2.22 (Trang 56)
Hình 4.2 Mặt xoắn ốc và góc xoắn - Tự động hóa tính toán, thiết kế và đóng tàu
Hình 4.2 Mặt xoắn ốc và góc xoắn (Trang 89)
Hình chiếu đường bao cánh lên mặt phẳng Y0Z vuông góc với trục quay 0X gọi là hình chiếu bao - Tự động hóa tính toán, thiết kế và đóng tàu
Hình chi ếu đường bao cánh lên mặt phẳng Y0Z vuông góc với trục quay 0X gọi là hình chiếu bao (Trang 90)
Hình 4.9 Các thành phần tốc độ và thành phần lực trên cánh. - Tự động hóa tính toán, thiết kế và đóng tàu
Hình 4.9 Các thành phần tốc độ và thành phần lực trên cánh (Trang 94)
Hình 4.11  Hệ số lực đẩy, momen quay của chân vịt. - Tự động hóa tính toán, thiết kế và đóng tàu
Hình 4.11 Hệ số lực đẩy, momen quay của chân vịt (Trang 96)
Hình 4.12   Đồ thị Bp -  δ . - Tự động hóa tính toán, thiết kế và đóng tàu
Hình 4.12 Đồ thị Bp - δ (Trang 97)
Hình 4.17  Đồ thi Burrill - Tự động hóa tính toán, thiết kế và đóng tàu
Hình 4.17 Đồ thi Burrill (Trang 108)
Hình 4.22. Máy chính phụ thuộc vào H/D và J chân vịt. - Tự động hóa tính toán, thiết kế và đóng tàu
Hình 4.22. Máy chính phụ thuộc vào H/D và J chân vịt (Trang 114)
Bảng 5.30: Thiết kế theo chế độ kéo - Tự động hóa tính toán, thiết kế và đóng tàu
Bảng 5.30 Thiết kế theo chế độ kéo (Trang 117)
Hình ảnh nêu quan hệ giữa công việc máy chính và chân vịt giới thiệu tại hình 5.47. - Tự động hóa tính toán, thiết kế và đóng tàu
nh ảnh nêu quan hệ giữa công việc máy chính và chân vịt giới thiệu tại hình 5.47 (Trang 118)
Hình 4.31 Vẽ chân vịt - Tự động hóa tính toán, thiết kế và đóng tàu
Hình 4.31 Vẽ chân vịt (Trang 130)
Hình 4.33  Chân vịt 4 cánh vẽ trong không gian 3D. - Tự động hóa tính toán, thiết kế và đóng tàu
Hình 4.33 Chân vịt 4 cánh vẽ trong không gian 3D (Trang 131)
Bảng  A Hệ số  K klmn  chân vịt B4 và B5. - Tự động hóa tính toán, thiết kế và đóng tàu
ng A Hệ số K klmn chân vịt B4 và B5 (Trang 131)
Hình  6.1  Sơ đồ thiết kế  tàu theo nghĩa tối ưu. - Tự động hóa tính toán, thiết kế và đóng tàu
nh 6.1 Sơ đồ thiết kế tàu theo nghĩa tối ưu (Trang 169)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w