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

Báo cáo Phương pháp tính: Công thức nội suy trung tâm Bessel tính gần đúng tích phân

19 336 1

Đ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 19
Dung lượng 1,26 MB

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

Nội dung

Nhưng bằng một cách nào đó ta thu được một bảng số có gồm các điểm xi thuộc đoạn [a;b] tương ứng với giá trị yi của hàm số tại điểm đó, vậy làm thế nào để từ các điểm trên ta có thể tí

Trang 1

ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC

BÁO CÁO GIỮA KỲ MÔN HỌC

Phương Pháp Số

Tên đề tài :

Nội suy trung tâm với thuật toán Bessel

Nhóm 12

Hà Nội – 1 Tháng 1 - 2021

Trang 2

Bài toán chung:Hàm số y= f(x) xác định trên đoạn [a;b] nào đó, ta chưa biết biểu

thức cụ thể của f(x) Nhưng bằng một cách nào đó ta thu được một bảng số có gồm

các điểm xi thuộc đoạn [a;b] tương ứng với giá trị yi của hàm số tại điểm đó, vậy

làm thế nào để từ các điểm trên ta có thể tính được giá trị tại một điểm bất kỳ

x  xi Hoặc cũng có thể ta đã xác định được việc biên đổi quy luật của hàm

y=f(x) nhưng quy luật quá phức tạp nên ta cũng không thể tính giá trị tại x một cách

dễ dàng được Do vậy, ta tìm cách xây dựng hàm F(x) đơn giản hơn f(x) mà khi tính

giá trị của F(x) và f(x) thì sự sai lệch là không lớn Hàm F(x) tìm được thỏa mãn điều

trên thường sẽ là đa thức và gọi là đa thức nội suy

Ta đã được làm quen với đa thức nội suy tiến, lùi Đa thức nội suy tiến hoặc lùi đều có

tính chất một phía Vậy tại sao ta không đưa ra đa thức nào đó có thể sử dụng cả tiến

và lùi để hiệu quả đạt được cao hơn

Đa thức mà có thể khai thác được cả 2 vấn đề tiến và lùi gọi là đa thức nội suy trung

tâm (công thức nội suy trung tâm)

I – Công thức nội suy trung tâm được xây dựng

Trang 3

II – Những vấn đề khởi đầu

- Các công thức nội suy trung tâm nêu trên sẽ chỉ dùng cho việc các mốc nội suy là

cách đều với bước là h>0

- Công thức nội suy trung tâm được xây dựng dựa trên công thức nội suy Newton có

mốc cách đều

- Về bản chất công thức nội suy trung tâm cũng được xây dựng dựa trên khai triển Taylor – Maclaurin

- Từ n+1 mốc ban đầu thì đa thức nội suy F(x) tìm được là duy nhất!!!

Trang 4

1 – Sai phân

Cho hàm số f(x) xác định trên đoạn [a;b]

x là số gia của đối số , x = h : bước nhảy

x = xi+1 − xi

Biểu thức y = y( x+h) − y gọi là sai phân cấp một của hàm y=f(x) tại x

Sai phân của sai phân cấp một là sai phân cấp hai ,

Sai phân của sai phân cấp m-1 gọi là sai phân cấp m ,

2 - Nhắc lại một số tính chất của sai phân

• Delta là toán tử tuyến tính

• Giá trị của hàm f(x) được biểu diễn qua sai phân các cấp của nó

• Sai phân cấp m của hàm f(x) được biểu diễn qua các giá trị liên tiếp của nó

• Nếu f(x) có đạo hàm liên tục đến cấp m trên đoạn [x,x+mh] thì ta có:

m f (x) = hm f (m) (x +mh) với 0    1

3 – Bảng sai phân

Trang 5

III – Lý thuyết xây dựng công thức nội suy trung tâm Bessel và ưu điểm

1 Ý tưởng xây dựng công thức và lý thuyết

Xuất phát từ hai công thức Gauss I và Gauss II :

- Gauss I :

Khi đó , Gauss I sẽ kết nạp các mốc nội suy theo quy tắc tiến trước lùi sau, tức là : x0 -> x1 -> x(-1) - > x2 -> x(-2)

