1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tính gần đúng giá trị hàm số bằng đa thức nội suy với ngôn ngữ lập trình c

43 49 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 43
Dung lượng 735,01 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TRƯỜNG ĐẠI HỌC VINH KHOA TOÁN HỌC --- KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC TÍNH GẦN ĐÚNG GIÁ TRỊ HÀM SỐ BẰNG ĐA THỨC NỘI SUY VỚI NGÔN NGỮ LẬP TRÌNH C... Do đó, người ta thường tìm cách thay t

Trang 1

TRƯỜNG ĐẠI HỌC VINH KHOA TOÁN HỌC

-

TÍNH GẦN ĐÚNG GIÁ TRỊ HÀM SỐ BẰNG ĐA THỨC NỘI SUY VỚI NGÔN NGỮ LẬP TRÌNH C

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC CHUYÊN NGÀNH TOÁN - TIN HỌC ỨNG DỤNG

Vinh, tháng 5 năm 2012

Trang 2

TRƯỜNG ĐẠI HỌC VINH KHOA TOÁN HỌC -

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC

TÍNH GẦN ĐÚNG GIÁ TRỊ HÀM SỐ BẰNG ĐA THỨC NỘI SUY VỚI NGÔN NGỮ LẬP TRÌNH C

Trang 3

Mục lục

Mở đầu 2

Chương 1 : Nội suy hàm số bằng đa thức nội suy Lagrange 4

1.1 Đa thức nội suy 4

1.2 Nội suy hàm số bằng đa thức nội suy Lagrange 5

Chương 2 : Nội suy hàm số bằng đa thức nội suy Newton 17

2.1 Đa thức nội suy Newton với mốc nội suy không cách đều 17

2.2 Đa thức nội suy Newton với mốc nội suy cách đều 24

Chương 3 : Một số ứng dụng của phép nội suy 34

3.1 Tính gần đúng đạo hàm 34

3.2 Tính gần đúng tích phân 36

Kết luận 40

Tài liệu tham khảo 41

Trang 4

MỞ ĐẦU

Trong thực tế ứng dụng, dẫn đến phải làm việc với hàm số y = f(x) với

( *); ( *); ( )

b n

yf x tại một số điểm x i[a,b] Khi đó, việc tính đúng các giá trị trên gặp

phải khó khăn Không những thế nhiều trường hợp hàm số f có được từ thực

nghiệm nên các hệ số của nó thường là những số gần đúng Trong trường hợp

đó, việc tính đúng các giá trị trên không những khó thực hiện mà còn không

có ý nghĩa ứng dụng Do đó, người ta thường tìm cách thay thế hàm số f bởi một hàm số g có dạng quen thuộc mà việc tính các giá trị như đạo hàm, tích phân đối với hàm g dễ thực hiện đồng thời các kết quả tính được đối với hàm

g sai khác các kết quả đối với hàm f một lượng không đáng kể Một trong

những phương pháp thường được sử dụng để tìm hàm g là phép nội suy hàm

số

Phép nội suy hàm số là phương pháp xây dựng các điểm dữ liệu mới dựa vào một tập rời rạc các điểm dữ liệu đã biết Các dữ liệu này có được nhờ việc lấy mẫu, thí nghiệm, phép thử…từ đó người ta cố gắng xây dựng một hàm mà khớp rất gần với các dữ liệu này Có nhiều phương pháp nội suy hàm

số đã được xây dựng Chúng ta có thể kể đến các phương pháp như: Nội suy hàm số bằng đa thức nội suy Lagrange, Nội suy hàm số bằng đa thức nội suy Newton…

Ngày nay, có rất nhiều ngôn ngữ lập trình hỗ trợ chúng ta trong việc tính toán có thể kể đến các ngôn ngữ lập trình như: Pascal, C, C++ , C# … Các kết quả của phép nội suy được nghiên cứu và ứng dụng rộng rãi Trên cơ lý thuyết nội suy hàm số và các ngôn ngữ lập trình quen thuộc, chúng

Trang 5

