TRƯỜNG ĐẠI HỌC KỸ THUẬT CƠNG NGHIỆP
KHOA ĐIỆN TỬ
Bộ mơn: Tin Học Cơng Nghiệp
BÀI TẬP LỚN
MƠN HỌC PHƯƠNG PHÁP TÍNH
Sinh Viên: Nguyễn Văn Hưng
Nguyễn Ngọc Hiếu
Chu Thanh Quyết
Lớp:
55KMT
GVHD:
Nghiêm Văn Tính
Thái Nguyên – 2021
TRƯỜNG ĐHK
KHOA Đ
BÀI TẬP LỚN
MƠN HỌC: Phương pháp tính
BỘ MƠN : TIN HỌC CƠNG NGHIỆP
Nhóm Sinh viên: Nhóm 5
Stt
Lớp: 55KMT
Họ Tên
1
Nguyễn Ngọc Hiếu
2
Nguyễn Văn Hưng
3
Chu Thanh Quyết
Ngành: Kĩ Thuật Máy Tính
Giáo viên hướng dẫn: Nghiêm Văn Tính
Ngày giao đề:
Ngày hồn thành: 17/01/2022
Tên đề tài : Xấp xỉ hàm bằng phương pháp nội suy
PHẦN A: LÝ THUYẾT
Yêu cầu: Trình bầy và thực hiện các công việc sau:
1.
Trình bày phương pháp nội suy đa thức Newton
+
Mốc nội suy cách đều
+
Mốc nội suy không cách đều
2.
Vẽ sơ đồ khối của hai phương pháp nội suy trên
PHẦN B: THỰC NGHIỆM
Dùng ngơn ngữ lập trình bất kỳ xây dựng một chương trình gồm các chức năng có
nội dung dưới đây:
1.
Tính giá trị của đa thức bằng phương pháp nội suy Newton có mốc
cách đều và khơng cách đều
2.
Kết quả thực nghiệm trên đa thức với các bậc khác nhau cho mỗi
phương pháp.
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
.....................................................................................................................................
...............................................................................................................................
.....................................................................................................................................
...............................................................................................................................
.....................................................................................................................................
...............................................................................................................................
.....................................................................................................................................
...............................................................................................................................
.....................................................................................................................................
...............................................................................................................................
.....................................................................................................................................
...............................................................................................................................
GIÁO VIÊN HƯỚNG DẪN
Nghiêm Văn Tính
MỤC LỤC
Lời nói đầu
Phần A: Lý Thuyết ……………………………………………………….
1.Phương pháp nội suy đa thức Newton………………………………...
+
Mốc nội suy cách đều ……………………………………………….
+
Mốc nội suy không cách đều………………………………………………
2.Sơ đồ khối phương pháp nội suy đa Newton………………………….
Phần B: Thực Nghiệm ……………………………………………………
1.Giới thiệu ngôn ngữ lập trình………………………………………….
2.Chương trình thực nghiệm …………………………………………….
3.Kết quả thực nghiệm …………………………………………………………
Kết Luận …………………………………………………………………..
LỜI NĨI ĐẦU
Phương pháp tính là bộ mơn tốn học có nhiệm vụ giải đến kết quả bằng số cho
các bài tốn, nó cung cấp các phương pháp giải cho những bài tốn trong thực tế
mà khơng có lời giải chính xác. Mơn học này là cầu nối giữa tốn học lý thuyết và
các ứng dụng của nó trong thực tế. Trong thời đại tin học hiện nay thì việc áp dụng
các phương pháp tính càng trở nên phổ biến nhằm tăng tốc độ tính tốn.
Sau một thời gian dài học tập, rèn luyện dưới sự dạy bảo nhiệt tính của thầy
Nghiêm Văn Tính. Nhóm em quyết định chọn đề tài “Xấp xỉ hàm bằng phương
pháp nội suy” làm đề tài nghiên cứu. Cụ thể hơn là tìm hiểu về phương pháp nội
suy newton. Bọn em xin cam đoan bài tập lớn này là cơng sức của nhóm em sau
một thời gian dài cùng tìm tịi, nghiên cứu.
PHẦN A: LÝ THUYẾT
Đa thức nội suy Newton
A. Trường hợp các nút nội suy không cách đều.
1.
Khái niệm: Tỷ hiệu.
Giả sử hàm số y=f(x) được cho dưới dạng bảng:
Trong
y=f ( x ¿¿ k )¿;
- Tỷ hiệu cấp một của hàm
f
[ xk ; xk+1
x −x
k +1
tại 2 nút xk ,xk +1 kí hiệu là
f x
−f x
]= ( k +1 ) ( k )
k
- Tỷ hiệu cấp hai của hàm
tại 3 nút a, b, c kí hiệu là :
.
-…
- Cứ như vậy, tỷ hiệu cấp n của hàm
tại n+1 nút
.
kí hiệu là :
Chú ý:
(1)
Các tỷ hiệu của hàm số
có tính chất đối xứng đối với các nút nội
suy.
Tức là ta có:
.
Tỷ hiệu cấp n của một hàm đa thức bậc n tại n+1 nút nội suy tùy ý là
hằng
(2)
số (luôn bằng nhau). Tỷ hiệu cấp
của một đa thức bậc n có giá trị
bằng 0.
Ví dụ A.1.1. Cho hàm số
. Tính tỷ hiệu cấp 3 của hàm
tại
các nút
.
Các tỷ hiệu cấp 2 của hàm
tại các nút trên được tính với kết quả như bảng sau:
B
f
= f [ x1 ;x2 ]= (
x −f
2
)
(
x
1
)
=12−2 =5
x2 −x12−0
f [ x0 ; x1 ; x2
]=
f [ x1 ;
Vậy : f [−1 ; 0 ;2;3 ]=
Lưu ý :
tỷ hiệu cấp 3 của
là đ
Đa thức nội suy Newton trong TH các nút nội suy khơng cách đều
2.
Đa thức nội suy Lagrange dễ tính tốn nhưng có nhược điểm là khi thêm một nút
nội suy thì q trình tính cũ phải bỏ đi tất cả và tính lại từ đầu. Dựa vào tỷ hiệu,
Newton đã đưa ra cơng thức tìm đa thức nội suy của hàm
thuận lợi hơn như
sau:
Từ cơng thức tính tỷ hiệu :
Lại có:
Thay vào (1) ta được:
Cứ như vậy ta thu được:
Đặt
.
Và
thì ta có :
.
- Dễ dàng kiểm tra thấy
Vậy
với
xác định bởi (*) là đa thức nội suy của hàm
ứng với n+1 nút nội suy
trên.
Chú ý:
Đa thức nội suy
tiến của hàm
tìm được theo (*) gọi là đa thức nội suy Newton
xuất phát từ nút x0.
Sai số nội suy khi tính giá trị gần đúng của hàm
tại điểm
là :
Xây dựng tương tự, ta có cơng thức xác định đa thức nội suy Newton lùi
của hàm
xuất phát từ nút
là :
Sai số nội suy vẫn là:
Đa thức nội suy của một hàm số
tại n+1 nút nội suy đã cho là duy
nhất, do vậy, đa thức nội suy Newton
, chúng chỉ khác nhau
cách biểu diễn.
Do vậy, nếu hàm
nút nội suy
có đạo hàm liên tục đến cấp n+1 trên , [ a;b ]chứa tất cả các
thì sai số nội suy tại điểm có thể đánh giá (theo cách của Lagrange)
là:
, với
.
Đa thức nội suy Newton tiến, tiện lợi khi tính gần đúng giá trị của
tại điểm
gần x0. Đa thức nội suy Newton lùi, tiện lợi khi tính gần đúng giá trị của
tại
điểm gần xn .
Nếu thêm một nút nội suy
Newton
thì sau khi tìm được đa thức nội suy
ứng với n+1 nút nội suy
để tìm đa thức nội suy
của hàm f ứng với n+2 nút nội suy
ta chỉ cần bổ
sung thêm nút nội suy mới vào cuối bảng, rồi tính thêm tỷ hiệu cấp n+1
của hàm
Tức là :
và cộng số hạng bậc n+1 vào cuối đa thức nội suy
.
.
Ví dụ A.2.1. Cho bảng giá trị của hàm số
như sau:
(1)
Xây dựng đa thức nội suy Newton tiến từ nút
(2)
Tính gần đúng
.
bằng đa thức nội suy tìm được ở trên.
Giải.
(1) Có 5 nút nội suy, ta có:
.
Tính các tỷ hiệu của hàm
k xk
yk
4
Vậy
.
Hay
Ví dụ A.2.2 : Cho hàm
(1)
Tính gần đúng
xuất phát từ
(2)
bằng đa thức nội suy Newton tiến
của hàm
. Đánh giá sai số của các giá trị tìm được.
Tính gần đúng
từ nút nội suy
(3)
với bảng giá trị:
bằng đa thức nội suy Newton lùi Sn(x) của hàm
. Đánh giá sai số của các giá trị tìm được
Từ đa thức nội suy
của hàm
ứng với bảng trên, tính
gần đúng
.
Giải.
(1)
Có 4 nút nội suy (n=3), nên ta có đa thức nội suy Newton tiến của hàm
xuất phát từ x0 là:
Bảng các tỷ hiệu của hàm f(x) như sau:
k
xk
yk
Tỷ hiệu cấp Tỷ hiệu cấp Tỷ hiệu cấp Tỷ hiệu cấp
1
2
3
4
Suy ra :
Vậy
Sai số mắc
phải là :
(2)
Có 4 nút nội suy, Đa thức nội suy N lùi là:
.
yk
k xk
Tỷ hiệu cấp
Tỷ hiệu cấp Tỷ hiệu cấp
Tỷ hiệu cấp
1
2
4
3
Suy ra:
Vậy
D
+(1,35−1,3) X+(1,35−1,3) (1,35−1,2) M +(1,35−1,3)(1,35−1,2 )(1,35−1.1) E=0,97570
Sai số mắc phải là :
Bảng giá trị của hàm
(3)
là :
Có 4 nút nội suy, nên ta có đa thức nội suy Newton tiến của hàm
xuất phát từ nút y0 là:
Ta tính các tỷ hiệu của hàm g(y) như sau:
k yk
( )
Vậy
B. Trường hợp các nút nội suy cách đều.
1. Khái niệm: Hiệu hữu hạn
Giả sử hàm số
x
x0
được cho dưới dạng bảng:
x
1
x
2
…
xk
xk+
1
…
y
y0
y
1
trong đó
…
y
2
yk
;
…
yk+
1
hay
.
Ta gọi:
-
-
Hiệu hữu hạn tiến cấp 1 của hàm
tại điểm
là :
-
Hiệu hữu hạn tiến cấp 2 của hàm
tại điểm
là :
-
………
Tổng quát, hiệu hữu hạn tiến cấp n của hàm
Tương tự thay kí hiệu Δ bằng kí hiệu
hàm
tại điểm
.
.
tại
là
ta có khái niệm hiệu hữu hạn lùi cấp n của
như sau (ĐỌC THÊM):
.
2. Cơng thức tìm đa thức nội suy Newton trong TH các nút nội suy cách
đều
Thay các tỷ hiệu bằng các hiệu hữu hạn tiến, ta có đa thức nội suy Newton
tiến
•
của hàm
xuất phát từ nút x0 là:
Từ đó, nếu đổi biến
của hàm
hay
thì ta có đa thức nội suy Newton tiến
có dạng:
,
Sai số là :
với
.
:
Nếu h đủ bé và
hầu như khơng thay đổi thì
.
•
Tương tự, ta có đa thức nội suy Newton lùi của hàm
xuất phát từ nút xn
là:
.
Từ đó, nếu đổi biến
hàm
thì đa thức nội suy Newton lùi của
là:
Sai số là
.
với
Nếu h đủ bé và
hầu như khơng thay đổi thì
Ví dụ B.2.1: Cho bảng giá trị của hàm số
.
như sau:
x
(1)
Tính gần đúng sin160 bằng đa thức nội suy Newton tiến xuất phát từ nút
x0 = 150.
Dùng đa thức nội suy Newton lùi xuất phát từ nút x0 = 300, tính gần
(2)
đúng
.
Đánh giá sai số của các giá trị gần đúng nhận được.
Giải. Có 4 nút nội suy cách đều nhau với
.
. Ta có:
.
Tính các hiệu hữu hạn tiến như sau: FIX-6 (Chú ý chọn đơn vị đo góc là Radian).
k
xk
yk
0
0,258819
1
0,342020
2
0,422618
3
0,500000
. Suy ra:
Với
•
Đánh giá sai số:
.
.
Chọn ,
Từ đó có sai số :
.
Vậy
(2)
Đổi biến số :
.
.
Ta có :
Tính các hiệu hữu hạn lùi (tính ngược từ dưới) như sau:
k
xk
.
y
k
Với
thì
.
Suy ra
(Lưu ý : Nếu dùng đa thức nội suy Newton tiến xuất phát từ nút x0 = 15 thì
)
•
Đánh giá sai số:
.
Chọn ,
. Từ đó có sai số,
.
Vậy
.
N
h
ậ
p
2. SƠ ĐỒ KHỐI :
xi , yi ,x¿ ,n
Begin
h=x2−x1
k=1, n=1
i=0, n-k
Đúng
k=1
Sai
Δyi= yi+1 + yi
Δk yi =Δ yk+−11 + Δ yik−1
y¿= y0 ;F=1 ; P=x¿−x0
i=1, n
F=F∗ ; y¿=Δi y0 / ( F∗hi )∗P
P=P∗( x¿−xi)
Kết luận y¿
End
PHẦN B. THỰC NGHIỆM
1.Giới thiệu về ngơn ngữ lập trình
Ngơn ngữ lập trình C++ là một ngơn ngữ lập trình hướng đối tượng(OOP –
Object-oriented programming) được phát triển bởi Bjarne Stroustrup. C++ là ngôn
ngữ lập trình được phát triển trên nên tảng của ngơn ngữ lập trình C. Do đó, C++
có song song cả 2 phong cách(style) lập trình hướng cấu trúc giống C và có thêm
phong cách hướng đối tượng. Trong nhiều trường hợp, C++ sử dụng kết hợp cả 2
style trên. Do đó, nó được xem là một ngơn ngữ “lai tạo”.
Vai trị đặc biệt quan trọng của bộ đôi 2 ngôn ngữ lập trình C và C++ là phục vụ
cho học lập trình cơ bản. Bởi vì đây là một ngơn ngữ lập trình bậc trung. Hầu hết
các trường đào tạo cơng nghệ thông tin ở Việt Nam đều dùng 2 ngôn ngữ này làm
mơn cơ sở ngành. Mơn lập trình C giúp chúng ta có nền tảng với kỹ thuật lập trình,
các kiến thức cơ bản và tư duy lập trình.
Sau đây là các ứng dụng thực tế sử dụng C++:
+ Game
+ Ứng dụng có giao diện người dùng(GUI)
+ Trình duyệt web
+ Phần mềm quản trị cơ sở dữ liệu
+ Hệ điều hành
+ Trình biên dịch
+ ……………..
Hình ảnh giao diện của ứng dụng C++
2. Thực Nghiệm
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int factorial(int n){
int fact=1;
while(n){
fact=fact*n;
n--;
}
return fact;
}
int main(){
float x[10],y[10],p[10],diff[10];
float X,f,f2=0,u,h;
int i, j=1,n,k=1;
cout<<"\nnhap vao so bac cua da thuc : ";
cin>>n;
cout<<"\nnhap vao gia tri xi va f(xi)\n";
for(i=1; i<=n; i++){
cout<<"x["<
cin>>x[i];
cout<<"f["<
cin>>y[i];
}
cout<<"\nx[i]\tf[i]\n";
for(i=1; i<=n; i++){
cout<
}
cout<<"\ngia tri cua ham f tai x=";
cin>>X;
int m=n;
h=x[2]-x[1];
u=(X-x[1])/h;
f=y[1];
cout<
cout<<"\nBang sai phan(bang ti hieu)"<
do{
cout<<"A.("<
for(i=1; i
p[i]=( ( y[i+1]-y[i] ) );
cout<
y[i]=p[i];
}
diff[k++]=p[1];
n--;
cout<<"\n";
}while(n!=1);
float df=u;
float l=1;
for(int i=1; i
if(i>1)
df=df/factorial(i);
f2=f2+(df*diff[i]);
for(int j=0; j<=i; j++){
l=l*(u-j);
}
df=l;
}
f=f+f2;
cout<<"\nf("<
return 0;
}
3. Kết quả thực nghiệm
KẾT LUẬN