- Và Gauss II :

Còn Gauss II sẽ kết nạp các mốc nội suy theo quy tắc lùi trước tiến sau, tức là : x0 -> x(-1) -> x1 - > x(-2) -> x2

Kết hợp 2 công thức này lại và lấy trung bình ta sẽ được công thức nội suy trung tâm Bessel

Trang 6

( )

Trước tiên, ta có :

Cho 2n + 2 mốc nội suy các đều sau:

x−n , x−(n−1) , , x−1, x0 , x1, , xn−1, xn , xn+1

Xuất phát từ mốc x0 sử dụng công thức nội suy Gauss II vừa ghi ở trên :

y− 2 y 3 y p(x) = p(x0 + ht) = y0 +

4 y

1 t + −1( t +1 ) t + −2( t +1 ) t ( t −1 )

(2n−1)

y

+ −2( t + 2 )( t +1 ) t ( t −1 ) + + −n( t + n −1 ) ( t − n +1 ) (1)

4!

+ 2n y − n

(2n)!

( 2n −1 ) ! (t + n)(t + n −1) (t − n +1)

Xuất phát từ mốc x1 , với x − x0 = ht thì

x − x1 = ( x − x0 ) + ( x0 − x1 ) = h ( t −1 )

Viết lại công thức (1) với mốc

được:

x1 , nghĩa là thay t bởi t −1 trong công thức (1) ta

p(x) = p(x0 + ht) = y1 + 0( t −1 ) + 0 t ( t −1 ) + −1 t ( t −1 )( t − 2 )

4 y (2n−1)

y

+−1(t +1)t (t −1)(t − 2) + +−(n−1)(t + n − 2) (t − n)

4!

2n

y

(2n −1)!

+− (n−1) (t + n −1) (t − n)

Trung bình cộng giữa công thức (2) và công thức nội suy Gauss thứ I như đã ghi ở

trên ta được:

= y + y  1  t ( t −1 ) 2 y + 2 y

p(x) p(x0 + ht) = 0 1 + t −

2  2  y0 +

−1 0

Trang 7

2

2

t − 1 

t ( t −1 )

3! 3 y− + ( t +1 ) t ( t −1 )( t − 2 ) 4

y

4!

+ 4 y

2

t − 1 (t +1) t (t −1)(t − 2)

 2 

5! 5 y− + +

+ ( t + n −1 )( t + n − 2 ) ( t + 2 )( t +1 ) t ( t −1 )( t − 2 ) ( t − n ) 2n

y−n + 2n

y−n+1

t − 1 (t + n −1) (t + 2)(t +1)t (t −1)(t − 2)(t − n)

(12)

 

+  

(2n +1)! 2n+1

y

Trong đó: x = x0 + ht

Gọi các hệ số

sau:

ai , i = 0, 2 n+1 lần lượt là hệ số của p(x) tức là ta viết lại p(x) như

p(x) = p(x + ht) = a + a (t − 1 ) + a t(t −1)

+a (t − 1 )t(t −1) + a (t +1)t(t −1)(t − 2) + a (t − 1 )(t +1)t(t −1)(t − 2)

3

+ +2n ( t + n −1 )( t + n − 2 ) ( t + 2 )( t +1 ) t ( t −1 )( t − 2 ) ( t − n )

+a  t − 1  ( t + n −1 ) ( t + 2 )( t +1 ) t ( t −1 )( t − 2 ) ( t − n )

2n+1

2 

Như vậy, các hệ số sẽ được tính theo công thức tổng quát sau:

0

2

1

2

n

Trang 8

2i+1

y + 2i y

(2i +1)! a2i = −i −i+1

2(2i)! i = 1, n

Có thể nói: công thức nội suy Bessel chính là trung bình cộng cả về “hình thức” và

“tính toán” của 2 công thức Gauss I và Gauss II

2 Ưu điểm của công thức nội suy trung tâm Bessel

- Công thức nội suy Bessel chỉ cần tính sai phân cấp chẵn

- Và các sai phân cấp “chẵn” đều có thể biến đổi về các sai phân cấp “chẵn” - thấp hơn nó một cách “hệ thống”

- Do đó, trong việc tính toán các hệ số của đa thức nội suy thì: “Ta chỉ cần tính các sai phân cấp chẵn của hàm số f(x) ” là ta có thể tính được toàn bộ các hệ số của đa thức nội suy và xây dựng được đa thức

Và ngay từ ý tưởng xây dựng công thức nội suy Sterling ta có thể thấy, công thức này đã tích hợp lại được cả 2 công thức Gauss I và Gauss II vào bên trong

nó Từ đó, ta thấy được khi sử dụng công thức nội suy Bessel trong việc tính toán giá trị sẽ không cần phải xem sét việc điểm cần tính là nằm phía bên nào

so với mốc nằm ở trung tâm là x0

Trang 9

III Lưu đồ thuật toán lập trình công thức Bessel , Input , Output

- Input: + Nhập hàm f(x) cần xây dựng đa thức nội suy để có bảng giá trị ban

đầu

+ Nhập điểm xuất phát của x + Nhập bước nhảy giữa các giá trị x (cách đều) + Nhập giá trị cần tính x* để tính giá trị đa thức tại x*

+ Nhập số mốc nội suy mong muốn sẽ được trích xuất ra từ bảng giá trị ban đầu để tính x*

- Output: + hàm F(x) sau khi đã rút gọn

+ Giá trị của hàm tại điểm x*

- Lưu Đồ Thuật Toán:

Em co gửi kèm file PDF lưu đồ thuật toán

- Lưu đồ thuật toán Bessel theo ý tưởng xây dựng thuật toán Bessel ở phần

II :

Trang 12

Lưu đồ lập bảng sai phân :

Trang 13

Lưu đồ thuật toán trích xuất mong nội suy từ bảng giá trị ban đầu:

- Với I là giá trị trung tâm cần xác định, từ đó sẽ đi sang 2 phía ở bảng giá

trị

- Với N là số mốc sẽ lấy ở bảng giá trị và tổng số mốc là 2N+2 mốc còn tuy

theo I lệch về bên trái hay bên phải của bảng giá trị

Trang 14

IV Lập trình

Phần lập trình em có gửi file Code và file PDF hướng dẫn sử dụng

Với phần code nhập số hàm, số liệu là ở file PhuongPhap và phần code lập bảng sai phân là ở file MocCachDeu ạ

Dưới đây em xin gửi lại một phần code thuật toán Bessel ở file Bessel :

class Bessel : MocCachDeu

{

public static void bessel()

{

//nhap();

NhapTuDong();

LapBangSaiPhan();

double h = x[1] - x[0];

Trang 15

int I = (int)((a - x[0]) / h);

if (I >= 5 && n - I - 1 >= 10)

N = 5;

else if (I < n / 2)

N = I;

else

N = n - I - 1;

DaThuc T = new DaThuc(); T += 1; // T = (t+n-1) (t+2)(t+1)t(t-1)(t-2) (t-n) DaThuc p = new DaThuc();

DaThuc t = new DaThuc(1);t.Heso[1] = 1 / h; t.Heso[0] = -x[I] / h;

p += saiphan[1, I] * (t - 0.5) + (y[I] + y[I + 1]) / 2;

for (int m = 1; m <= N; m++)

{

T *= (t - m) * (t + m - 1);

double SaiPhanTB = (saiphan[2 * m, I - m] + saiphan[2 * m, I - m + 1]) / 2;

p += (SaiPhanTB / giaithua(2 * m)) * T;

p += (saiphan[2 * m + 1, I - m] / giaithua(2 * m + 1)) * (T * (t - 0.5));

}

Console.WriteLine("f(x) = {0}", p);

Test(p, I - N, I + N + 1);

}

}

Trang 16

V Ví dụ chạy test kết quả

Trang 17

- Xong em chạy chương trình và nhập số mốc mong muốn từ bảng giá trị ban đầu là

50

Trang 18

- Em nhập tương tự như ví dụ 1 với h = 10, temp = 1000, hàm y = x^(1/2) và chạy chương trình

Ngày đăng: 28/02/2021, 00:39

TỪ KHÓA LIÊN QUAN

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

w