MỘT VÀI ỨNG DỤNG CỦA GIẢI TÍCH HÀM 1 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA NGUYỄN THẾ HÙNG, TRẦN VĂN CHÍNH PHƯƠNG PHÁPTÍNH ĐÀ NẴNG 2013 2 3 LỜI NÓI ĐẦU Giáo trình Phương pháp tính được biên soạn trên cơ sở các bài giảng của các tác giả cho các lớp Cao học và Đại học ngành Điện, Xây dựng, thuộc Đại học Đà Nẵng và một số Đại học khác mà các Tác giả có dịp tham gia giảng dạy Nội dung của Giáo trình bao quát những vấn đề cơ bản nhất và mở rộng của phương pháp tính hiện đại, làm cơ sở để tính toán.
Trang 33
LỜI NÓI ĐẦU
Giáo trình Phương pháp tính được biên soạn trên cơ sở các bài giảng của các tác giả
cho các lớp Cao học và Đại học ngành Điện, Xây dựng, thuộc Đại học Đà Nẵng và một số Đại học khác mà các Tác giả có dịp tham gia giảng dạy
Nội dung của Giáo trình bao quát những vấn đề cơ bản nhất và mở rộng của phương pháp tính hiện đại, làm cơ sở để tính toán, giải quyết những vấn đề khoa học, kỹ thuật thường gặp thuộc các ngành kỹ thuật, đặc biệt là ngành Điện và Xây dựng
Để giúp độc giả dể dàng nắm bắt bài giảng và vận dụng lý thuyết, thuận lợi trong việc tính toán, ở mổi mục khó của cuốn sách thường có kèm theo ví dụ tính toán đặc trưng, chương trình tính và cuối mổi chương thường có một số bài tập
Ngoài các ngành Điện và Xây dựng cơ bản, Giáo trình này còn làm tài liệu tham khảo cho các ngành khoa học kỹ thuật khác liên quan đến các vấn đề tính toán gần đúng
Các Tác giả cảm ơn các Trợ giảng và Trợ lý đã bổ sung các bài tập, đánh máy bản thảo làm cho nội dung Giáo trình được phong phú, đẹp đẽ thêm
Các Tác giả rất mong được bạn đọc góp ý, bổ khuyết để lần tái bản tới Giáo trình Phương pháp tính này được hoàn hảo hơn
Đà Nẵng, ngày 12 tháng 12 năm 2012
Các tác giả
GS Nguyễn Thế Hùng – PGS Trần Văn Chính Trường Đại học Bách khoa, Đại học Đà Nẵng
Trang 4Chương 1 SAI SỐ
Error analysis
1.1 Tổng quan về phương pháp tính
1.1.1 Khái niệm về phương pháp tính
Phương pháp số (numerical method) là một lĩnh vực của toán học chuyên
nghiên cứu những lý luận cơ bản và các phương pháp giải gần đúng các bài toán thường gặp trong toán học và kỹ thuật, kết quả tính toán được cho dưới dạng số Đôi khi nó còn được gọi là Phương pháp tính (Computational method), Toán học tính toán (Computational mathematics)
Giải tích số (Numerical analysis) nhấn mạnh cả phương pháp xấp xỉ và phân tích toán học
Phương pháp số quan tâm nhiều hơn đến sự lựa chọn và ứng dụng các kỷ thuật
để giải quyết vấn đề khoa học kỹ thuật hơn là phân tích toán học như Gải tích số
Chúng ta thấy rằng hầu hết các bài toán trong toán học như giải các phương trình đại số hay siêu việt, các hệ phương trình tuyến tính hay phi tuyến, các phương trình vi phân thường hay đạo hàm riêng, tính các tích phân, thường khó giải đúng được, nghĩa là khó tìm kết quả dưới dạng giải tích
Một số bài toán có thể giải đúng được nhưng biểu thức kết quả lại cồng kềnh, phức tạp khối lượng tính toán rất lớn Vì những lí do trên, việc giải gần đúng các bài toán là vô cùng cần thiết
Các bài toán trong kĩ thuật thường dựa trên số liệu thực đo và các giả thiết gần đúng; do vậy việc tìm ra kết quả gần đúng với sai số cho phép là hoàn toàn có ý nghĩa thực tế
Từ lâu các nhà khoa học đã nghiên cứu phương pháp tính và đã đạt nhiều kết quả quan trọng; tuy nhiên để lời giải đạt được độ chính xác cao, khối lượng tính toán thường rất lớn Khi các phương tiện tính toán thô sơ, nhiều phương pháp tính đã được
đề xuất, nhưng không thể thực hiện được vì khối lượng tính toán quá lớn; khó khăn trên đã làm phương pháp tính không phát triển được
Ngày nay nhờ máy tính điện tử người ta đã giải rất nhanh các bài toán khổng lồ, phức tạp, đã kiểm nghiệm được các phương pháp tính cũ và đề ra các phương pháp
Trang 55
tính mới Phương pháp tính nhờ đó phát triển rất mạnh mẽ; nó là cầu nối giữa toán học
và thực tiễn; là môn học không thể thiếu đối với các kỹ sư
Ngoài nhiệm vụ chính của phương pháp tính là tìm các phương pháp giải gần đúng các bài toán không tìm được lời giải giải tích hoặc lời giải giải tích quá phức tạp,
nó còn có nhiệm vụ khác như nghiên cứu tính chất nghiệm, nghiên cứu bài toán cực trị, xấp xỉ hàm v.v
1.1.2 Các đặc điểm của phương pháp tính
Đặc điểm về phương pháp của môn học này là hữu hạn hoá và rời rạc hoá Phương pháp tính thường biến cái vô hạn thành cái hữu hạn, cái liên tục thành cái rời rạc và sau cùng lại trở về với cái vô hạn, cái liên tục Nhưng cần chú ý rằng quá trình trở lại cái vô hạn, cái liên tục phải trả giá đắt vì khối lượng tính toán tăng lên rất nhiều Cho nên trong thực tế người ta phải dừng lại khi nghiệm gần đúng sát với nghiệm đúng ở một mức độ nào đó
Đặc điểm thứ hai của môn học là sự tiến đến kết quả bằng quá trình liên tiếp
Đó là quá trình chia ngày càng nhỏ hơn, càng dày đặc hơn hoặc quá trình tính toán bước sau dựa vào các kết quả của các bước trước Công việc tính toán lặp đi lặp lại này rất thích hợp với máy điện toán
Khi nghiên cứu phương pháp tính người ta thường triệt để lợi dụng các kết quả
đã đạt được trong toán học Cùng một bài toán có thể có nhiều phương pháp tính khác nhau
Trong phương pháp tính, người ta thường quan tâm đến hai vấn đề chính:
Phương pháp để giải bài toán
Sai số của lời giải
Một phương pháp tính được coi là tốt nếu nó đạt các yêu cầu sau:
- Phương pháp tính được biểu diễn bằng một dãy hữu hạn các bước tính cụ thể Các bước tính toán cụ thể này của phương pháp tính được gọi là thuật toán Thuật toán càng đơn giản càng tốt
- Đánh giá được sai số và sai số càng nhỏ càng tốt
- Thuật toán thực hiện được trên máy điện toán và thời gian chạy máy ít nhất
Giải gần đúng nghĩa là lời giải của bài toán so với lời giải đúng có một sai số nào đó Sai số thường do rất nhiều nguồn tạo nên và nhiều khi rất khó ước lượng được
Trang 6Ví dụ khi cần tìm lời giải của phương trình phi tuyến, ta sẽ có nhiều phương pháp giải khác nhau; mổi phương pháp giải cần thời gian tính toán và độ chính xác khác nhau Một người kỹ sư xây dựng khi tính toán để thiết kế một công trình, thực hiện rất nhiều phép tính, và nhiều khi rất khó xác định sai số tích lũy trong quá trình tính toán; nhưng kết quả vẫn được cơ quan có thẩm quyền duyệt chấp nhận Tuy nhiên đối với các bài toán phức tạp, số lượng phép tính lớn, cần độ chính xác cao, nhất thiết phải được khảo sát nghiên cứu đầy đủ về sai số của lời giải
Máy tính số có thể biểu diễn với độ chính xác bình thường (single), độ chính xác gấp đôi (double) hay độ chính xác mở rộng (extended) Nếu ta biết được mối liên
hệ giữa lời giải số với lời giải đúng, sẽ biết nên chọn độ chính xác nào để kết quả đáp ứng được yêu cầu thực tế
1.1.3 Những dạng sai số thường gặp
Trong thực tế, khi bài toán tìm xấp xỉ một mô hình toán học đã biết, ví dụ tìm nghiệm của một phương trình đã biết, tính tích phân xác định của một hàm số nào đó trên miền cho trước hoặc có những bài toán thực tế mà ngay cả mô hình toán học cũng chưa biết; ví dụ, dự báo về lượng mưa thay đổi do biến đổi khí hậu toàn cầu, nhu cầu thuê bao internet, … Trong những trường hợp này, ta phải bắt đầu từ việc thu thập số liệu, xây dựng mô hình toán rồi tìm phương pháp giải số thích hợp … Nói chung khi thực hiện một bài toán bằng phương pháp số ta thường gặp những loại sai số sau đây:
Sai số do mô hình hoá bài toán, do ta không thể tính được hết những yếu tố
quan trọng ảnh hưởng đến bài toán, hoặc do ta biết được những yếu tố ảnh hưởng nhưng phải đơn giản hóa mô hình để có thể tính toán được
Sai số do phương pháp: Phương pháp thay bài toán phức tạp bằng bài toán đơn
giản (mổi phương pháp gần đúng đều có sai số và thường các sai số này là khác nhau)
sẽ tạo ra sai số phương pháp
Sai số do số liệu: Khi đo đạc ta phải sử dụng dụng cụ đo, mổi dụng đo đều có
sai số
Sai số tính toán và chặt cụt: Sai số tính toán là sai số do ta làm tròn bởi tất cả
các lần qui tròn trong quá trình tính toán; sai số chặt cụt là sai số gây ra khi phải chặt cụt dãy số khai triển
Những sai số trên đây, tùy theo bài toán, tích lũy lại nhiều khi dẫn đến những lời giải không thể chấp nhận được Chính vì vậy việc tìm ra những phương pháp tốt,
Trang 77
thuật toán hữu hiệu để giải các bài toán thực tế là điều rất cần thiết Các phương pháp
số hiện nay có rất nhiều, và còn nhiều vấn đề hiện nay vẫn còn bỏ ngỏ Trong cuốn sách này chúng tôi chỉ giới thiệu một số phương pháp và thuật toán thông dụng để các
kỹ sư và độc giả quan tâm có thể sử dụng được
1.2 Sai số tuyệt đối
Gọi a là giá trị gần đúng của A, ta viết được A = a a
a : gọi là sai số tuyệt đối giới hạn
1.3 Sai số tương đối
Sai số tuyệt đối không nói lên đầy đủ “chất lượng“ của 1 số xấp xỉ, chất lượng
ấy được phản ảnh qua sai số tương đối
Chữ số bỏ đi đầu tiên 5: Thêm vào chữ số giữ lại cuối cùng 1 đơn vị
Chữ số bỏ đi đầu tiên 5: Để nguyên chữ số giữ lại cuối cùng
Ví dụ 65,8274 65,827; 65,827 65,83
1.6 Sai số của số đã quy tròn
Giả sử quy tròn a thành a’ với sai số quy tròn tuyệt đối a’
Trang 8 a
'
a a’ thì a’ = a + a’ (tức tăng sai số tuyệt đối)
1.7 Ảnh hưởng của sai số quy tròn
Áp dụng nhị thức Newton, ta có: 211033632378 2 (1.1)
Bây giờ thay 2 của biểu thức (1.1) bởi các số quy tròn khác nhau (Bảng 1.1):
Bảng 1.1: Giá trị của biểu thức (1.1) khi thay xấp xỉ 2 với các giá trị khác nhau
2 Vế trái biểu thức (1.1) Vế phải biểu thức (1.1)
Y X U
Trang 99
Do đó : U =
yxu
Y X
U X + Y
+ Nếu u =
y
x, với y 0, U = X + Y
1
d
Nếu đường kính d = 3,7cm0,05 và = 3,14 Biết d = 0,05, = 0,0016
Giải: Xem và d là đối số của hàm V
Ta có: v 3d
Với: = 0,0005
14,3
0016,
d= 0,0135
7,3
05,0
v = 0,0005+3.0,0135 = 0,04
Mặt khác: V = 3
.6
1
d
= 26,5cm3 Vậy có: v= 26,5.0,04 = 1,061,1cm3
V = 26,51,1 cm3
1.9 Sai số do chặt cụt
Trong những bài toán gần đúng, các đại lượng tính toán được biểu diển bởi các chuổi khác nhau, khi tính toán cần phải chặt cụt; nếu chúng ta không phân tích kỹ cũng sẽ gây sai số rất lớn Xét ví dụ sau
Trang 10n
n a n
Mặc dù cả hai giới hạn limn→∞ an = 0 và limn→∞
Chúng ta cũng sử dụng khái niệm " độ lớn - big oh" để mô tả tốc độ hội tụ của các hàm, đặc biệt là khi các biến độc lập tiệm cận bằng không
Giả sử F là một hàm số hội tụ đến một số L như là h tiến về không Nếu các hằng số dương p và K tồn tại với:
Trang 1111
với sự lựa chọn một số điều kiện ban đầu; những phương pháp nầy được gọi là ổn định
có điều kiện (ví dụ, chúng ta hay gặp vấn đề này đối với các lược đồ sai phân)
Câu hỏi:
1) Định nghĩa sai số tuyệt đối, sai số tương đối ? Trong thực tế tính toán, người ta
sử dụng sai số tuyệt đối hay sai số tương đối ? Vì sao ?
2) Trình bày các quy tắc tính sai số?
3) Nêu sự khác nhau giữa sai số tính toán và sai số phương pháp? Hãy nêu ra một
quá trình tính có số liệu cụ thể minh họa và chỉ ra sai số tính toán và sai số phương pháp ?
4) Đưa ra vài ví dụ tính toán, chỉ ra sự cần thiết phải chú ý đến sai số qui tròn ?
Bài tập:
1) Hãy xác định chữ số tin tưởng trong các số sau:
a) x = 0,3941 với x= 0,25.10-2
y = 0,1132 với y= 0,1.10-3 b) z = 38,2543 với z= 0,27.10-2
2) Hãy xác định sai số tuyệt đối, biết sai số tương đối của các số xấp xỉ sau:
a) x = 13267 nếu x= 0,1%
b) x = 0,896 nếu y=10%
3) Hãy qui tròn các số dưới đây để có được 3 chữ số tin tưởng và xác định sai số
tuyệt đối và sai số tương đối của chúng:
Trang 13mà vẫn đảm bảo độ chính xác theo yêu cầu của thực tế
2.1 Nội suy đa thức
2.1.1 Sự duy nhất của đa thức nội suy
Xét mẫu đo đạt gồm (n+1) cặp các giá trị đã biết của hai trạm x và y: (x0,y0), (x1, y1), ,(xn, yn) Hãy xây dựng một đa thức có bậc m ≤ n có dạng:
Pm(x) = a0 + a1x1+ am-1xm-1 + amxm (2.1) sao cho Pm(xi) = yi , với i = 0, 1, , n (2.2) Đây là bài toán nội suy đa thức, và đa thức Pm(x) được gọi là đa thức nội suy
Ta có định lý:
Định lý: Tồn tại duy nhất một đa thức có bậc không quá n và đi qua (n + 1)
điểm cho trước (x0, y0), (x1, y1), ,(xn, yn)
Chứng minh: Xét đa thức có dạng (2.1) ở trên và thỏa mãn (2.2) Kết hợp (2.1)
n n
n n
Trang 14Do ta đã giả thiết các điểm xi ≠ xj , do đó ma trận này khác 0 nên hệ phương trình (2.3) có nghiệm duy nhất cho các ai, nên đa thức Pn(x) được xác định duy nhất
2.1.2 Tính giá trị đa thức bằng phương pháp Horner
Với bài toán nội suy đa thức, thường phải tính giá trị của đa thức Pm(x)= a0 +
a1x1 + am-1xm-1 + amxm tại điểm x Khi tính trực tiếp, phải thực hiện khá nhiều phép tính, và khi tính các giá trị mũ của x, có thể gặp các giá trị lớn, mặc dù trong thực tế thường các thành phần của đa thức triệt tiêu lẫn nhau và giá trị của đa thức không lớn Để loại trừ các nhược điểm nêu trên, Horner đã đưa ra cách tính như sau: Viết lại đa thức Pm(x) dưới dạng:
Pm(x) = amxm + am-1xm-1 + + a1x1 + a0 = ( ((amx + am-1)x + am-2)x+ +a1)x+a0
Thuật toán thiết lập cho máy tính, để tính Pm(x) như sau:
Giá trị P cuối cùng (ứng với i = 0), cho ta giá trị của đa thức tại x
Sau đây là chương trình thực hiện thuật toán trên:
Trang 15n n
!2
)()
(
!2
)()(
!1
)()()
) ( 2
0 0
0 0
Mặt khác chúng ta có thể biến đổi đa thức về dạng:
Pn(x) = (x - xo)Pn-1(x) + Pn(xo) (2.8) Trong đó Pn-1(x) là đa thức bậc n - 1 và có dạng:
Pn-1(x) = boxn-1 + bo-1xn - 2 + b2xn - 3 + + bn-1 (2.9) Thuật toán để tìm các hệ số nhận được bằng cách so sánh (2.6) và (2.8):
Trang 16Hay:
n n
P x
!2
)()
(
!2
)()(
!1
)()()
) ( 2
0 0
0 0
) ( 0
0 0
!2
)()
(
!2
)(
!1
)()
)()
0 1
x P x
Trong đó Pn-1(x) lại có thể phân tích giống như Pn(x) dạng (2.3) để tìm ra
Pn-1(xo) Quá trình này được tiếp tục cho đến khi ta tìm hết các hệ số của chuỗi Taylor của Pn(x)
Tổng quát thuật toán thể hiện ở Bảng 2.1 như sau:
Trang 18for (k=0;k<=n-1;k++)
{
for (i=n-1;i>=k;i ) b[i] = b[i+1]*x + a[i];
c[k] = b[k];
for (j=n;j>=k+1;j ) a[j] = b[j];
}
printf(“\nSo do Horner tong quat”);
printf(« \nKhai trien tai x = %.4f\n »,x) ;
a Phép cộng hai đa thức: Giả sử chúng ta có hai đa thức A(x) bậc n và B(x) bậc
m với n > m Khi cộng hai đa thức này, chúng ta cộng lần lượt các hệ số cùng bậc của chúng với nhau Ta có chương trình sau:
Trang 19b Phép nhân hai đa thức: Để thấy rõ thuật toán xác định các hệ số của đa
thức C(x) là kết quả của phép nhân hai đa thức A(x) và B(x) ta cho một ví dụ cụ thể:
Trang 20Các hệ số của đa thức kết quả là:
Sau đây là chương trình tính tích hai đa thức:
printf("a[%d] = ",k-1);
scanf("%f",&a[k]);
} printf("Cho bac cua da thuc B m = ");
Trang 2121
scanf("%d",&m);
printf("Vao cac he so b\n");
for (k=1;k<=m+1;k++) {
printf("b[%d] = ",k-1);
scanf("%f",&b[k]);
} printf("\n");
l=n+m;
for (k=1;k<=l+1;k++) {
if (k<=(n+1)) j=k;
else j=n+1;
if (k<=(m+1)) p=1;
else p= k-m;
c[k]=0;
for (i=p;i<=j;i++) c[k] = c[k] + a[i]*b[k-i+1];
} printf("Cac he so cua da thuc tich C voi bac %d la :\n",l);
for (k=1;k<=l+1;k++) printf("%.4f\t",c[k]);
Trang 22Chương trình sau thực hiện việc chia 2 đa thức:
printf("a[%d] = ",k-1);
scanf("%f",&a[k]);
} printf("\n");
printf("Cho bac cua da thuc B m = ");
scanf("%d",&m);
printf("Vao cac he so b\n");
for (k=1;k<=m+1;k++) {
printf("b[%d] = ",k-1);
scanf("%f",&b[k]);
} printf("\n");
printf("Cho gia tri sai so epsilon epsi = ");
scanf("%f",&epsi);
Trang 2323
if ((m+1)>1) {
l=n-m+1;
for (i=0;i<=t;i++) r[i]=a[i];
j=n;
for (k=1;k<=l;k++) {
q[k]=r[1]/b[1];
for (i=1;i<=j;i++)
if ((i<m+1))
r[i]=r[i+1]-q[k]*b[i+1]; else
r[i]=r[i+1];
j=j-1;
} while ((abs(r[i])<epsi)&&(j>0)) {
for (i=1;i<=j;i++) r[i]=r[i+1];
j=j-1;
}
if (abs(r[1])<epsi) r[1]=0.0;
jp=j+1;
} else
{
l=n+1;
for (k=1;k<=l;k++) q[k]=a[k]/b[1];
jp=1;
Trang 24r[1]=0.0;
} printf("\n");
printf("Cac he so cua thuong Q(x) bac %d la : ",l);
for (k=1;k<=l;k++) printf("%.3f\t",q[k]);
printf("\n");
printf("Cac he so cua phan du R(x) bac %d la : ",jp-1);
for (k=1;k<=jp;k++) printf("%.3f",r[k]);
getch();
}
2.1.4 Sai số của đa thức nội suy
Định lý Rolle phát biểu:
Định lý Rolle: Cho f(x) là hàm số thực liên tục trên khoảng kín [a, b] và khả vi
trên khoảng hở (a, b) và f(a) = f(b) Khi đó tồn tại điểm ξ∈ (a, b) sao cho f '(ξ) = 0
Định lý: Giả sử hàm f(x) có đạo hàm liên tục đến cấp (n + 1) trên khoảng kín
[a, b] và Pm(x) là đa thức nội suy, tức là: Pm(xi) = f(xi) = yi , với i = 0, 1, , n Với các mốc nội suy là a = x0 < x1 < < xn = b
0
2.2 Đa thức nội suy Lagrange
Giả sử ta có các cặp điểm quan sát được cho ở Bảng 2.3 sau:
Trang 25)(
(
)(
)) (
)(
)(
(
(x))
P
1 2
1
2 3 2 1 2 2
2 1
3 1 2 1 1
1 n
n
n
n
n n
x x x
x x x
x
x
x y
x x x x x x x x
y x
x x x x x y
(
)('
k n
x y
Nếu hàm f(x) liên tục trên [a, b] và có đạo hàm liên tục đến cấp (n + 1) trong (a, b), thì sai số nội suy rn(x) = f(x) - Pn(x), được cho bởi biểu thức:
Nếu gọi M = max ( 1)
Trang 26Đa thức nội suy Lagrange có ưu điểm là đơn giản, nhưng nếu thêm nút nội suy thì phải tính lại toàn bộ, nhược điểm này sẽ được khắc phục trong công thức nội suy Newton
float lagrange(int,float [],float [],float);
Trang 2727
ok='c';
while (ok=='c') {
printf("Tinh gia tri cua y voi x la x0 = "); scanf("%f",&x0);
printf("x[%d] = ",i);
Trang 28scanf("%f",&x[i]);
printf("y[%d] = ",i);
scanf("%f",&y[i]);
} printf("\n");
printf(" SO LIEU BAN VUA NHAP\n");
printf(" x y\n");
for (i=1;i<=n;i++) printf("%8.4f %8.4f\n",x[i],y[i]);
ok=' ';
t=1;
flushall();
while (t) {
printf("\nCo sua so lieu khong(c/k):?");
scanf("%c",&ok);
if (toupper(ok)=='C') {
printf("Chi so cua phan tu can sua i = ");
} }
Trang 29g0=1.0;
for (i=1;i<=n;i++)
if (i!=k)
g0=g0*(x0-x[i])/(x[k]-x[i]); p0=p0+y[k]*g0;
} return(p0);
printf("\n");
printf("%24cKET QUA TINH TOAN\n",' '); printf("%14cx %10cy\n",' ',' ');
for (k=1;k<=maxkq;k++) printf("%15.5f %15.5f\n",xx[k],yy[k]);
getch();
}
Trang 30%Dua vao : x = [x0 x1 xn], y = [y0 y1 yn]
%ket qua: l = He so cua da thuc Lagrange bac n
Trang 3131
yx = polyval(l, 1.5)
Kết quả y(1.5) = 1.8750
2.3 Nội suy Newton
Trong mục này, đề cập đến đa thức nội suy khi biết các mẫu quan sát rời rạc (xi, yi), sao cho mỗi lần bổ sung thêm số liệu, thì ta vẫn kế thừa được đa thức nội suy
đã tính trước đó
2.3.1 Nội suy Newton với mốc cách đều
Giả sử y0, y1, y2, là những giá trị nào đó của hàm y = f(x) tương ứng với các giá trị cách đều nhau của các đối số x0, x1, x2 tức là:
xk + 1 - xk = xk = const
Ký hiệu:
y1 - y0 = y0 ; y2 - y1 = y1 ; ; yn - yn - 1 = yn - 1 là sai phân cấp 1 y1 - y0 = 2y0 ; y2 - y1 = 2y1 ; là sai phân cấp 2 ny1 - ny0 = n + 1y0 ; ny2 - ny1 = n + 1 y1 ; là sai phân cấp n + 1
Tiến hành các phép thế liên tiếp, ta nhận được:
K n K n
y C y
)1(n
3!
n n n 3y0 + + ny0 (2.23)
Nếu trong (2.23) ta xem n không những là chỉ là số nguyên dương mà có thể là
số n = t bất kỳ, ta nhận được công thức nội suy Newton (còn gọi là Nội suy Newton tiến – do sử dụng sai phân tiến):
!3
)2)(
1(
!2
)1(
!
t t t y t
t y
Trang 321 !
n
n n
0
y
= y2 – 2y1 + y0 = 10-2.7 + 5 = 1 Sai phân cấp 3: 3
0
y
= y3 - 3y2 + 3y1 - y0 = 12-3.10 + 3.7 - 5 = -2 1
2.3.2 Nội suy Newton với mốc không cách đều
Với nội suy Newton khi sử dụng các mốc không cách đều công thức nội suy phức tạp hơn
Trong thực tế các điểm x0, x1, xn có thể không cách đều Lúc này khoảng cách xi+1 - xi = hi không phải là hằng số Trong trường hợp này ta cũng xây dựng được
Trang 34printf("%8cx%30cy\n",' ',' ');
for (i=1;i<=n;i++) printf("%4c%8.4f%23c%8.4f\n",' ',x[i],' ',y[i]);
ok=' ';
t=0;
flushall();
while (t) {
printf("Co sua so lieu khong(c/k): ");
scanf("%c",&ok);
if (toupper(ok)=='C')
Trang 35} a[1]=y[1];
for (j=1;j<=n-1;j++) {
for (i=1;i<=n-j;i++) y[i]=(y[i+1]-y[i])/(x[i+j]-x[i]);
a[j+1]=y[1];
} b[n]=a[n];
for (k=n-1;k>=1;k ) {
for (j=n-1;j>=1;j ) b[j]=a[j] ;
for (i=n-1;i>=k;i ) a[i]=a[i]-b[i+1]*x[k];
} for (i=n;i>=1;i ) printf("He so bac %d la :%8.4f\n",i-1,a[i]);
printf("\n");
k=0;
Trang 36ok='c';
flushall();
while (ok=='c') {
printf("Tinh gia tri cua y tai x = ");
scanf("%f",&x0);
p=0;
for (k=n;k>=1;k ) p=p*x0+a[k];
printf("Tri so noi suy tai x0 = %4.2f la : %10.5f\n",x0,p);
getch();
printf("Ban co muon tinh tiep cac diem khac khong(c/k)");
do scanf("%c",&ok);
while ((ok!='c')&&(ok!='k'));
} }
Áp dụng Dùng chương trình này nội suy các giá trị cho trong bảng sau:
Trang 372.4 Nội suy Hermite
Các đa thức Lagrange, Newton thích hợp với bài toán mà hàm f xác định tại các điểm cho trước; các giá trị của f thường được xác định từ quan sát hay đo đạc
Tuy nhiên trong một số trường hợp ngoài việc xác định hàm f còn phải xác định đạo hàm f ’ của nó nữa Ví dụ, trường hợp biến độc lập là thời gian và hàm f mô
tả vị trí của một đối tượng; đạo hàm của hàm f trong trường hợp này là vận tốc v = f ‘;hoặc bài toán kết cấu tính dầm trên nền đàn hồi, ta phải xác định chuyển vị yi và góc xoay αi của dầm; thông số góc xoay αi chính là đạo hàm của chuyển vị ,
i
y
Trang 38Giả sử f ∈ C1 [a, b] và x0, x1, , xn là các trị số khác biệt trong khoảng kín [a, b]
Đa thức duy nhất có bậc phù hợp nhất với f và f ‘ tại x0, , xn là đa thức có bậc lớn nhất là (2n + 1) cho bởi
(
) ( )
,
k k
k
x x x
x x
Ln, j (x) biểu thị đa thức hệ số Lagrange thứ j của bậc n
Số hạng sai số cho đa thức Hermite là tương tự như của đa thức Lagrange, với những sữa đổi duy nhất là cần thiết để đáp ứng số lượng gia tăng của dữ liệu được sử dụng trong các đa thức Hermite
Nếu f ∈ C2n+ 2 [a, b], thì sai số đa thức Hermite là:
(2 2) 2 2
( )( )
Mặc dù công thức Hermite cung cấp việc mô tả đầy đủ các đa thức Hermite, sự cần thiết để xác định và đánh giá các đa thức Lagrange và các đạo hàm của chúng làm cho quá trình kéo dài ngay cả đối với các giá trị nhỏ của n Một phương pháp khác để
Trang 3939
tạo ra xấp xỉ Hermite được dựa trên mối liên hệ giữa sự phân chia sai phân bậc n và đạo hàm bậc n của f
Nếu f ∈ Cn [a, b] và x0, x1, , xn là các giá trị khác biệt trong [a, b], thì tồn tại trị
số ξ trong (a, b) với:
0 , , 1 ( )
!
n n
Để sử dụng kết quả này tạo ra các đa thức Hermite, giả thiết đầu cho rằng
những trị số riêng biệt x0, x1, , xn được cho cùng với các giá trị của f và f ‘ tại những trị số này Xác định một chuỗi mới z0, z1, , z2n +1 bởi:
z2k z2k1 x k với k = 0, 1, 2, n
Bây giờ xây dựng bảng sai phân bằng cách sử dụng các biến z0, z1, , z2n+1 Từ
z2k = z2k +1 = xk cho mổi trị số k, chúng ta không thể xác định f [z2k, z2k +1] bởi mối
quan hệ sai phân cơ bản:
Tuy nhiên, đối với mỗi trị số k chúng ta có f [xk, xk+1] = f ’(ξk) với một số ξk
trong (xk, xk +1), và lim xk+1→xk , f [xk, xk+1]= f’(xk) Vì vậy, một sự thay thế hợp lý trong tình huống này là f [z2k, z2k+1] = f’(xk), và chúng ta sử dụng:
Nếu f ∈ C1 [a, b] và x0, x1, , xn là các trị số khác biệt trong [a, b], thì
(2.34)Với z2k z2k1x kvà '
2k, 2k 1 k
f z z f x với k = 0, 1, 2,…,n Bảng sai phân cho thấy các mục đã được sử dụng cho ba cột sai phân đầu tiên khi xác định các đa thức Hermite H5(x) cho x0, x1, và x2 Mục còn lại được tạo ra theo cách sai phân bình thường (Bảng 2.4)
Trang 40Bảng 2.4: Bảng sai phân lập cho các đối số x0, x1, và x2
z f(z) sai phân bậc 1 sai phân bậc 2
f z z z
z z
2 3
' 1 ,
f z z z
z z
4 5
' 2 ,
f z z f x
z5 = x2 f [z5] = f (x2)
Ví dụ Cho dữ liệu cho trong bảng dưới đây, dùng nội suy Hermite tính f(1.5)
Trong đó các mục gạch dưới là các dữ liệu cho, phần còn lại được tạo ra theo phương pháp sai phân chuẩn
H5(1.5) = 0.6200860 − 0.5220232(1.5 − 1.3) − 0.0897427(1.5 − 1.3)2 +
+ 0.0663657(1.5 − 1.3)2(1.5 − 1.6) + 0.0026663(1.5 − 1.3)2(1.5 − 1.6)2 –
− 0.0027738(1.5 − 1.3)2(1.5 − 1.6)2(1.5 − 1.9)
= 0.5118277