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

17 1 0
Tài liệu đã được kiểm tra trùng lặp
bài tập lớn bộ môn phương pháp tính mt1009 chủ đề sử dụng spline bậc 3 để tạo đường bao cho một hình phẳng bất kì

Đ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

ax.imshowimg, extent=0, img.shape[], 0, img.shape[]] # Tạo mảng giá trị từ 0 đến chiều dài và chiều rộng của hình với bước nhảy là 50x_ticks np.arange, img.shape[], 50 y_ticks np.arange,

Trang 2

1

Danh sách thành viên nhóm:

2310282 Nguyễn Hữu Bằng Code xử lý ảnh và giải pt 100%

2213335 Phan Nguyễn Phú Thông Phương pháp, Tổng hợp 100%

Trang 3

2

MỤC LỤC:

I Cơ sở lý thuyết Spline bậc ba: 3

1 Các khái niệm cơ bản: 3

Trang 4

3

I Cơ sở lý thuyết Spline bậc ba:

-Hàm spline bậc 3 là một hàm đa thức bậc 3 liên tục đến bậc 2 tại các nút Hàm spline bậc 3 thường được sử dụng để nội suy hoặc xấp xỉ các hàm gián đoạ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 sao cho vẫn bảo toàn tính khả vi của hàm

-Đườ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

*Các điều kiện biên:

-Các hệ số của hàm spline có thể được xác định bằng cách sử dụng các điều kiện biên sau:

*Điều kiện liên tục:

1 Các khái niệm cơ bản:

a Định nghĩa 1:

-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 Đặt y0=f(x0) , y1=f(x1), y2=f(x2) Một spline bậc ba 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:

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

 g(x) = g0(x) x ∈ [ x0 , x1 ] g1(x) x ∈ [ x1 , x2 ]

Trang 5

4 (Ở đây g0(x),g1(x) là các đa thức bậc ba)

 g(x0)=f(x0)=y0,g(x1)=f(x1)=y1,g(x2)=f(x2)=y2

-Xét đoạn [ x0 , x1 ] Đặt h0 = x1 – x0

Vì g0(x) là đa thức bậc ba nên g0(x) = a0 + b0(x-x0) + c0(x-x0)2 + d0(x-x0)3 -Do g(x0) = g0(x0) = y0 => y0 = a0 và g(x1) = g0(x1) = y1

 a1 + b1(x2-x1) + c1(x2-x1)2 +d1(x2-x1)3 = y2

Trang 6

5  a1 + b1h1 + c1h1 + d1h1 = y2

Thay b1 = (y2-y1)/h1-(h1/3)(c2+2c1) ; b0 = (y1-y0)/h0-(h0/3)(c1+2c0) ; d0=(c1-c0)/3h0

ta được : h0c0 + 2(h0+h1)c1 + h1c2 = 3(y2-y1)/h1-3(y1-y0)/ h0

Hệ này có vô số nghiệm

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

-Trên mỗi đoạn [xk,xk+1] , k = 0,1,2, n-1 , g(x) = gk(x) là 1 đa thức bậc ba

Trang 7

6 - gk(x) = f(xk) = yk , ∀k = 0,1,2,…n

Xét đoạn [xk,xk+1] , k = 0,1,2,…n-1 Đặt hk =xk+1 – xk

Vì gk(x) là đa thức bậc ba nên gk(x) = ak + bk (x-xk) + ck(x-xk)2 + dk (x-xk)3

Do g(xk) = gk (xk) = yk => yk = ak và ak +bkhk + ckhk + dkhk = g(x k+1) = gk ( x k+1) = y k+1

