1. Trang chủ
  2. » Giáo Dục - Đào Tạo

bài tập lớn môn phương pháp tính đề tài sử dụng spline bậc 3 tạo đường bao cho 1 hình phẳng bất kỳ

20 2 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Sử dụng Spline bậc 3 tạo đường bao cho 1 hình phẳng bất kỳ
Tác giả Nguyễn Ngọc Bảo Toàn, Trần Ngọc Bích Trâm, Mai Hoàng Bảo Trân, Phạm Minh Trí, Võ Quốc Trí, Phan Lê Thanh Trúc, Trần Văn Trường
Người hướng dẫn Thầy Võ Trần An
Trường học Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Phương Pháp Tính
Thể loại Bài tập lớn
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 20
Dung lượng 4,22 MB

Nội dung

Khi xác định một hàm số để bao phủ một mặt phẳng, chúng ta cóthể sử dụng hàm số đó để tính toán các giá trị tại bất kỳ điểm nào trên mặt phẳngđó.. Điều này rất hữu ích trong việc giải qu

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCH KHOA

BÁO CÁO BÀI TẬP LỚN

Môn: PHƯƠNG PHÁP TÍNH

Đề tài: Sử dụng Spline bậc 3 tạo đường bao cho 1 hình

phẳng bất kỳ LỚP L04 - NHÓM 13 - HK 231 Giảng viên hướng dẫn: Thầy Võ Trần An Sinh viên thực hiện Mã số sinh viên Phân công

Thành phố Hồ Chí Minh – 12/2023

Trang 2

MỤC LỤC

LỜI MỞ ĐẦU 3

NỘI DUNG BÀI BÁO CÁO 4

I CƠ SỞ LÝ THUYẾT 4

1 CÁC KHÁI NIỆM CƠ BẢN 4

2 PHƯƠNG PHÁP GIẢI 5

2.1 Spline bậc 3 tự nhiên 5

2.2 Spline bậc 3 ràng buộc 6

II THIẾT LẬP BÀI TOÁN 7

1 BÀI 1 7

2 BÀI 2 9

3 BÀI 3 11

4 BÀI 4 14

5 BÀI 5 16

6 BÀI 6 18

TÀI LIỆU THAM KHẢO 20

Trang 3

LỜI MỞ ĐẦU

Mặt phẳng là một khái niệm toán học đơn giản nhưng rất quan trọng trong nhiều lĩnh vực Khi xác định một hàm số để bao phủ một mặt phẳng, chúng ta có thể sử dụng hàm số đó để tính toán các giá trị tại bất kỳ điểm nào trên mặt phẳng

đó Điều này rất hữu ích trong việc giải quyết các vấn đề liên quan, như tìm kiếm các điểm cực trị, tìm kiếm các điểm cực đại và cực tiểu, và tìm kiếm các điểm giao nhau của các đường thẳng và mặt phẳng.

Spline là một phương pháp được sử dụng để xấp xỉ các hàm số Spline bậc 3

là một trong những phương pháp spline phổ biến nhất và được sử dụng rộng rãi trong các ứng dụng thực tế Spline bậc 3 có thể được sử dụng để tạo đường bao một mặt phẳng bằng cách xác định các điểm và tạo ra một hàm spline bậc 3 dựa trên các điểm đó

Một số lợi ích của việc sử dụng spline bậc 3 để bao phủ mặt phẳng bao gồm:

Tính liên tục: Hàm spline bậc 3 là một hàm liên tục trên toàn bộ mặt phẳng, do đó

nó có thể được sử dụng để xác định giá trị của hàm số tại bất kỳ điểm nào trên mặt

phẳng Tính mượt: Hàm spline bậc 3 là một hàm mượt trên toàn bộ mặt phẳng, do

đó nó có thể được sử dụng để xác định giá trị của đạo hàm tại bất kỳ điểm nào trên

mặt phẳng Tính linh hoạt: Spline bậc 3 có thể được sử dụng để xấp xỉ các hàm số

phức tạp trên mặt phẳng, do đó nó có thể được sử dụng trong nhiều ứng dụng khác nhau.

Trang 4

NỘI DUNG BÀI BÁO CÁO

I CƠ SỞ LÝ THUYẾT