tôi chọn đề tài nghiên cứu cho khóa luận là “Nội suy hàm số để tính giá trị

hàm số tại điểm bất kì với ngôn ngữ lập trình C” Mục đích của khóa luận là

viết chương trình nội suy hàm số bằng ngôn ngữ C Với mục đích đó, Khóa luận được trình bày thành 3 chương

Chương 1 Nội suy hàm số bằng đa thức nội suy Lagrange Nội dung

chính của phần này là trình bày phương pháp nôi suy hàm số sử dụng đa thức nội suy Lagrange với mốc nội suy cách đều và mốc nội suy không cách đều Cài đặt thuật toán sử dụng trên máy tính bằng ngôn ngữ C

Chương 2 Nội suy hàm số bằng đa thức nội suy Newton Nội dung

chính của phần này là trình bày phương pháp nội suy hàm số sử dụng đa thức nội suy Newton với mốc nội suy cách đều và mốc nội suy không cách đều Cài đặt thuật toán sử dụng trên máy tính bằng ngôn ngữ C

Chương 3 Một số ứng dụng của phép nội suy hàm số Nội dung chính

của phần này là trình bày một số ứng dụng của phép nội suy hàm số Sử dụng

đa thức nội suy để tính gần đúng đạo hàm và tính gần đúng tích phân

Khóa luận được thực hiện tại trường Đại học Vinh, dưới sự hướng dẫn

của ThS.Nguyễn Thanh Diệu Em xin bày tỏ lòng biết ơn sâu sắc tới Thầy về

sự nhiệt tình hướng dẫn đã dành cho em trong suốt quá trình hình thành khóa luận Nhân dịp này em xin trân trọng cảm ơn Ban chủ nhiệm khoa Toán, các thầy cô giáo trong khoa Toán trường Đại học Vinh, gia đình và bạn bè đã tạo điều kiện thuận lợi để em được học tập và hoàn thành khóa luận

Mặc dù đã có nhiều cố gắng, song khóa luận không tránh khỏi những thiếu sót Em mong nhận được những ý kiến đóng góp của các thầy, cô giáo

và các bạn đọc để khóa luận được hoàn thiện hơn

Sinh viên

Đậu Thanh Sang

Trang 6

CHƯƠNG 1

NỘI SUY HÀM SỐ BẰNG ĐA THỨC NỘI SUY

LAGRANGE

1.1 Đa thức nội suy

Định nghĩa 1.1.1 Giả sử y = f(x) tương ứng tại các giá trị khác nhau x 0 ,

x 1 ,…, x n được giá trị y 0, y 1 ,…, y n Các giá trị x 0 , x 1 ,…, x n được gọi là các mốc

nội suy Đa thức P n (x) được gọi là đa thức nội suy của hàm f(x) theo các mốc

nội suy x 0 , x 1 ,…, x n nếu P n (x) thỏa mãn:

+ P n (x) là đa thức bậc n

+ P n (x i ) = y i (i=1 ,n)

R n (x) = f(x) – P n (x) được gọi là sai số nội suy

Định lý 1.1.1 Đa thức nội suy P n (x) của hàm số y = f(x) với mốc nội suy x 0 ,

x 1 ,…, x n nếu có là duy nhất

Chứng minh

Giả sử y = f(x) với mốc nội suy đã cho có hai đa thức nội suy P n (x) và

Q n (x) Khi đó P n (x) – Q n (x) là một đa thức có bậc không lớn hơn n nhưng có

(n+1) nghiệm khác nhau,đó là các nghiệm x 0 , x 1 ,…,x n

Điều đó chứng tỏ P n (x) – Q n (x) là đa thức 0,tức là:

P n (x) – Q n (x) = 0 hay P n (x) = Q n (x) (đpcm)

Nội suy hàm số bằng đa thức đại số

Trên đoạn [a,b] cho tập các nút a x 0 < x 1 <…< x n b và tại các điểm này

cho các giá trị y i = f(x i ) (i=0 ,n ) của hàm f(x) Hãy xây dựng hàm P n (x) dễ tính

toán và trùng với hàm f(x) tại các điểm nút trên tức là :

P m (x) = y i (i=0 ,n)

Trang 7

Hàm P m (x) được gọi là hàm nội suy Các điểm x i (i=0 ,n) là các mốc nội suy

P m (x) = i

m

i

i x a

 1

Giải Ta có thể hiểu ý nghĩa của bài toán là: hãy xây dựng đường cong đại số

y = P m (x) đi qua các điểm cho trước (x i, ,y i ) Vậy ta cần xác định m+1 hệ số ai

(i =0 ,m ) từ hệ phương trình sau:

j i m

j

j x a

n n

x x

x x

x x

0 0

0

j i n j i

1.2 Nội suy hàm số bằng đa thức nội suy Lagrange

1.2.1 Đa thức nội suy Lagrange với mốc nội suy không cách đều

1.2.1.1 Xây dựng đa thức nội suy Lagrange

Giả sử trên [a, b] cho n+1 giá trị khác nhau của đối số x 0 , x 1 ,…, x n và biết

các đối với hàm số y = f(x) những giá trị tương ứng: f(x i ) = y i

Bây giờ ta xây dựng đa thức nội suy P(x) bậc không cao hơn n thỏa mãn điều

kiện: P(x i ) = y i (i=0 ,n) theo cách của Lagrange

Trước hết xây dựng đa thức P i (x) thỏa mãn điều kiện:

j i

Vì đa thức P i (x j ) phải triệt tiêu tại điểm x 0 , …, x i-1 , x i+1 ,…, x n nên P i (x j ) có thể

được viết dưới dạng:

Trang 8

n 1

1 - i

Thay vào (1.3) ta được:

P i (x) =

) x - (x ) x - )(x x - (x ) x - (x

) x - (x ) x - )(x x - (x ) x - (x

n i 1 i i 1 - i i 0 i

1 i 1 - i 0

i P x y

i 1 - i 0

) x - (x ) x - )(x x - (x ) x - (x

) x - (x ) x - )(x x - (x ) x - (x

Đa thức (1.6) là đa thức nội suy Lagrange

1.2.1.2 Đánh giá sai số của phương pháp

Định lý 1.2.1 (Định lý Rolle) Cho f : [a,b] R, f liên tục và khả vi trong khoảng [a,b] Giả sử f(a) = f(b) khi đó tồn tại c[a,b] sao cho f ‘ (c)=0

Trang 9

Do f(a) = f(b) nên phải có c(a,b) sao cho f(c) = M hoặc f(c) = m suy ra

f ‘ (c) = 0

Đánh giá sai số Để đánh giá độ lệch giữa đa thức nội suy Lagrange P(x) và

hàm số f(x) tại các điểm xx i (i=0 ,n) ta chứng minh định lý sau:

Định lý 1.2.2 Nếu hàm số y = f(x) có đạo hàm liên tục đến cấp n+1 trên

[a,b] chứa tất cả các mốc nội suy x i (i=0 ,n ) thì sai số nội suy R n (x) = f(x) – P(x) có dạng:

R(x) = ( )

)!

1 (

) (

'

x n

) ( ) (

x

x P x f

Mặt khác: F(x i ) = 0 (i=0 ,n ) nên F(z) có n+2 nghiệm phân biệt x 0 , x 1 , x 2 ,…, x n

Theo định lý Rolle (định lý 1.2.2): F ’ (z) có n+1 nghiệm trên [a,b] và F ” (z) có

không ít hơn n nghiệm trên [a,b]

Trang 10

Tiếp tục làm như trên ta thấy rằng trên [a,b] đạo hàm F (n+1)

) (

) 1 (

) ( )

(

x

x P x

) (

) 1 (

) (

) 1 (

) (

) 1 (

x n

1.2.1.3 Thuật toán và chương trình trên máy tính

a Thuật toán nội suy Lagrange

Bài toán Cho bảng giá trị (x i , y i ) (i=0 ,n) Tính giá trị của đa thức nội suy

Lagrange P(x) ta các điểm x cho trước theo công thức:

k i k

i i

k i

x x

x x y

Trang 13

printf ("\n Nhap moc noi suy thu %d: ", i + 1);

printf ("\n x[%d]=", i); scanf ("%f ", &x[i]);

printf ("\n y[%d]=", i); scanf ("%f ", &y[i]);

}

//Hàm tính giá trị f(x) sử dụng công thức Lagrange

float Lagrange_KCD(float x[100], float y[100], int n, float x1)

Trang 14

printf("\n ===Noi suy Lagrange moc khong cach deu===\n");

printf("\n nhap so moc noi suy:");

Trang 15

getch();

}

1.2.2 Đa thức nội suy Lagrange với mốc nội suy cách đều

1.2.2.1 Xây dựng đa thức nội suy Lagrange

Giả sử hàm f(x) nhận các giá trị y i tại các điểm tương ứng x i (i=0 ,n), cách

2 1 ) 1 (

1 )

1 (

) )) (

1 ( ))(

1 ( ) (

1 (

i n i

i

n t i

t i t t

n t t

( ) (

) ) (

1 (

Vậy công thức nội suy Lagrange (1.6) trong trường hợp mốc nội suy cách đều

i n i i t

x f

) ( ) 1 (

hay

P(x 0 + th) =

!

) ) (

1 (

n

n t t

i n

i

i n i n

y i t

Trang 16

Trong công thức (1.12) không phụ thuộc vào hàm số f(x), mốc nội suy và bước h Do đó chúng được tính sẵn, lập bảng để sử dụng nhiều lần

Trang 17

printf("\n nhap khoang cach giua cac moc noi suy:");

scanf(" %f ", &h);

printf("\n nhap cac gia tri tai moc noi suy:");

for(i = 0; i <= n - 1; i++)

{

printf("\n nhap gia tri thu %d:", i+1);

printf("\n y[%d]=", i);

if((n - i) >= 0) s = s + to_hopC(n,i) * y[i] / (t-i);

else s = s - to_hopC(n,i) * y[i] / (t-i);

Trang 18

float x0, y[100], h, x1, f, x[100];

printf("\n ===Noi suy Lagrange moc cach deu===\n");

printf("\n nhap so moc noi suy:");

Trang 19

2.1 Đa thức nội suy Newton với mốc nội suy không cách đều

2.1.1 Tỷ sai phân

Định nghĩa 2.1.1 Giả sử f : R R là hàm cho trước, các mốc nội suy được

sắp xếp theo thứ tự a x 0 < x 1 <…< x n b Hàm f(x) liên tục và xác định trên

[a,b] Ta định nghĩa :

+ Tỷ sai phân cấp 1 : f (x i ,x i+1 ) =

i i

i i

x x

x f x f

1

, (

i i i

i

x x

x x f x x f

+ Một cách tổng quát, tỷ sai phân cấp n :

f (x 0 , x 1 , … , x n ) =

n

x

f f

1

x

) x , x ( ) x , x (

) (

Hệ quả:

+ Tỷ sai phân là toán tử phi tuyến:

Trang 20

) (

1 ' ( )

) (

1 ' ( )

) (

) (

Tính chất 2: Nếu P n (x) là đa thức bậc n thì tỷ sai phân bậc nhất của P n (x, x 0 )

là một đa thức bậc n – 1, tỷ sai phân bậc hai P n (x, x 0 , x 1 ) là một đa thức bậc

n – 2, … ,tỷ sai phân bậc n của P n (x, x 0 , x 1 , … ,x n ) là đa thức bậc 0 và tỷ sai

phân bậc n+1 của P n (x) là P n (x, x 0 , x 1 , … ,x n ) = 0

Bảng tỷ sai phân

Để tính các tỷ sai phân trong công thức của đa thức nội suy Newton ta lập bảng tỷ sai phân như sau(với n = 4):

2.1.2 Xây dựng đa thức nội suy Newton

Giả sử trên [a,b] cho n+1 giá trị khác nhau của đối số x 0 , x 1 , … ,x n và f(x i )

= y i (i=0 ,n ) Bây giờ ta xây dựng đa thức nội suy P(x) có bậc không cao hơn

n thỏa mãn : P(x i ) = y i (i=0 ,n)

x f (x) Tỷ sai

phân cấp 1

Tỷ sai phân cấp 2

Trang 21

Theo định nghĩa tỷ sai phân ta có:

f(x, x 0 ) =

0 0

) (

x x

y x f

x x

x x f x x f

Vế phải của (2.2) bỏ đi số hạng cuối là cùng một đa thức bậc không cao hơn n

P(x) = y 0 + (x – x 0 )f(x 0 ,x 1 )+ … +(x – x 0 )…(x – x n-1 )f(x 0 ,x 1, …,x n ) (2.3)

Đa thức (2.3) được gọi là đa thức nội suy Newton (tiến) xuất phát từ mốc

x 0 Nó trùng với đa thức nội suy Lagrange (vì đa thức nội suy đều là duy nhất) nhưng nó được viết dưới dạng khác Cách xây dựng này dựa vào bảng tỷ sai

phân của hàm số f(x) nên đa thức được thành lập dần theo mốc nội suy và khi

thêm mốc nội suy không phải làm lại từ đầu như đối với đa thức nội suy Lagrange

Bằng cách làm tương tự ta xây dựng được đa thức nội suy Newton lùi xuất

phát từ mốc x n của hàm số f(x) :

P n (x) = y n + (x – x n )f(x n ,x n-1 ) + (x – x n )(x – x n-1 )f(x n ,x n-1 ,x n-2 ) +

+…+ (x – x n )(x – x n-1 )…(x – x 1 )f(x n ,x n-1 ,…,x 1 ,x 0 )

2.1.3 Đánh sai số của phương pháp

Từ công thức (2.2) và (2.3) ta viết được:

f(x) = P(x) +n1(x).f(x,x 0 , … ,x n )

với n1(x) = (x – x 0 )(x – x 1 ) …(x – x n-1 )(x – x n )

Trang 22

Theo công thức đánh giá sai số ta suy ra sai số của đa thức nội suy Newton là:

0

) (

2.1.4 Thuật toán và chương trình trên máy tính

2.1.4.1 Thuật toán nội suy Newton với mốc nội suy không cách đều

Input: x, xi, yi (i=0, ,n)

Output: giá trị của hàm số f(x) tại một điểm trong khoảng chứa các mốc nội

2.6 f = f + t * P 0

2.1.4.2 Sơ đồ khối

Trang 24

printf ("\n Nhap moc noi suy thu %d: ", i+1);

printf ("\n x[%d] = ", i); scanf (" %f ", &x[i]);

printf ("\n y[%d] = ", i); scanf (" %f ", &y[i]);

Trang 25

{

for(i = 0; i < n - j; i++) {

P[i] = (P[i+1] - P[i]) / (x[i+1] - x[i]);

printf("\n ===Noi suy Newton moc khong cach deu===\n");

printf("\n nhap so moc noi suy:");

Trang 27

1

) (

n f x C

1

) (

h i n x f C

1

) ) ( ( ) 1

7 Giả sử f C n [a,b] và (x, x + nh)  [a,b] Khi đó:

n n

2.2.2 Nội suy ở đầu bảng

Vì trường hợp các mốc nội suy cách đều chỉ là trường hợp đặc biệt của trường hợp các mốc nội suy không cách đều Do đó để xây dựng đa thức nội

suy Newton tiến xuất phát từ mốc x 0 của hàm số f(x) trong trường hợp các

mốc nội suy cách đều : x i = x 0 – ih (i=0 ,n ) ta làm như sau:

Ta có, tỷ sai phân cấp 1 : f(x 0 , x 1 ) =

0 1

0 1

x x

y y

;

sai phân cấp 1 : y 0 = y 1 – y 0

Trang 28

f(x 0 , x 1 ) =

0 1

0

x x

t

y 0 + 2

! 2

) 1 (

t t

y 0 + … + n

n

n t t

1 (

y 0 (2.4)

Đa thức (2.4) được gọi là đa thức nội suy Newton tiến với mốc nội suy

cách đều xuất phát từ mốc x 0 của hàm số f(x)

2.2.3 Nội suy ở cuối bảng

Các mốc nội suy được sắp xếp theo thứ tự giảm dần x n >x n-1 >…>x 0 bằng cách xây dựng tương tự trên ta xây dựng được đa tức nội suy Newton lùi như sau:

P(x) = y n +

! 1

t

y n-1 + 2

! 2

) 1 (t 

t

y n-2 + … + n

n

n t t

!

) 1 ) (

1 (

y 0 (2.5)

Đa thức (2.5) được gọi là đa thức nôi suy Newton lùi với mốc nội suy cách

đều xuất phát từ các mốc x n của hàm số f(x)

2.2.4 Nội suy giữa bảng

Các công thức Newton tiến, lùi chỉ mang tính đặc trưng một phía Nhiều khi ta cần sử dụng các công thức nội suy chứa giá trị trước và sau giá trị ban đầu Các công thức nội suy thông dụng nhất là các công thức chứa sai phân

trung tâm Giả sử các mốc nội suy được sắp xếp như sau: x i = x 0 + ih (i =

0,1,…,n)

2.2.4.1 Công thức nội suy Gauss I

Trang 29

Đa thức nội suy tìm dưới dạng “hai tiến, một lùi”:

P(x) = a 0 + a 1 (x – x 0 ) + a 2 (x – x 0 )(x – x 1 ) + a 3 (x – x -1 )(x – x 0 )(x – x 1 )+ +…+a 2n-1 (x – x –(n-1) ) … (x – x -1 )(x – x 0 ) … (x – x n-1 ) +

)!

1 2

h i

y

; a 2i = i i

i

h i

y

2 2

)!

2 (

t

y 0 + 2

! 2

) 1 (t 

t

y -1 + 3

! 3

) 1 ( ) 1 (tt t  y -1 +

! 4

) 2 )(

1 ( ) 1 (

t t t t

! 5

) 2 )(

1 ( ) 1 )(

2 (

) 1 ) (

1 ( ) 1 ) (

t t n

t t n

)!

2 (

) ) (

1 ( ) 1 ) (

1 (

2.2.4.2 Công thức nội suy Gauss II

Ta tìm công thức nội suy dưới dạng “một tiến, một lùi”

P(x) = a 0 + a 1 (x – x 0 ) + a 2 (x – x -1 )(x – x 0 ) + a 3 (x – x -1 )(x – x 0 )(x – x 1 )+ +…+a 2n-1 (x – x –(n-1) ) … (x – x -1 )(x – x 0 ) … (x – x n-1 ) +

Ngày đăng: 16/09/2021, 17:32

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. Nguyễn Thanh Thủy-Tạ Tuấn Anh, Nhập môn ngôn ngữ C NXB Khoa học kỹ thuật, 2005 Sách, tạp chí
Tiêu đề: Nhập môn ngôn ngữ C
Nhà XB: NXB Khoa học kỹ thuật
[2]. Phạm Văn Ất, Lập trình C NXB Khoa hoc kỹ thuật Sách, tạp chí
Tiêu đề: Lập trình C
Nhà XB: NXB Khoa hoc kỹ thuật
[3]. Trần Xuân Sinh, Phương pháp tính , Khoa Toán – Đại học Vinh Sách, tạp chí
Tiêu đề: Phương pháp tính
[4]. Dương Thủy Vỹ, Giáo trình phương pháp tính , NXB Khoa học và kỹ thuật 2005 Sách, tạp chí
Tiêu đề: Giáo trình phương pháp tính
Nhà XB: NXB Khoa học và kỹ thuật 2005
[5]. Phạm Kỳ Anh, Giải tích số , NXB Đại học quốc gia Hà Nội,1998 Sách, tạp chí
Tiêu đề: Giải tích số
Nhà XB: NXB Đại học quốc gia Hà Nội

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w