Từ đó, ta có hệ {

𝑏𝑘 =𝑦𝑘+1−𝑦𝑘

ℎ𝑘 − 𝑐𝑘ℎ𝑘− 𝑑𝑘ℎ𝑘2, ∀𝑘 = 0 𝑛 − 1𝑏𝑘−1 =𝑦𝑘−𝑦𝑘−1

ℎ𝑘−1 − 𝑐𝑘−1ℎ𝑘−1− 𝑑𝑘−1ℎ𝑘−12 , ∀𝑘 = 1 𝑛

Xét tại điểm 𝑥𝑘, k = 1 n-1 Do tính khả vi của hàm g (x) đến cấp 2 tại 𝑥𝑘 nên 𝑔′𝑘−1(𝑋𝑘) = 𝑔′𝑘 (𝑋𝑘) và 𝑔′′𝑘−1 (𝑋𝑘) = 𝑔′′𝑘 (𝑋𝑘) Từ điều kiện 𝑔′′𝑘−1 (𝑋𝑘) = 𝑔′′𝑘 (𝑋𝑘) ta được:

𝑑𝑘−1 =𝑐𝑘−𝑐𝑘−1

ℎ𝑘 , ∀𝑘 = 1 𝑛 − 1𝑑𝑘 =𝑐𝑘+1−𝑐𝑘

3ℎ𝑘 , ∀𝑘 = 1 𝑛 − 1 ⟹ {

𝑏𝑘 =𝑦𝑘+1−𝑦𝑘

ℎ𝑘 − ℎ𝑘

3 (𝑐𝑘+1+ 2𝑐𝑘), ∀𝑘 = 1 𝑛 − 1𝑏𝑘−1 =𝑦𝑘−𝑦𝑘−1

Trang 8

7 B3 Tính các hệ số bk, dk

𝑏𝑘 =𝑦𝑘+1− 𝑦𝑘

3 (𝑐𝑘+1+ 2𝑐𝑘)𝑑𝑘 =𝑐𝑘+1− 𝑐𝑘

3ℎ𝑘 , ∀𝑘 = 0 𝑛 − 1

3 Spline bậc ba ràng buộc:

Điều kiện để xác định 1 spline bậc ba ràng buộc là g’(a) = α, g’(b) = β Khi đó ta có thêm 2 phương trình

2ℎ0𝑐0+ ℎ0𝑐1 = 3𝑦1 − 𝑦0ℎ0 − 3𝛼ℎ𝑛−1𝑐𝑛−1+ 2ℎ𝑛−1𝑐𝑛 = 3𝛽 − 3𝑦𝑛 − 𝑦𝑛−1

ℎ𝑛−1Giải thuật xác định spline ràng buộc :

B1 Tính h

k=xk+1- xk, k = 0, n-1 ak= yk, k = 0, n

B2 Giải hệ Ac = b tìm c = (c0, c1, …, cn)t

B3 Tính các hệ số bk, dk

Trang 9

8 {

𝑎𝑘 = 𝑦𝑘𝑏𝑘 = 𝑦𝑘+1− 𝑦𝑘

3 (𝑐𝑘+1+ 2𝑐𝑘)𝑑𝑘 =𝑐𝑘+1− 𝑐𝑘

 



Trang 10

( )8.66.0268(1.7)46.77(1.7)(1.7) ;1.72.3150

2(ℎ1+ ℎ2)0

)

Trang 11

10 B =

ℎ1 − 3𝑦1−𝑦0ℎ0

ℎ2 − 3𝑦2−𝑦1ℎ1

= (0−2

0)

Giải hê ̣ AC=B ( spline bâ ̣c 3 nên 𝐶0=0 và 𝐶3=0) ta có: {8𝐶3𝐶1+ 3𝐶2 = −2

1+ 10𝐶2 =1

⇒ {𝐶1 =

ℎ0 −ℎ0

3 (𝑐1+ 2𝑐0) =𝑑0 =𝑐1−𝑐0

3ℎ0 = −43

 Với k=1 ⇒

𝑎1 = 𝑦1 = 2.1𝑏1 =𝑦2−𝑦1

ℎ1 −ℎ1

3 (𝑐2+ 2𝑐1) =𝑑1 =𝑐2−𝑐1

3ℎ1 = 7

 Với k=2 ⇒

𝑎2 = 𝑦2 = 2.5𝑏2 =𝑦3−𝑦2

ℎ2 −ℎ2

3 (𝑐3+ 2𝑐2) =𝑑2 =𝑐3−𝑐2

3ℎ2 = −5

Vâ ̣y 𝑔(𝑥) ={

1.3 +21301919𝑥 −42643 𝑥3 , 𝑥 ∈ [2,3]2.1 + 537

1065(𝑥 − 1) − 43

142(𝑥 − 1)2+ 7

142(𝑥 − 1)3 , 𝑥 ∈ [3,6]2.5 + 239

2130(𝑥 − 2) +10

71(𝑥 − 1)2− 5

213(𝑥 − 1)3 , 𝑥 ∈ [6,8]Code giải bài tập:

III Lập trình python:

import numpy as np

from scipy.interpolate import CubicSpline

def main():

Trang 12

11 # Nhập số lượng điểm

n = int(input("Nhập số lượng điểm n: ")) x = []

y = []

xi float(input("Nhập tọa độ x của điểm thứ {+}: ")) yi float(input("Nhập tọa độ y của điểm thứ {+}: ")) xappend(xi)

yappend(yi)

cs CubicSpline(, y, bc_type='natural')

print("Hàm spline tại x = {x1} là: S({x1}) = {result1:.6f}") print("Hàm spline tại x = {x2} là: S({x2}) = {result2:.6f}")

if name ==" main ": main()

Trang 14

13 - Đầu tiên ta sẽ phủ lưới tọa độ cho hình trên:

- Sau đó sẽ chấm những điểm theo đường bao của chi tiết để lưu những tọa độ điểm đi qua và tiến hành tính toán spline bậc 3 để vẽ đường bao cho vật thể:

- Code dùng để vẽ đường bao:

Trang 15

ax.imshow(img, extent=0, img.shape[], 0, img.shape[]])

# Tạo mảng giá trị từ 0 đến chiều dài và chiều rộng của hình với bước nhảy là 50

x_ticks np.arange(, img.shape[], 50) y_ticks np.arange(, img.shape[], 50)

# Đặt các điểm cho lưới tọa độ

ax.set_xticks(x_ticks) ax.set_yticks(y_ticks)

# Thêm lưới tọa độ màu đen

ax.grid(True, color='black', linestyle='-', linewidth=)

# Danh sách để lưu tọa độ

print('x = %d, y = %d'(ix, iy))

# Kết nối sự kiện click chuột với hàm onclick

cid fig.canvas.mpl_connect('button_press_event', onclick)

# Tạo một mảng các giá trị x liên tục

x_smooth np.linspace(min(), max(), 500)

# Tính toán các giá trị y tương ứng

Trang 16

15

y_smooth spline(x_smooth)

# Vẽ đường bao màu đen

plt.figure()

plt.imshow(img, extent=0, img.shape[], 0, img.shape[]])

plt.plot(x_smooth, y_smooth, 'red', linewidth=)

plt.xticks(np.arange(, img.shape[], 50))

plt.yticks(np.arange(, img.shape[], 50))

plt.grid(color='black', linestyle='-', linewidth=)

 Áp dụng spline bậc 3 để tạo đường bao cho 1 hình phẳng bất kỳ: Sinh viên đã thành công áp dụng phương pháp spline bậc 3 để tạo đường bao cho một hình phẳng bất kỳ được chọn Quá trình thực hiện được tiến hành một cách khoa học, logic và chính xác, đảm bảo tính chính xác và hiệu quả của kết quả thu được

 Phân tích và đánh giá hiệu quả của phương pháp áp dụng: Sinh viên đã tiến hành phân tích và đánh giá một cách chi tiết về hiệu quả của phương pháp spline bậc 3 trong việc tạo đường bao cho hình phẳng Việc phân tích bao gồm các khía cạnh như độ chính xác, độ mịn, thời gian tính toán và khả năng áp dụng cho các hình phẳng có hình dạng phức tạp Kết quả phân tích cho thấy phương pháp spline bậc 3 có hiệu quả cao, đáp ứng được các yêu cầu về độ chính xác, độ mịn và thời gian tính toán

2 Kết quả đạt được:

 Sinh viên đã nắm vững khái niệm và tính chất của spline bậc 3: Thông qua quá trình nghiên cứu và thực hành, sinh viên đã đạt được sự hiểu biết sâu sắc về các khái niệm và tính chất cơ bản của spline bậc 3 Sinh viên có thể giải thích rõ ràng và chính xác các khái niệm này, đồng thời vận dụng chúng vào giải quyết các bài toán liên quan một cách hiệu quả

 Sinh viên đã áp dụng thành công spline bậc 3 để tạo đường bao cho 1 hình phẳng bất kỳ: Việc áp dụng spline bậc 3 để tạo đường bao cho hình phẳng đã được thực hiện thành công Sinh viên đã lựa chọn một hình phẳng bất kỳ, sau đó áp dụng phương pháp spline bậc 3 để tạo đường bao cho hình phẳng đó Kết quả thu được cho thấy đường bao được tạo ra có độ chính xác cao, thể hiện đúng hình dạng của hình phẳng ban đầu

Trang 17

16

 Sinh viên đã phân tích và đánh giá hiệu quả của phương pháp áp dụng: Sinh viên đã tiến hành phân tích và đánh giá một cách chi tiết về hiệu quả của phương pháp spline bậc 3 trong việc tạo đường bao cho hình phẳng Việc phân tích bao gồm các khía cạnh như độ chính xác, độ mịn, thời gian tính toán và khả năng áp dụng cho các hình phẳng có hình dạng phức tạp Kết quả phân tích cho thấy phương pháp spline bậc 3 có hiệu quả cao, đáp ứng được các yêu cầu về độ chính xác, độ mịn và thời gian tính toán Ngoài ra, phương pháp này cũng có khả năng áp dụng cho các hình phẳng có hình dạng phức tạp, thể hiện tính linh hoạt và khả năng ứng dụng rộng rãi

VI Tài liệu tham khảo:

[1] A L Garcia and C Penland, MATLAB Projects for Scientists and Engineers, Prentice Hall, Upper Saddle River, NJ, 1996

[2] Steven Chapra, Numerical methods for Engineers

[3] http://www.khoahocviet.info/meresci/vi/meresci04d3.html

Ngày đăng: 17/06/2024, 14:53