1 CÁC KHÁI NIỆM CƠ BẢN

 Việc xây dựng một đa thức đi qua các điểm nội suy cho trước trong trường hợp n lớn là rất khó khăn Biện pháp khắc phục là trên từng đoạn liên tiếp của các cặp điểm nút nội suy ta nối chúng bởi các đường cong đơn giản như đoạn thẳng Tuy nhiên, khi đó tại các điểm nút hàm sẽ mất tính khả vi Do đó, phải xây dựng đường cong bằng cách nối các đoạn cong nhỏ lại với nhau Đường cong như vậy được gọi

là đường spline (đường ghép trơn) Các hàm trên các đoạn nhỏ này thường là các

đa thức và bậc cao nhất của các đa thức đó gọi là bậc của spline

 Đường cong spline bậc 3 có thể được sử dụng để xây dựng các đường cong mượt

mà và liền mạch trong không gian hai chiều Tuy nhiên, để bao quát một mặt phẳng, cần sử dụng đường cong spline bậc 3 trong không gian ba chiều

 Để tạo ra một đường cong spline bậc 3 trong không gian ba chiều, cần có một tập

hợp các điểm kiểm soát Sau đó, sử dụng các thuật toán như Casteljau hoặc De

Boor để giải quyết đường cong spline bậc 3.

Định nghĩa:

Đường cong trơn y=S ( x )={ g0(x )nếu x ∈[x0, x1]

g1(x )nếu x ∈[x1, x2]

g n−1(x)nếu x ∈[ x n−1 , x n]

được gọi là đường cong spline

=> g k(x )=a k+b k(x−x k)+c k(x−x k)2+d k(x−x k)3 được gọi là nội suy bậc 3

Cho f(x) xác định trên đoạn [a;b] và một phép phân hoạch của nó:

a=x0<x1<x2=b

y0=f(x0), y1=f(x1)=f (x2)

Một spline bậc 3 nội suy hàm f(x) trên [a;b] là hàm g(x) thỏa các điều kiện sau:

1 g(x) có đạo hàm đến cấp 2 liên tục trên [a;b]

2 g ( x )={g0( x ) x ∈[ x0, x1]

g1( x ) x ∈[ x1, x2]

3 g(x0)=f (x0)=y0, g(x1)=f(x1)=y1

Trang 5

Bổ sung 2 điều kiện ở biên x = a và x = b

2 PHƯƠNG PHÁP GIẢI

2.1 Spline bậc 3 tự nhiên

Cách giải spline bậc 3 tự nhiên:

Các hệ số a k , b k , c k , k k , k=0 , … ,n−1

Bước 1: Giải hệ AC = B để tìm C

c0=c n=0

Trang 6

A là

(h10

0

0

0

0

2(h0+h1)

h1

0

0

0

h1

2(h1+h2)

0 0

h2

h n−2

0 0

2(h n−2+h n−1) 0

0 0 0

h n−1

1 )

và B là

( 3 y2−y1 0

y1−y0

h0

3 y ny n−1

y n−1y n−2

h n−2

với h k=x k+1x k

Bước 2: Xác định được c0, c1, … , c n−1 , c n

b k=y k +1y k

h k

3 (c k+1+2 ck)

d k=c k+1c k

3 h k

∀ k =0 , …, n−1

2.2 Spline bậc 3 ràng buộc

Thỏa điều kiện S’(a) = α , S’(b) = β

Các hệ số a k , b k , c k , k k , k=0 , … ,n−1

A là

(2 h h00

0

0

0

h0

2(h0+h1)

h1

0

0

0

h1

2(h1+h2)

0 0

h2

h n−2

0 0

2(h n−2+h n−1)

h n−1

0 0 0

h n−1

2 h n−1)

Trang 7

và B là

y1−y0

3 y2−y1

y1−y0

h0

3 y ny n−1

y n−1y n−2

h n−2

3 β−3 y ny n−1

II THIẾT LẬP BÀI TOÁN

Ở bài báo cáo này, spline bậc 3 được sử dụng để vẽ nên đường bao của hình phẳng bất

kỳ, với điều kiện xác định được tọa độ của các điểm theo trục x, trục y

Bước 1: Cho hình ảnh cần vẽ đường bao vào trình duyệt Geogebra để xác định tọa độ của các điểm

Bước 2: Thu thập giá trị tọa độ và thực hiện code bằng MATLAB

Bước 3: Hình ảnh thu được của code là đường bao cần xác định

Sau đây là phần trình bày cụ thể về phương pháp vẽ đường bao với 6 bài toán tương ứng với 6 hình bất kỳ

1 BÀI 1

Yêu cầu: Với dữ liệu đã cho, vẽ đường bao phần lưng con vịt (như hình vẽ)

Trang 8

Thực hiện code MATLAB:

% Các điểm dữ liệu

x =

[0.9,1.3,1.9,2.1,2.6,3.0,3.9,4.4,4.7,5.0,6.0,7.0,8.0,9.2,10.5,11 3,11.6,12.0,12.6,13,13.3];

y =

[1.3,1.5,1.85,2.1,2.6,2.7,2.4,2.15,2.05,2.1,2.25,2.3,2.25,1.95,1 4,0.9,0.7,0.6,0.5,0.4,0.25];

[x_unique, idx] = unique(x);

y_unique = y(idx);

pp = csape(x_unique, y_unique, 'variational');

xx = linspace(min(x_unique),max(x_unique),1000);

yy = ppval(pp,xx);

figure;

plot(x_unique,y_unique,'LineWidth',1.5);

axis equal;

axis ([0 14 0 4]);

grid on;

title('Đường bao lưng vịt');

xlabel('Trục x');

Trang 9

ylabel('Trục y');

hold on;

scatter(x_unique,y_unique,25,'filled','r');

legend('Spline Curve');

Hình ảnh thu được:

2 BÀI 2

Yêu cầu: Cho hình sau, thực hiện vẽ đường bao phần trên của máy bay

Trang 10

Xác định tọa độ các điểm bằng Geogebra:

Thực hiện code MATLAB:

% Các điểm dữ liệu

x = […]

y = […]

[x_unique, idx] = unique(x);

y_unique = y(idx);

pp = csape(x_unique, y_unique, 'variational');

xx = linspace(min(x_unique), max(x_unique), 1000);

yy = ppval(pp, xx);

figure;

plot(x_unique, y_unique, 'o', xx, yy, 'LineWidth', 2, 'Color', [0.2, 0.4, 0.8]) % Thay đôi màu sắ$c và độ rộng đường spline

xlabel('X')

ylabel('Y')

title('Spline bậc 3 từ dữ liệu không cầ/n sắ$p xể$p (tùy chỉnh

legend('Data Points', 'Spline Curve')

% Đặt giới hạn cho trục x và y

Trang 11

xlim([xmin xmax]); % Giới hạn trục x

ylim([0 14]); % Giới hạn trục y

Hình ảnh thu được:

3 BÀI 3

Yêu cầu: Cho hình sau, thực hiện vẽ đường bao miếng phô mai

Trang 12

Xác định tọa độ các điểm bằng Geogebra:

Bảng số liệu (có làm tròn số):

Thực hiện code MATLAB:

% Các điểm dữ liệu

x =

[40,50.9,56.9,61.9,68,71,84.2,97.4,115,126.7,136,146,157,168.7,1 73.7,177.7,183,189];

y =

[53.7,54.3,50.2,50.5,45.3,38.6,41.8,47.6,50.4,51.6,53.7,50.6,49 5,46.2,51.2,55.2,53.7,53.1];

% Tạo spline bậc 3 bằng hàm csape

Trang 13

pp = csape(x, [0, y, 0], 'variational');

% Đánh giá spline tại các điểm bô sung để hiển thị mượt hởn

t_interp = linspace(min(x), max(x), 1000);

y_interp = fnval(pp, t_interp);

figure;

plot(x, y, 'o', 'MarkerFaceColor', 'b', 'MarkerSize', 8,

hold on;

plot(t_interp, y_interp, 'r-', 'LineWidth', 2, 'DisplayName',

legend('Location', 'best');

axis equal;

xlabel('Trục x');

ylabel('Trục y');

title('Đường bao miể$ng phô mai');

grid on;

Hình ảnh thu được:

Trang 14

4 BÀI 4

Yêu cầu: Cho bảng số liệu đã được xác định như sau, thực hiện vẽ đường bao nóc tòa nhà BK.B1

Bảng số liệu:

Thực hiện code MATLAB:

% Các điểm dữ liệu

x = [0.6762, 3.02603, 3.0184, 3.5779, 3.5856, 4.5001, 5.4036, 5.4128, 5.9181, 5.9423, 7.9535];

Trang 15

y = [3.8265, 4.5909, 4.8055, 4.9741, 5.29606, 5.5916, 5.2915, 4.9730, 4.8015, 4.5850, 4.0040];

t = linspace(0, 1, length(x));

pp_x = spline(t, x);

pp_y = spline(t, y);

% Đánh giá spline tại các điểm bô sung để hiển thị mượt hởn

num_points = 200;

t_interp = linspace(0, 1, num_points);

x_interp = ppval(pp_x, t_interp);

y_interp = ppval(pp_y, t_interp);

figure;

plot(x_interp, y_interp, 'r', 'LineWidth', 2);

axis equal;

hold on;

scatter(x, y, 100, 'filled', 'b');

hold off;

title('Nóc tòa BK.B1');

xlabel('X');

ylabel('Y');

legend('Đường bao spline bậc 3', 'Điểm tuyể$n');

axis equal;

Hình ảnh thu được:

Trang 16

5 BÀI 5

Yêu cầu: Thiết lập code dùng spline bậc 3 để vẽ đường bao cho ảnh Áp dụng code để vẽ đường bao cho trái hồ lô như hình sau

Dùng phần mềm Demos để xác định tọa độ các điểm, ta được bảng số liệu như sau:

Trang 17

Thực hiện code MATLAB:

clc;

clearvars;

n = input('Nhap so diem can tao: ');

x = zeros(1, n);

y = zeros(1, n);

for i = 1:n

fprintf('Nhap toa do diem %d:\n', i);

x(i) = input('Nhap x: ');

y(i) = input('Nhap y: ');

end

% Xầy dựng ma trận hệ sô$

A = [ones(n, 1), x', x'.^2, x'.^3];

Bx = y';

% Giai hệ phưởng trình để tìm các hệ sô$

Cx = linsolve(A, Bx);

% Tạo đường bao spline bậc 3

t = linspace(min(x), max(x), 100); % Tạo 100 điểm trển đoạn

[min(x), max(x)]

P_x = Cx(1) + Cx(2) * t + Cx(3) * t.^2 + Cx(4) * t.^3;

P_y = Cx(1) + Cx(2) * t + Cx(3) * t.^2 + Cx(4) * t.^3;

figure;

plot(t, P_x, 'b-', 'LineWidth', 2);

hold on;

scatter(x, y, 'ro'); % Hiển thị điểm

title('Đường bao Spline Bậc 3');

xlabel('X-axis');

ylabel('Y-axis');

grid on;

axis equal;

% Hiển thị các điểm

for i = 1:n

text(x(i), y(i), sprintf('P%d', i));

end

hold off;

Trang 18

Hình ảnh thu được:

6 BÀI 6

Yêu cầu: Tính toán đường cong cổng hình vòm Si Loius ở Mỹ được biểu diễn qua hàm số:

f ( x )=−4

9 x

2

bằng spline bậc 3 với khoảng chia n = 12 trên đoạn [-3;3]

Thực hiện code MATLAB:

x(1) = -3;

y(1) = -4/9*x(1)^2;

x(13) = 3;

y(13) = -4/9*x(13)^2;

dx = (x(13) - x(1)) / 12;

for i = 2:12

x(i) = x(i-1) + dx;

y(i) = -4/9*x(i)^2;

end

pp = spline(x,[0,y,0]);

xx = linspace(x(1), x(13), 100);

yy = ppval(pp,xx);

figure;

plot(xx,yy,'r',x,y,'bo');

xlabel('x');

ylabel('y');

title('f(x)');

Trang 19

legend('Spline bậc 3', 'các điểm tuyể$n', 'Location', 'Best');

Hình ảnh thu được:

Trang 20

TÀI LIỆU THAM KHẢO

[1] Richard Burden – Numerical Analysis 10th edition

[2] Steven C Chapra Applied Numerical Methods with MATLAB® for Engineers and Scientists Fourth Edition

[3] Lê Thái Thanh, Giáo trình Phương pháp tính, Nxb Đại học Quốc gia TP Hồ Chí

Minh

Ngày đăng: 14/08/2024, 15:06

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w