Professional Documents
Culture Documents
KHOA ĐIỆN TỬ
Lớp: 55KMT
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:
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.
Phương pháp tính là bộ môn toán học có nhiệm vụ giải đến kết quả bằng số cho
các bài toán, nó cung cấp các phương pháp giải cho những bài toá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 toá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 toá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
Trong đó:
y=f (x ¿¿ k )¿; Δ x k =x k+1−x k ≠0 và khác nhau , với ∀ k ≥ 0 .
- …
- 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ó: .
(2) 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
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.
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:
f ( x1 ) −f ( x 0 ) 2−0
A= f [ x 0 ; x1 ] = = =2
x 1−x 0 0− (−1 )
f ( x 2 ) −f ( x 1 ) 12−2
B = f [ x 1 ; x 2 ]= = =5
x2 −x1 2−0
f ( x3 ) −f ( x 2 ) 20−12
C = f [ x 2 ; x 3 ]= = =8 D =
x3 −x 2 1
f [ x 1 ; x 2 ]−f [ x0 ; x 1] B− A
f [ x 0 ; x1 ; x 2 ]= = =1
x 2−x 0 2+1
f [ x2 ; x 3 ]−f [ x1 ; x 2] C−B
E = f [ x 1 ; x 2 ; x3 ]= x 3−x 1
=
3−0
=1
Lưu ý : là đa thức bậc hai => các tỷ hiệu cấp 2 của đều bằng nhau, các
tỷ hiệu cấp 3 của đều bằng 0.
2. Đa thức nội suy Newton trong TH các nút nội suy không cách đều
Đa thức nội suy Lagrange dễ tính toán nhưng có nhược điểm là khi thêm một nút
nội suy thì quá 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:
Lại có:
Đặt
Và
thì ta có : .
Vậy 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 tìm được theo (*) gọi là đa thức nội suy Newton
tiến của hàm 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à :
Đ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 có đạo hàm liên tục đến cấp n+1 trên , [ a ; b ]chứa tất cả các
nút nội suy 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 thì sau khi tìm được đa thức nội suy
Newton ứ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 và cộng số hạng bậc n+1 vào cuối đa thức nội suy .
Tức là : .
(2) Tính gần đúng bằng đa thức nội suy tìm được ở trên.
Giải.
4 7 1611
Vậy
Hay
(2) Tính gần đúng bằng đa thức nội suy Newton lùi Sn(x) của hàm
từ nút nội suy . Đánh giá sai số của các giá trị tìm được
(3) 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à:
Suy ra :
Vậy
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
( )
Vậy
x x0 x1 x2 … xk xk+1 …
y y0 y1 y2 … yk yk+1 …
trong đó ; hay .
Ta gọi:
- ………
- Tổng quát, hiệu hữu hạn tiến cấp n của hàm tại là :
Tương tự thay kí hiệu Δ bằng kí hiệu ta có khái niệm hiệu hữu hạn lùi cấp n của
hàm tại điểm 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 hay thì ta có đa thức nội suy Newton tiến
của hàm có dạng:
Sai số là : ,
với .
• 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 thì đa thức nội suy Newton lùi của
hàm là:
Sai số là
với .
(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.
(2) Dùng đa thức nội suy Newton lùi xuất phát từ nút x 0 = 300, tính gần
đúng .
Đánh giá sai số của các giá trị gần đúng nhận được.
. 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 (A) 0,083201 (E) -0,002603 (Y) -0,000613(X’)
1 0,342020 (B) 0,080598 (F) -0,003216 (M)
2 0,422618 (C) 0,077382 (X)
3 0,500000 (D)
Chọn , .
Từ đó có sai số :
. Vậy .
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 yk
Vậy .
2. SƠ ĐỒ KHỐI :
Begin
Nhập
xi , yi , x¿ , n
h= x 2−x 1
k=1
Δ k yi =Δ y k−1 k−1
Δy i= y i+1 + y i ⅈ+ 1 + Δ y i
y ¿ = y 0 ; F=1 ; P=x ¿ −x 0
i=1, n
P=P∗(x ¿ −x i)
Kết luận y ¿
End
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.
+ Game
+ Hệ điều hành
+ ……………..
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["<<i<<"]: ";
cin>>x[i];
cout<<"f["<<i<<"]: ";
cin>>y[i];
}
cout<<"\nx[i]\tf[i]\n";
for(i=1; i<=n; i++){
cout<<x[i]<<"\t"<<y[i]<<"\n";
}
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<<fixed<<setprecision(2);
cout<<"\nBang sai phan(bang ti hieu)"<<endl;
do{
cout<<"A.("<<j++<<") f(x)\n";
for(i=1; i<n; i++){
p[i]=( ( y[i+1]-y[i] ) );
cout<<p[i]<<"\n";
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<m; 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("<<X<<") = "<<f;
return 0;
}
cách đều và không cách đều, cách giải bài toán phương trình thông qua hai phương
pháp. Và ta đã xây dựng được một chương trình C++ có thể tìm nghiệm gần đúng
Do kiến thức của bọn em còn nhiều hạn chế nên bài luận có thể còn nhiều thiếu
xót em mong sẽ có được những lời đóng góp từ thầy và các bạn để bài luận được
hoàn thiện hơn. Bọn em cũng có thể rút kinh nghiệm cho các bài luận sau này. Em
xin chân thành cảm ơn thầy giáo Nghiêm Văn Tính đã hướng dẫn và giúp đỡ