Chương I NỘI SUY, HÀM HÓA VÀ NURBS 72.2.4 Phương pháp tìm trực tiếp không qua giai đọan tính gradient 2.2.5 Những phương pháp sử dụng gradient, miền không hạn chế 91 4.1.3 Thể tích phần
Trang 1TRÄN CŨNG NGHỊ (Chủ biên), vũ TRỌNG CANG
pTTj [ T iT J m T M S R r » f J f f l l H l ■■
Trang 2TRƯỜNG ĐẠI HỌC BÁCH KHOA
Trần Công Nghị (Chủ biên), Võ Trọng Cang
Trang 3GT.QỊ.KTh(V)
Trang 4Chương I NỘI SUY, HÀM HÓA VÀ NURBS 7
2.2.4 Phương pháp tìm trực tiếp (không qua giai đọan tính gradient)
2.2.5 Những phương pháp sử dụng gradient, miền không hạn chế 91
4.1.3 Thể tích phần chim và các đại lượng liên quan đến thể tích 173
Trang 54.2.4 Thuật toán xác lập họ đường cross curves (pantokaren)
4.2.5 Tiêu chuẩn ổn định
4.2.6 Giới thiệu chưcmg trình tính tính nổi tàu
4.2.7 Lập thông báo ổn định cho thuyền trưởng
4.2.8 Xây dựng phần mềm phục vụ xếp hàng, xác định moment uốn lực
cắt tàu và đánh giá ổn định tàu hoạt động trên biển
4.2.9 Phần bổ sung
Chương 5 TÍNH sức CẢN VỎ TÀU THIẾT KÉ CHÂN VỊT TÀU THỦY
TÍNH TOÁN CHÒNG CHÀNH TÀU TRÊN SÓNG
PHẦN I: SỨC CẢN VỎ TÀU
5.1 Sức cản
5.2 Công suất hữu hiệu
5.3 Các phương pháp kinh nghiệm tính sức cản vỏ tàu
PHẦN II THIẾT KẾ CHÂN VỊT TÀU THỦY
5.4 Đặc tính hình học chân vịt
5.5 Đồ thị thiết kế chân vịt
5.6 xâm thực chân vịt tàu
5.7 Độ bến cánh chân vịt
5.8 Thiết kế chân vịt tàu thủy cánh cố định
5.9 lập chương trình thiết kế chân vịt tàu
5.10 Vẽ chân vịt trên máy cá nhân PC
PHẦN III CHÒNG CHÀNH TÀU TRÊN SÓNG
5.1 Lắc ngang tàu trên sóng điều hòa
5.2 Hàm rao
5.3 Xác định đặc trưng lắc ngang, lắc đứng, lắc dọc
5.4 Xây dựng phần mềm đánh giá lắc ngang tàu trên sóng biển
5.5 Chương trình máy tính mô phỏng chuyển động dọc của tàu
5.6 Bổ sung tài liệu
184189196204
212215
219219219223223237237244252257261269279292292
293
295
300
307 320
Trang 6Cuốn sách “Lập trình ứng (lụng trong thiết ké và đóng tàu ” lù bản in sau sửa chữa, bỏ sung
cua sách “Tin học ứng dụng trong thiết ké và đóng tàu" NXB Đại học Ouốc gia TP.HCM phát hành từ 2002.
Những đê tài trong tài liệu này bao gồm:
Lập trình tính toán tính nôi và tính ôn định tàu một thăn, tàu nhiêu thân,
Tính sức cản vỏ tàu, lập trình thiêt kẽ chân vịt tàu thủy, vẽ chân vịt tàu trên máy tính CP,
Tính toán tính núng đi biên (seakeeping) của tàu, xây dựng chương trình tính chòng chành tàu trên sóng điêu hỏa và trẽn sóng biên,
Các phương pháp, các thuật toán tính toán tôi ưu và ứng dụng vào thiết kế tối ưu tàu thủy, thiết kế kết cấu,
Các phương pháp nội suy và hàm hỏa giúp giải quyết cân bằng tùu trên nước, vẽ hoặc hiệu chỉnh sườn tàu, đường hình tàu
Tính cúc đường cong VCI mặt cong spline, B-spline, NƯRSB trong thiêt kê, mô phỏng vỏ tàu Sách trình bày theo cách tiện lợi cho người đọc Hai chương đâu giúp bạn dọc nhớ lại những hiên biết cân thiêt vê cúc phương pháp lỉnh toán liên quan đên nội dung của các đê tài, cỏ điểu kiện làm quen những chương trình lính viết bang ngôn ngữ C hoặc Matlab đang áp dụng rộng rai trong tính toán Các chương trình máy tính nhỏ - tụm chuyên ngừ từ procedure, subroutine, còn dược dừng tính toán những vân đẽ liên quan khúc trong ngành tàu Nội dung sách chu yêu góm những kiến thức đa được truyẽn đạt trong trường đại học chuyên ngành Trên cơ sở những van đề đang 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ê dang dặt ra và cách hoàn thiện một chương trình lính dựa vào giai thuật vừa cỏ Các giai thuật tính toán tính nang, như tính nói, ổn định, tính sức cản, chọn máy phù hợp, thiết ké chân vịt cánh cố định cho tàu, tính di biên (sea keeping), vẽ tàu đd được thư nghiệm
vù đưa veto ứng dụng.
Tài liệu trong sách cỏ thô giúp ích cho sinh viên theo học ngành đỏ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 dông đảo bạn dọc quan tâm đên tàu thúy.
Những người vièt xin chan thành cúm ơn cúc đông nghiệp, Tỏ giáo trình Trường Đại học Bách khoa Tp Ho Chí Minh, NXB Đại học Quốc gia Tp HCM đã giúp dữ in lụi cuốn sách này.
Trang 7NỘI SUY, HÀM HÓA VÀ NURBS
Trong chương này giới thiệu những phương pháp tính dùng nội suy và hàm hóa khi xử lý những vấn đề thường gặp trong thiết kế vỏ tàu, tính toán tính nổi tàu thủy, xử lý kết quả đo đạc từ thí nghiệm hoặc quan sát Các phương pháp nêu trong chương giúp người thiết kế nội suy, ngoại suy với yêu cầu đảm bảo chính xác các đường cong, mặt cong Những hiểu biết cơ
bản về phương pháp NURBS, viết tắt từ Non-Uniform Rational B-Spline, giúp kỹ sư tàu thủy
nắm bắt những phương pháp tự động hóa vẽ đường hình tàu, vở tàu
1.1 NỘI SUY LAGRANGE
Đa thúc nội suy Lagrange được viết dưới dạng1:
Đa thức p„(x) mặt khác được hiểu là đa thức bậc n, có dạng:
Pnự) = a0(x - X|) (X - x2) (X - x„) +
+ ClI (X - Xo) (x - x2) (x - x„) + + a2(x - Xo) (x - X|) (x - x„) +
+ a,(x - Xo) (x - X|) (x - x,.|) (x - X/+]) (x - x„)
(1992,2001)
Trang 8Các hệ sổ ao, a 1, Ỡ2v tính từ quan hệ:
Lần lượt thay X = Xo, X = X|, vào công thức cuối có thế xác định công thức tính các hệ so Ví
dụ, từ p„(xo) = Vo = ao(xo - xi)(xo - X2) (xo - x„) sẽ nhận được:
f ( x 0)
«0 =(x0 - x ,) ( x 0 - x 2) (x0 - x „ ) tương tự vậy có the viết:
còn gọi đa thức Lagrange:
Pn(x) ( x - x , ) ( x - x 2) (x -x n) To + 7 - 77 -( x - x 0) ( x - x 2) (x -x „ ):—7 -7 T 1 +
(*0 - *1 )(*0 - *2 )-O o - x„) (7 - x0 )(x, - x2 ) (x, - x„)+ + Q - * o ) ( x - 7 )•••(*-7 ,-1)
Trang 9Nộ/SUY, HÀM HÓA VÀ NURBS
Hàm p i(x) là đoạn thẳng qua hai điểm (x<), yo) (X| yi ), có tên gọi công thức nội suy tuyến tính 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 Hàm thứ ba là đường parabol bậc ba qua bốn điếm cho trước, gọi là nội suy bậc ba
Ví dụ 1 : Cho trước 4 điếm của hàm y = /ịx) Hăy tính giá trị của hàm tại X = 3.44 theo phươn
pháp nội suy Lagrange bậc 1,2 và 3
Nội suy hàm bậc 1 :
(3 4 4 - 3 50) „ (3 4 4 -3 40)/7, (3,44) = 0-294118 + _ 0,285714 = 0,290756
(3,40-3,50) (3,50 - 3.40)Hàm bậc 2:
p ,(3.44) (3.44-3.40X 3.44-3.50)0 298507 + ( 1 4 4 - 3 ,3 5 ) 0 4 4 - 3 ,5 0 ) 0 2 9 4 , , g
+
(3,35-3.40X3,35-3.50) (3.44-3,35X 3,44-3,40)
Chương trình hóa phương pháp nội suy Lagrange được thể hiện bàng ngôn ngừ c sau
#include (math.h>
void L a g r a n g e (xa, y a , n, X, y, dy)
float x n [], y a [], x,*y, *dy;
for (i=l; i<=n; i++) {
if ( ( dift = fabs(x - xa[l] )) < dif) {
Trang 11NỘI SUY, HÀM HỎA VÀ NURBS
1.2 NỘI SUY SPLINE
Vê mặt hình học, hàm spline có xuất xứ từ các đường cong được nắn theo mép các thanh thước mỏng, trước đây làm bằng gỗ, mà những người vẽ tàu trên sàn phóng dạng thường dùng Hiểu bản chất của hàm spline sẽ dễ dàng xây dựng các đường cong trong tự nhiên phục
tùng các hàm này Neu spline được trình bày dưới dạng hàm s(x), trong phạm vi thay rất nhò, s” (Ỵ) miêu tả cung uốn, còn chiều dài cung có thể thay bằng dx.
Hình 1.2 Xuất xứ tên gọi “spline ”
Khác với phưong pháp nội suy Lagrange, trong đó da thức bậc n phải miêu tả hàm đi qua n +
1 điểm, ví dụ hàm bậc 3 qua 4 điểm, phương pháp spline bậc 3 thực hiện hàm hóa dạng hàm spline trong mỗi phân đoạn hạn chế giữa các nút kề nhau Phương pháp này diễn đạt bàng ký
hiệu pp, viết tắt từ piecewise polynomial - đa thức trong từng phân đoạn.
p(x) = CI + bx + cx2 + c/.r’
Đa thức bậc 3 này xây dựng nhờ 4 hệ số, có đạo hàm bậc 1 và đạo hàm bậc 2
Hàm spline không thích hợp cho việc miêu tả các đường gẫy khúc song thể hiện đường cong
tự nhiên của vỏ tàu rất sát thực tế
Trong trường hợp thanh thước giả định trên đây chưa bị gẫy, có thể thấy rằng ,S' và liên tục trong [x0, JC„] Mặt khác từ lý thuyết về dầm trong cơ học có thể thấy rõ đường s(x) là da thức bậc ba (cubic) của X có tính liên tục qua các nút Đạo hàm bậc một và bậc hai của s(x) cũng
liên tạc trong phạm vi này
Số tham số trong hàm spline bậc ba được tính đủ như sau Giả sử đường s(x) được chia ra thành (n - 1) phân đoạn, hạn chế bang n nút Trong tất cả n - 1 phân đoạn của s, để miêu tả hình dáng hình học của mỗi phân đoạn cần 4 tham số, tổng cộng cần xử ly 4n - 4 tham số Như dã miêu tả, (n - 1) phân đoạn cùa s(x) tựa trên n nút, hàm s(x) cùng đạo hàm bậc một và đạo hàm bậc hai của nó liên tục tại tất cả (n - 2) nút nam trong s(x), chì trừ nút đầu tiên và nút thứ n Trường hợp phải thỏa mãn điều kiện s(x,) = Vi áp dụng cho n nút, cần thiết phải viết đủ
n điều kiện trên s Và như vậy bài toán có 4/7 - 6 điều kiện Ngoài điều này hàm spline phải thỏa mãn điêu kiện biên tại hai nút biên: ,v”(xi) = s '\x n) = 0.
Hàm f(x) xác định qua các nút a = Xo < X/ < .xn = b trong khoảng [a b] theo cách sau:
s là đa thức bậc 3 trong khoảng [xjXj+i], /■= 1,1, 2, ., n-Ị
S(xJ) = f(xJ) , j = \ , \ , 2 , , n - 2
Sj+i(Xj+i) = Sj (xr /), / = 1,1,2 , n-2
S\r l (xJrl) = S'j(xJ+lị j = 1.1,2, .,/7-2
S ”j~l(Xj + l) = S”y (xJ + l), j= 1,1,2, ., /7-2
Trang 12Điều kiện biên của hàm ¿ thuộc một trong hai dạng:
¿ ’o(7) = ¿0 + 4co + \ 2do = b\ = ¿ ’i(7)
¿ ” o(7) = 2co+ 12í/o = 2c, = ¿ " ,(7 )
Trang 13NOISIJY HAM HO A VA NURBS
Truong hop chung, xay dung cac ham bac 3 qua cac diem xq , X j , X 2 , x n nhu sau:
Cac dieu kien bien:
Tinh dao ham bac 1
Hien tai chung ta da xav dung 3n phuang trinh va so an la 3«.
Vdi j = 0,1 n 1 chung ta co the viet:
Trang 15NỘI SUY, HÀM HỎA VÀ NURBS 15
Trường hợp hai đầu bị ngâm điều kiện biên thê hiện như sau:
Nếu S'(a) = So\a) - f \ a ) = bo lúc đó
/ '( « ) = 7 - («I - « o ) - - ^ L(2c0 + c l)
Điều này tương đương h0(2cữ + c ,) = — (í/, - a0) ~ 3f \ à )
K Nếu s \ b ) = N„’(6) = / ’(ố) = bn
Trang 16Điều này tương đương (c„_, + 2c„) = - ữ„.,) + 3 /'(/>)
Xứ lý bài toán đang nêu trường hợp hai đầu ngàm:
Trường hợp này n = 3 và /ío = /ỉi = /72 = 0,5
0 0,86199 0,15536 0,0653748 0,0160031
1 0,95802 0,23274 0,0893795 0,0150227
2 1,09861 0,33338 0,11191 0,0087572
Trang 17NỘI SUY, HÀM HÓA VÀ NURBS 17
ĐỒ thị dựa vào kết quà nội suy spline (đường nét liền) thể hiện tại hình 1.4
Hàm spline thể hiện trong ngôn ngữ c dưới dây, viết theo giải thuật vừa nêu có thể giúp người đọc trong các việc chuyên môn
doúble c_spline (double u, double xy[] [2] , int N)
Trang 18if ( d[i] — O.OeO) d[i] = epsilon * dy;
b[i] = 2.0 * ( d[i-l] + d[i] );
if ( dxl = 0.OeO ) dxl = epsilon * (xy[3][l] - xy[l][l]);
if ( dx2 = O.OeO ) dx2 = epsilon * ( xy[2][1] - x y [0][1] );
Trang 19NỘI SUY, HÀM HỎA VÀ NURBS 19
b [0] = (xy[l] [1] - x y [0] [ 1]) / ( xy[l] [0] - xy[0][0] );
Áp (lụng nội suy spline vẽ đường hình tàu
Dựng các đường nước thân tàu
Từ bản vẽ đường lý thuvết, tại đường nước số 3 tàu vận tải hàng lỏng đọc một số dữ liệu dạng sau:
B/2 (m) 0 0,3355 1,4388 3,938 6,3855 8,4381
Waterline No 3
Trang 20Kết quả tính nhờ phép nội suy Spline bậc 3 cho phép nhận các giá trị nửa chiều rộng tàu tại các sườn thực Những dữ liệu chép ra đây là giá trị nửa chiều rộng tàu, tính từ sườn thực số 20 trở về trước tàu, đến sườn 48.
Trang 21NỘỈSUY, HÀM HÓA VÀ NURBS 21
B/2 (m)
Hình 1.6
Spline vói hàm hai chiều
Các đường cong bất kỳ trong không gian 2D có thể biểu diễn dưới dạng hàm gần đúng theo đường spline vừa nêu Giả sử hàm f(x.y) với hai biến X, y xác định trong miền:
X) < X < xn
yi < y < ym
Trong bài toán hai chiều này chúng ta có thể hình dung các giá trị của hàm hai biến được xếp
trong ma trận yaa[j][k], theo cách viết trong ngôn ngữ c , trong đó j thay đổi từ 1 đến n còn k thay đôi từ 1 đến m Cách sắp xếp này tưcmg đồng với sắp hai vector xa độ lớn m, và ya độ lớn n Quan hệ giữa hàm yaa và f(x,y) có dạng sau:
Giá trị cùa hàm f() tại điểm bất kỳ (x,y), nam trong tứ giác xác định bàng bốn cạnh, nối liền 4 nút bao điểm, thứ tự từ nút thấp bên trái, theo chiều quay ngược với chiều quay đồng hồ là 1,
Trang 22Đạo hàm của hàm f(x,y) được ký hiệu theo cách sau:
để t và u nằm giữa 0 và 1, hàm f(x,y) có thể viết lại dưới dạng:
Đạo hàm bậc một và bậc hai của hàm hai biến được tính theo công thức:
Các bước tiến hành tiếp theo không khác cách làm đã áp dụng cho hàm một biến Hàm spline
áp dụng cho hàm hai biến, tiếng Anh gọi là bicubic spline được chương trình hóa trên cơ sở
các hàm một biến theo nghĩa cubic spline, như đã trình bày tại phần trước
/* SPLIE2 - to splin2 */
void splie2(xa/ ya, yaa, m, n, y2a)
float xa [ ] , y a [ ] , **yaa, **y2a;
/* SPLIN2 - Bicubic Spline */
void splin2(xa, ya, yaa, y2a, m, n, X, y, f)
float x a [], ya[], **y2a, X, y, *f;
int m, n;
í
Trang 23NOlStJY, HAM HO A VA NURBS 23
int j ;
float *ytmp, *yytmp, *vector() /
void spline(), splint () , free_vector();
void splint(xa, ya, y2a, n, x, y)
float xa[], ya[], y2a[], x, *y;
void spline(x, y, n, y p l , ypn, y2)
float x[] , y [], ypl[], ypn[], y 2 [ ] ;
for (i=2; i<=n-l; i++) {
sig=(x[i] - x[i-l])/(x[i+l] -x[i-1]);
p=sig*y2[i-1]+2.0;
y2[i] = (sig -1.0) /p;
Trang 24u.[i] = (y[i+1 ] -y[i]) /<x[i+l] -x[i]) - (y[i] -y[i-l]) / (x[i] 1]) ;
-x[i-u[i] = ( 6.0*-x[i-u[i]/ (x[i+l] -x[i-l]) -sig * u[i-l]) /p;
Ví dụ nội suy mặt cong
Áp dụng cách thức nội suy spline đã trình bày cho phần đường cong, chủng ta có thể tìm giá trị của điểm bất kỳ trong mặt cong f(x,y) được các hàm spline dựng Ví dụ sau đây trình bày bước thực hành nội suy, đánh giá sai số phép nội suy
Sai 8Ố (Error)
Hình 1.8
Trang 25Nộ! SUY, HÀM HÓA VÀ NURBS 25
1.3 HÀM HÓA KÉT QUẢ ĐO TỪ THÍ NGHIỆM, TỪTHÓNG KÊ
Kết quả đo từ phòng thí nghiệm, từ đo thực tế hoặc dữ liệu thống kê thể hiện rất đa dạng Hình 1,9a giới thiệu kết quả đo từ thí nghiệm đóng cọc vào nền đất Khi chiều sâu cọc lớn, áp lực lên đầu cọc tăng Hình 1.9b phía phải mô tả đon giá sản phẩm sản xuất hàng loạt, khi số lượng sản xuất đang trong giai đoạn đơn chiếc, đơn giá cao, khi số lượng hàng sản xuất qui
mô lớn đơn giá giảm
Để có thể đưa tập họp kết quả đó phục tùng qui luật nhất định, miêu tả gần sát thực tế cân thiết xây dựng hàm toán đủ khả năng diễn tả sự việc Hình 1.10 phía trái cùng miêu tả quá trình nội suy bậc 1, tức dựa vào hàm tuyến tính để xác định giá trị tại 1 điểm hoặc nhiều diêm người dùng yêu cầu
o o o
Tùy thuộc cách hàm hóa, hàm vừa xây dựng đi qua tất cả các điểm đo cho trước, nếu có cách làm đúng yêu cầu, hình 1.1 la, sona cũng có thể đi qua miền tập họp dày các dữ liệu đo, hình1.1 Ib Trên hình này p chỉ hàm đa thức còn D chỉ điểm Ket quả của hàm hóa chúng ta luôn nhận được hàm giải tích miêu tả sự kiện, p có thể là đa thức song cũng có thể hàm mũ, hàm
e
Trang 26Hàm/k(x), k =0, 1,2, ., n liên tục, là hàm của biến X, còn hệ số Ck là ẩn số phải xác định
Trường hợp riêng, song thường gặp, /k(x) = x \ hàm p(x) cần xác định chính là đa thức bậc n Theo cách tổ chức này, sai số xác định tại mỗi vị trí Xj, j =0, 1, ., m tức là khoảng cách giữa hàm p(x) và /(Xj) được tính như sau:
Trang 27hoặc CÓ thể viết dưới dạng, thuận lợi hơn khi lập trình:
Hệ phương trình nêu trên được viết lại gọn hơn khi sử dụng ma trận Các hệ số c sắp xếp tại
vector {c} gồm n+ 1 thành phần, giá trị y-ị,j = 0 1,2, m xếp vào {y}, ma trận [F] tập họp m+\ dòng, ứng với các gía trị của/k ( X j)
c 0 ' y *
c n. ( A + l ) r l y , „ ' f o M / | K ) • / „ ( * , „ )
|Fl(mixni).{c}(nixi) = {y}(mixi), trong đó m, = m + 1; n ì = n + I (g)
Ma trận [F] gồm m+1 dòng, n+ỉ cột với n < m Vector {c} chi có n+ỉ dòng, {y} gồm m+1
dòng
Xử lý phương trình (g) theo nhiều cách khác nhau Dưới đây trình bày hai cách thông dụng,
dễ dùng Cách thứ nhất đưa bài toán (g) về dạng bài toán kinh điển như trinh bày tại (f) Nhân hai vế của phương trinh (g) với ma trận chuyển vị của [F] là [FJ1:
[F|T[F |ic)= |F ]T!yì
Từ đó có thể viết:
[A].{c> =
với [A] = [F] '[FỊ và {b} = [FỊ1 {y}.
Các hệ số {c} được xác định sau khi giải hệ phương trinh đại số tuyến tính.
(h)(i)
Trang 28Cách làm thứ hai là tiến hành giải hệ phương trình đại số gồm m+ 1 phương trình, chỉ chứa n + 1 ẩn, trong đó n < m, bàng phương pháp xử lý ma trận suy biến Phương pháp mang tên gọi trong tiếng Anh: Singular Value Decomposỉtion - SVD.
Hàm hóa bậc 1 nêu sau giúp giải thích các bước thực hiện Hàm tuyến tính viết dưới dạng:
Thứ tự tính và kết quả tính như sau đây:
Trang 29NỘI SUY, HÀM HÓA VÀ NURBS 29
Một trong những thuật toán hay nhất xử lý hệ phương trình đại số tuyến tính [A]
nhóm nhà toán học dưới sự chi dẫn của Wilkinson viết ra trong những năm sáu mươi bằng ngôn ngừ Algol đã dùng có hiệu quả trên những dàn máy tính Thủ tục trên người viết tài liệu này đã “chuyển ngữ” sang ngôn ngừ FORTRAN chạy trên dàn máy IBM những năm tháng đó
và sau đó “chuyển “ sang ngôn ngữ c , được giới thiệu tiếp theo, giúp bạn đọc xử lý những bài
toán thực tế Trong chương trình, người viết đang hạn chế n <10 Trường hợp người dùng cần
tăng số hệ số Ck đến số lớn hơn 9 ( tính từ 0), cần thay the JMAX bằng số hệ số cao nhất
Hàm LeastSquares được dùng xác định các hệ số thủy động lực chân vịt tàu, xác định các hệ
số đường cong sức cản vò tàu trong phần tự động hoá thiết kế chân vịt Hàm này là phương tiện chính cho các phép hồi qui dùng trong phần xác định sức cản tàu
Trang 30int m, n , Npoints,i , j, jpl,Min, Max;
double a[200] [JMAX] , b[JMAX];
double x±,p, res, ss;
int order, coeff[10] = { 0., 0., 0., 0., 0., 0., 0., 0., 0., c.o };
double X [10] ={ 0.23, 1.01, 2.29, 2.87, 4.15, 5.36, 5.51, 6.36, 6.84, 7.0};
Trang 31NOISUY, HAM HOA VA NURBS 31
printf("\n\nThe order is %d with res = % 1 0 61f\n\n", n, res);
for ( i =0; i <= n; i++) printf(”\tC[%d] = %15.81f\nM / i, b[i]);
}
Vi du 4 Hay xay dung ham bac 2 tren ca sd du lieu cho truac, tinh tir bieu thuc y = 1/x, ghi
tai bang tiep theo Bang dudng ham hoa xac dinh gia tri y tuong img vdi x = 3,44.
Trang 32Kết quả tính trình bày tại bảng
3,00 0,3333333 0,33272073,35 0,298507 0,2985069593,40 0,294118 0,2941179483,50 0,285714 0,2857139253,55 0,281690 0,2816989133,60 0,277778 0,277808568
3,44 0,290698 0,290696499
Ví dụ 5 Cho trước các điểm của hàm f{x) sau đây:
./(*) -0,9821 -0,7435 0,0691 2,1403 6,0391 10,8325Hàm hóa bằng đa thức bậc 3 nhận được các hệ số sau:
-0.3090 0,7075 0,4051 0,4333
Hàm bậc 3 từ hàm hóa ghi rỗ tại hình 1.12
Tiến hành hàm hóa bằng đa thức bậc 2 và bậc 5 nhận được kết quả trình bày tại cùng hình
Các hàm đa thức
Hình ì 12 Hàm hỏa đa thức
về mặt toán, thay đổi bậc của đa thức dùng hàm hóa làm thay đổi kết quả tính rõ ràng Chúng
ta cùng xem xét và đánh giá kết quả hàm hóa nhờ đa thức bậc 1 (tuyến tính), bậc 3, 5, 7 qua các điểm tròn nêu tại hình 1.13 Hàm tuyến tính hầu như không qua điểm nào của dữ liệu cho
Trang 33NỘI SUY, HÀM HỎA VÀ NURBS 33
trước, trong khi đó hàm bậc 5 và 7 đều đi qua các điểm đã cho Nếu chỉ quan tâm vấn đề từ mặt toán hàm bậc cao trong nhiều trường hợp tỏ ra “sát” dữ liệu cho trước Tuy nhiên khi hàm hóa các dữ liệu ghi nhận từ đo đạc thực tế, từ thí nghiệm vv người tính phải để ý đến tính vật lý cúa vấn đề đang đề cập Có những trường hợp, hàm tuyến tính miêu tả sát thực tế hiện tượng vật lý hơn những dạng khác, nếu vậy từ bốn hình nhỏ tại hình 1.13 nên chọn cách làm của hàm bậc 1, mặc dầu đường thẳng chủng ta tính được không đi qua các điểm
Hình 1.13 Anh hưởng bậc n đến kết quá hùm hóa
1.3.2 Hàm hóa theo mẫu hàm mũ, hàm ex
Nhóm hàm được dùng nhiều trong hàm hóa là còn là hàm exp(ax) Để hàm hóa hàmc.exp(a.x) = y chúng ta cần chuyển cả hai vế sang dạng hàm của logarit tự nhiên:
Trang 34Trường hợp chung khi gặp những hàm phi tuyến dạng đang nêu nên sử dụng phương pháp tổng các bình phương sai số nhỏ nhất để giải Thủ tục tìm lời giải trong trường hợp này là tìm điểm tối ưu của hàm tổng bình phương sai số.
Y j Ổ j = X Ip(x) - / ( *7) ĩ -> min
Cách làm này thể hiện qua ba ví dụ tiếp theo
Ví dụ 6: Từ dữ liệu sau đây:
Đây là bài toán tìm điểm tối ưu có hai biến A và B Áp dụng phương pháp tìm trực tiếp, ví dụ
phương pháp simplex trình bày tại chương 2 sách này để xác định hai biến A và B.
Các hệ số xác định sau tính tối ưu: A = 1,8600 B - 0,8714
Két quả tính giá trị hàmX*) = l,86.exp(- 0,8714.x2) tại các vị trí X = [-3 -2,2 -1,7 -1,5 -1,3 -1
Trang 35NỘI SUY, HÀM HÓA VÀ NURBS 35
Ví d ụ i :
Dừ liệu đầu vào:
x= [1 3 5 7 9 11 13 15 17 19]
y=[4,733 2,187 3, 1,427 1,779 1,23 1,605 1,535 1,398 2,021]
Cần thiết hàm hóa dừ liệu trên ở dạng y = axB
Thực hiện phép tính err = (/(* , ) - y )2 = XX'H ~ y<) m*n tronê khuôn khổ các
Trang 36Theo cách làm nêu trên, có thể viết:
= e 0 ÕỔ2 2 = e 2 dô, _ 4 = e vào hệ phương, A
63 424
424 3036
-2 9 6-2198
r *>
Từ hệ phương trình cuôi có thê xác định: Ci « 2; C2 » - 1
1.3.3 Hàm hóa nhờ các spline bậc 3
Đường cong spline bậc 3 CÓ đặc tính vô cùng quí, trong mỗi phân đoạn Ax nằm giữa hai nút
tính toán kề nhau, hàm y miêu tả tiến triển của đường cong y = f(x) trong phạm vi này dưới
dạng hàm bậc 3 Nhờ vậy người ta có thể tính toán nội suy tìm giá trị hàm f(y) với độ chính xác mong muốn Các đường sườn tàu thủy, trong phạm vi những phân đoạn AT không lớn, thường là đường cong sát với hàm bậc 3 Từ nhận xét này có thể hàm hóa đường sườn lý thuyết nhờ spline bậc 3, từ đây tiến hành tìm chiều rộng tại mớn nước bất kỳ cho sườn tàu Hình 1.16 trình bày cách làm này
Trang 37NỘI SUY, HÀM HÓA VÀ NURBS 37
trường hợp đường cong V = J{T) với các đường nước trong thiết kế sơ bộ /NT cỡ 2 m hoặc nhở
hơn lớn hơn một ít Trong khi đó yêu cầu của các nhà kiểm tra là phải có bảng tính thể tích
phần chìm tính cho các đường nước chỉ cách nhau AT = 0,2m hoặc ngắn hơn Trong những
trường hợp này sử dụng các cách hàm hóa dữ liệu cho trước thành dạng hàm sát với diễn tiến thực tế là vô cùng cần
Trang 39Nộ! SUY, HÀM HỎA VÀ NURBS 39
1.4 ỦNG DỤNG PHƯƠNG PHÁP NURBS TẠO MẶT VỎ TÀU
Kỹ thuật tạo đường cong sát thực tế, mặt cong các kết cấu gặp trong kỹ thuật nhờ NURBS,
viết tất từ Non-Uniform Rational B-Spline, đã được dùng rộng rãi trong CAD Phương pháp
được trình bày lần lượt trong các công trình với Pierre Bézier2 đi tiên phong từ đầu những năm bảy mươi thế kỷ XX Phương pháp này cũng đã có ứng dụng phổ biến để tạo mặt vỏ tàu thủy ngay từ những năm tám mươi - chín mươi, xem các tài liệu chuyên ngành3
1.4.1 Họ đưòng cong spline
Trong thiết kế vỏ tàu hiện nay chúng ta đang sử dụng các họ đường cong:
(1) Đường cong spline, ứng dụng rộng rãi của nhóm này là đường spline bậc 3, xuất xứ từ
hình dáng thước cong của thợ phóng dạng tàu thủy như đã đề cập tại phần đâu sách này Hình 1.3, 1.4 trình bày đường cong spline bậc 3
(2) Đường cong Bezier là trường hợp đặc biệt cùa NURBS, xác định nhờ hình nhiều cạnh
hoặc đường gãy khúc làm chức năng kiêm tra, như thê hiện tại hình 1.19b Biêu diên băng toán đường cong này thể hiện như sau:
2 Bézier - kỹ sư người France, thuộc hãng xe Renault
3 “Computational Geometry for Ships”, edited by H Nowacki, M.I.G Bloor, B Oleksievicz, 1995
“Automatic Surface Modelling of a Ship Hull”, Computer-Aided Design, Jan 2006 by F.Perez, J.A Suarez- Suarez, L.Fernadez-Jambrina
Trang 40Dưới dạng ma trận hàm P(t) được hiểu như là: