YOMEDIA
ADSENSE
Học spline với biên ràng buộc và biên tự nhiên
35
lượt xem 3
download
lượt xem 3
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Bài viết thiết lập thuật toán, trưng ra cách xử lí điều kiện biên tự nhiên và điều kiện biên ràng buộc. Sau đó dùng matlab, thiết lập chương trình, với dữ liệu đưa vào các mốc nội suy rất đơn giản để tự động hóa đưa ra các biểu thức hình thức (symbolic) của các phương trình, và biểu diễn bằng đồ thị, phản ánh đúng với điều kiện biên cho trước.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Học spline với biên ràng buộc và biên tự nhiên
HỌC SPLINE VỚI BIÊN RÀNG BUỘC VÀ BIÊN TỰ NHIÊN<br />
<br />
NGUYỄN PHÚ VINH (*)<br />
<br />
TÓM TẮT<br />
<br />
Trong bài báo này, đầu tiên chúng tôi khảo sát họ đường cong spline, có ứng dụng nhiều<br />
trong toán học, cơ học, v.v.. Phương trình các đường cong spline là bậc 3, thường dùng để xấp xỉ<br />
hàm, như phương pháp phần tử hữu hạn thường sử dụng. Trong phương pháp này, chúng tôi<br />
thiết lập thuật toán, trưng ra cách xử lí điều kiện biên tự nhiên và điều kiện biên ràng buộc. Sau<br />
đó dùng matlab, thiết lập chương trình, với dữ liệu đưa vào các mốc nội suy rất đơn giản để tự<br />
động hoá đưa ra các biểu thức hình thức (symbolic) của các phương trình, và biểu diễn bằng đồ<br />
thị, phản ánh đúng với điều kiện biên cho trước.<br />
<br />
ABSTRACT<br />
<br />
In this paper, we first survey their spline curves which has many applications in<br />
mathematics, mechanical, etc. The equation of the spline curves is order 3 that are often used to<br />
appoximate the function such as finite element method. In this method, we set the algorithm, and<br />
present a way to handle boundary conditions binding. Then, the use of Matlab, and the setting of<br />
the program, with data interpolated into markets, are simple to make automated form of<br />
expressions and programs represented by graphs which reflect conditions the previous record.<br />
<br />
1. MỞ ĐẦU<br />
<br />
Trong các phương pháp toán xấp xỉ hàm (ví dụ phương pháp phần tử hữu hạn, sai phân<br />
hữu hạn, v.v.), ta cần xấp xỉ hàm phải đi qua tất cả các mốc nội suy, và hàm xấp xỉ phải khả vi<br />
liên tục đến cấp 2. Đã có các phương pháp xấp xỉ Lagrange, Newton, nhưng đối với xấp xỉ nhiều<br />
(n) điểm mốc nội suy thì hai phương pháp này không còn thích hợp, vì chúng phải dùng đa thức<br />
cấp n-1 (bậc rất cao) để xấp xỉ, vì thế sai số sẽ lớn. Ngày nay, để khắc phục điều trên, với công<br />
nghệ tính toán hiện đại, người ta đã thay thế chúng bằng các hàm spline phức tạp hơn trong tính<br />
toán, nhưng xấp xỉ tốt hơn và đẹp hơn. Các input về dữ liệu và các biên ràng buộc, được chương<br />
trình thiết kế rất thân thiện với người sử dụng.<br />
<br />
2. HỌ SPLINE VỚI BIÊN TỰ NHIÊN<br />
<br />
Ở đây ta sẽ xây dựng các hàm spline cấp 3 (đa thức cấp 3) trong từng đoạn thoả mãn các<br />
yêu cầu trên qua định nghĩa sau:<br />
<br />
Định nghĩa: Hàm f x xác định trên a, b , một phân hoạch của a, b là bộ n+1 điểm:<br />
a x1 x2 x3 ... xn xn1 b . Một spline đa thức bậc ba g(x) nội suy f(x) phải thoả<br />
mãn các điều kiện sau:<br />
<br />
<br />
<br />
(*)<br />
TS, Khoa Cơ bản, Trường Đại học Công nghiệp TP.HCM<br />
a) g(x) có đạo hàm đến cấp 2 liên tục trên a, b<br />
b) Trên mỗi đoạn con xk , xk 1 , k 1, n , g x gk x là một đa thức bậc 3.<br />
c) g xk f xk yk , k 1, n 1 .<br />
d) Thoả mãn một trong 2 điều kiện biên sau đây:<br />
i. g // x1 g // xn 1 0 (điều kiện biên tự nhiên)<br />
<br />
ii. g / x1 f / x1 , g / xn 1 f / xn 1 (điều kiện biên ràng buộc)<br />
<br />
Người ta chứng minh được rằng nếu hàm f(x) xác định trên tập điểm nút xk kk 1n1 thì<br />
tồn tại một hàm spline duy nhất thoả bốn điều kiện trên (xem [8]).<br />
Cách xây dựng hàm spline xin xem ([7], [8]). Ở đây ta chỉ trưng ra thuật toán để xây dựng<br />
chương trình.<br />
<br />
Thuật toán spline với biên tự nhiên:<br />
<br />
Bước 1: Tính hk xk 1 xk , k 1, n , và giải hệ phương trình với (n+1) ẩn m1 , m2 ,..., mn1 ,<br />
nhưng thực chất là (n-1) phương trình và (n-1) ẩn, vì điều kiện biên tự nhiên: m1 mn1 0<br />
m1 mn 1 0<br />
<br />
hk 1 hk 1 hk h y yk yk yk 1 , k 2, n , (1.1)<br />
mk 1 6 mk mk 1 k k 1 <br />
3 6 hk hk 1<br />
Đây là phương trình Ax=b, có ma trận A là 3 đường chéo chính sau:<br />
<br />
1 2 3 4 n n1<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
giải hệ này để tìm ra m2 , m3 ,..., mn<br />
<br />
h2 h2<br />
Bước 2: Tính Ak , Bk : Ak yk mk k , Bk yk 1 mk 1 k , với k 1, n (1.2)<br />
6 6<br />
<br />
Bước 3: Xây dựng spline gk x trên mỗi đoạn xk , xk 1 <br />
<br />
g x m x x k 3 m x k 1 x 3 A xk 1 x B x x k<br />
k k 1 k k k<br />
6hk 6hk hk hk (1.3)<br />
<br />
x xk , xk 1 , k 1, n<br />
<br />
x 0 2 3 5 8 10<br />
Ví dụ 1: Cho mốc nội suy:<br />
y 2 3 4 5 3 6<br />
<br />
Ở đây có 6 mốc nội suy, vậy ta phải xây dựng 5 hàm spline trên 5 đoạn.<br />
<br />
Xây dựng ma trận 3 đường chéo ở vế trái (VT), vế phải (VP) của (1.1):<br />
<br />
VT của (1.1) VP của (1.1)<br />
1.000000 0.166667 0.000000 0.000000 9.5000<br />
0.166667 1.000000 0.333333 0.000000 -6.5000<br />
0.000000 0.333333 1.666667 0.500000 -1.1667<br />
0.000000 0.000000 0.500000 1.666667 2.1667<br />
<br />
Giải hệ phương trình trên tìm mk ,<br />
<br />
Tính các hệ số Ak , Bk từ (1.2) ta có:<br />
<br />
mk , k 1, 6 Ak , k 1, 5 Bk , k 1, 5<br />
0 2.0000 -10.2831<br />
10.9246 -4.8208 5.4246<br />
-8.5477 9.6985 4.5461<br />
0.6808 3.9788 1.3564<br />
1.0958 2.2695 6.0000<br />
0<br />
<br />
Chương trình xuất ra 5 biểu thức hình thức hàm spline trên từng đoạn, được vẽ như (đồ thị 1):<br />
<br />
g1(t) = .91038*t^3+2-6.1415*t<br />
<br />
g2(t) = -1.4246*(t-2)^3+1.8208*(3-t)^3-25.3116+10.2454*t<br />
<br />
g3(t) = .56735e-1*(t-3)^3-.71231*(5-t)^3+17.4267-2.5761*t<br />
<br />
g4(t) = .60875e-1*(t-5)^3+.37823e-1*(8-t)^3+8.34980-.87418*t<br />
<br />
g5(t) = .91313e-1*(10-t)^3-12.6530+1.8653*t<br />
<br />
8<br />
<br />
<br />
6<br />
<br />
<br />
4<br />
<br />
<br />
2<br />
<br />
<br />
0<br />
<br />
<br />
-2<br />
Đồ thị 1: Biểu diễn 5 hàm g1(t), g2(t), g3(t), g4(t), g5(t) trên 5 đoạn tương ứng.<br />
<br />
Nếu viết dưới dạng triển khai phân số thì hàm gồm 5 nhánh sau :<br />
<br />
2<br />
108521<br />
x<br />
32173 3<br />
x2<br />
x<br />
17670 35340<br />
<br />
20760 989711<br />
29373 2 28673 3<br />
<br />
589 17670 x 1178 x 8835 x x3<br />
<br />
<br />
86163 462767 6594 2 13589 3<br />
<br />
1178 8835 x 589 x 17670 x x5<br />
<br />
<br />
106579 63091<br />
1 2 611 3<br />
5301 17670 x186 x 26505 x x8<br />
<br />
<br />
46331 451091<br />
3227 2 3227 3<br />
x x x otherwise<br />
589 17670 1178 35340<br />
<br />
<br />
<br />
Ví dụ 2: Cho mốc nội suy:<br />
<br />
x 0 2 3 5 6 8 11 13<br />
y 3 4 4 2.5 2.5 3.5 3 3.5<br />
<br />
Dùng 7 hàm spline xấp xỉ, đồ thị 3<br />
<br />
g1(t) = -.27372e-1*t^3+3.0+.6095*t<br />
<br />
g2(t) = -.17154*(t-2)^3-.54744e-1*(3-t)^3+3.8211+.1168*t<br />
<br />
g3(t) = .83491e-1*(t-3)^3-.85768e-1*(5-t)^3+8.96738-1.42706*t<br />
<br />
g4(t) = .91182e-1*(t-5)^3+.16698*(6-t)^3+1.9540+.758e-1*t (1.4)<br />
<br />
g5(t) = -.53518e-1*(t-6)^3+.45591e-1*(8-t)^3-3.2438+.8965*t<br />
<br />
g6(t) = .24593e-1*(t-8)^3-.35679e-1*(11-t)^3+10.13644-.70913*t<br />
<br />
g7(t) = .36889e-1*(13-t)^3-1.6688+.3976*t<br />
4.2<br />
<br />
4<br />
<br />
3.8<br />
<br />
3.6<br />
<br />
3.4<br />
<br />
3.2<br />
<br />
3<br />
<br />
2.8<br />
<br />
2.6<br />
<br />
2.4<br />
0 2 4 6 8 10 12 14<br />
<br />
<br />
<br />
Đồ thị 2: Biểu diễn 7 hàm g1(t), g2(t), g3(t), g4(t), g5(t) , g6(t), g7(t) trên 7 đoạn tương ứng.<br />
<br />
3. HỌ SPLINE VỚI BIÊN RÀNG BUỘC<br />
<br />
Điều kiện biên ràng buộc ở hai đầu mốc nội suy là: (, cho trước)<br />
<br />
g1/ x1 f / x1 , gn/ xn1 f / xn1 .<br />
<br />
g1 x gn x <br />
<br />
x<br />
x1 x2 xn xn1<br />
<br />
<br />
<br />
<br />
k=1, Trong phần chứng minh [7] đã có:<br />
<br />
h Ak Bk h A B<br />
gk/ xk mk k , ==> k=1, g1/ x1 m1 1 1 1<br />
2 hk hk 2 h1 h1<br />
<br />
y yk hk<br />
Bk Ak k 1 mk mk 1 <br />
1<br />
Và <br />
hk hk 6<br />
<br />
h y y h<br />
vậy g1/ x1 m1 1 2 1 1 m1 m2 ,<br />
2 h1 6<br />
<br />
h h y y<br />
hay 1 m1 1 m2 2 1<br />
3 6 h1<br />
<br />
k=n+1, Trong phần chứng minh [7] đã có:<br />
h A B<br />
gk/ 1 xk mk k 1 k 1 k 1 ==> k=n+1, gn/ xn 1 mn 1 n n n <br />
h A B<br />
2 hk 1 hk 1 2 hn hn<br />
<br />
h y yn hn<br />
vậy gn/ xn1 mn1 n n1 mn mn1 ,<br />
2 hn 6<br />
<br />
hn h y yn<br />
hay mn n mn1 n1 .<br />
6 3 hn<br />
<br />
Thuật toán spline với biên ràng buộc:<br />
<br />
Bước 1: Tính hk xk 1 xk , k 1, n 1 , và giải hệ phương trình với (n+1) ẩn<br />
m1 , m2 ,..., mn1 ,<br />
<br />
h1 h1 y2 y1<br />
k 1 : m1 m2 <br />
3 6 h1<br />
hk 1 h h h y yk yk yk 1<br />
k 2, n : mk 1 mk k 1 k mk 1 k k 1 (3.1)<br />
6 3 6 h k hk 1<br />
h h y yn<br />
k n 1 : n mn n mn 1 n 1<br />
6 3 hn<br />
<br />
Đây là phương trình Ax=b, có ma trận A là 3 đường chéo chính sau:<br />
<br />
1 2 3 4 n n1<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
giải hệ này để tìm ra m1 , m2 ,..., mn , mn1 .<br />
<br />
h2 h2<br />
Bước 2: Tính Ak , Bk : Ak yk mk k , Bk yk 1 mk 1 k , với k 1, n (3.2)<br />
6 6<br />
Bước 3: Xây dựng gk x trên mỗi đoạn xk , xk 1 :<br />
<br />
<br />
g x m x x k 3 m x k 1 x 3 A xk 1 x B x x k<br />
k k 1 k k k<br />
6hk 6hk hk hk (3.3)<br />
<br />
x xk , xk 1 , k 1, n<br />
<br />
x 0 2 3 5 6 8 11 13<br />
Ví dụ 3: Cho mốc nội suy:<br />
y 3 4 4 2.5 2.5 3.5 3 3.5<br />
<br />
Đây là ví dụ 3 ở trên, mục đích của ta là để so sánh 2 spline với 2 điều kiện biên tự nhiên và<br />
điều kiện biên ràng buộc.<br />
<br />
Với =0, =0 cho trước: = f / x1 0 , = f // xn1 0<br />
<br />
Ở đây ta dùng 7 hàm spline xấp xỉ cho 7 đoạn tương ứng:<br />
<br />
Và chương trình xuất ra 7 biểu thức hàm như sau:<br />
<br />
g1(t) = -.59056e-1*t^3+.92028e-1*(2-t)^3+2.2638+1.1043*t<br />
<br />
g2(t) = -.15944*(t-2)^3-.11811*(3-t)^3+4.0355+.413e-1*t<br />
<br />
g3(t) = .81184e-1*(t-3)^3-.79719e-1*(5-t)^3+8.81872-1.39364*t<br />
<br />
g4(t) = .94663e-1*(t-5)^3+.16237*(6-t)^3+1.9991+.677e-1*t (3.4)<br />
<br />
g5(t) = -.57586e-1*(t-6)^3+.47331e-1*(8-t)^3-3.3962+.9196*t<br />
<br />
g6(t) = .32859e-1*(t-8)^3-.38391e-1*(11-t)^3+11.00004-.80793*t<br />
<br />
g7(t) = -.55894e-1*(t-11)^3+.49288e-1*(13-t)^3-4.7732+.6708*t<br />
<br />
<br />
<br />
Nếu viết dưới dạng triển khai phân số thì hàm gồm 7 nhánh sau :<br />
<br />
202 3 471 2<br />
g1 x x 3, x2<br />
1337 853<br />
<br />
126 3 498 2 839 1984<br />
g2 x x x , x3<br />
3049 4681 637 935<br />
563 3 969 2 1491 227<br />
g3 x x x , x5<br />
3499 503 220 68<br />
<br />
165 3 2783 2 197 7319<br />
g4 x x x , x6<br />
2437 1852 19 290<br />
<br />
431 3 1801 2 3827 3261<br />
g5 x x x , x8<br />
4108 829 266 98<br />
<br />
227 3 1963 2 6453 6546<br />
g6 x x x , x 11<br />
3186 955 332 115<br />
<br />
613 3 1970 2 10349 15478<br />
g7 x x x , x 13<br />
5828 523 232 87<br />
<br />
<br />
<br />
<br />
Bien rang buoc Bien tu nhien<br />
<br />
f / x1 0 <br />
f // xn1 0<br />
<br />
<br />
<br />
Đồ thị 3: Trộn 7 biểu diễn 7 hàm gi(t), i=1..7, trên 7 đoạn tương ứng với biên ràng buộc của ví<br />
dụ 3 và 7 biểu diễn của 7 hàm của ví dụ 2 với biên tự nhiên.<br />
<br />
<br />
<br />
So sánh 7 biểu thức hàm (1.4) và (3.4), ta thấy rằng: hai nhánh g1(x) và g7(x) của ví dụ 3 và ví<br />
dụ 4 khác nhau nhiều, còn các nhánh còn lại bên trong vẫn khác nhau chút ít, do sự khác biệt ở<br />
hai đầu mút biên và chúng truyền vào bên trong. Và ở đồ thị 4 thể hiện rất rõ điều kiện biên ở hai<br />
đầu mốc nội suy là:<br />
<br />
g1/ x1 f / x1 0 , g7/ x8 f / x8 0 .<br />
<br />
4. SO SÁNH SPLINE VÀ XẤP XỈ THEO NEWTON<br />
<br />
Phần này ta lấy lại ví dụ 4 với mốc nội suy:<br />
x 0 2 3 5 6 8 11 13<br />
y 3 4 4 2.5 2.5 3.5 3 3.5<br />
<br />
thì đa thức xấp xỉ theo Newton (hay Lagrange cũng cho cùng kết quả) là đa thức bậc 7 và có biểu<br />
thức phức tạp như sau:<br />
<br />
8t 7 54t 6 211t 5 846t 4 1853t 3 851t 2 1960t 1<br />
P7 t 3<br />
130071 18713 3966 1745 828 181 639<br />
<br />
Xem đồ thị 5, ta thấy đa thức này xấp xỉ ở hai đầu mút nội suy là không chính xác, và chính vì<br />
thế nó gây ra sai số rất lớn.<br />
<br />
<br />
<br />
<br />
spline<br />
<br />
<br />
<br />
<br />
Newton<br />
<br />
Đồ thị 4: So sánh giữa 2 đường cong xấp xỉ spline và Newton .<br />
<br />
5. KẾT LUẬN<br />
<br />
Nhận xét họ hàm spline đẹp hơn và tốt hơn (theo nghĩa xấp xỉ ít sai số) so với cách dựng<br />
của hai phương pháp nội suy Lagrange, nội suy Newton, nhưng bù vào đó là tính toán phức tạp<br />
hơn. Chính vì thế ngày nay các họ spline được thay thế cho các đường cong xấp xỉ theo Newton<br />
hay Lagrange.<br />
<br />
TÀI LIỆU THAM KHẢO<br />
<br />
1. Nguyễn Phú Vinh, Giáo trình phương pháp tính, Đại học Công nghiệp, 2006.<br />
<br />
2. Nguyễn Phú Vinh, Các chương trình tính toán bằng matlab, Đại học Công nghiệp, 2007.<br />
3. Nguyễn Phú Vinh và các tác giả khác. Các giáo trình toán cao cấp đại học: A1, A2, A3.<br />
ĐHCN. 2006.<br />
<br />
4. Nguyễn Phú Vinh, Các sources phương pháp tính, toán cơ được viết bằng VB for excel và<br />
Matlab, Computer Graphics.<br />
<br />
5. Vera.B.Anand. Đồ họa máy tính và mô hình hoá hình học (Computer Graphics and<br />
geometric modeling).<br />
<br />
6. Đêmiđôvich. Computatinal Mathematics. Mir. 1990.<br />
<br />
7. Lê Thái Thanh, Lê Ngọc Lăng, Nguyễn Quốc Lân, Phương pháp tính. 2003.<br />
<br />
8. Burden R.L, Faires T.D. Numerical Analysis, Brooks/Cole Publishing Company, USA- 1997.<br />
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn