PDA

View Full Version : Một số phương pháp tính tích phân, sử dụng kĩ thuật lập trình song song[Chuyên đề]



mp121209
25-04-2011, 04:54 AM
Chào các bạn,

Các bạn đã biết những phương pháp nào (chỉ đề cập đến phương pháp tính gần đúng, tức là phương pháp số) để tính tích phân xác định? Ở trường đại học kĩ thuật chắc chắn bạn sẽ được học qua Toán cao cấp, chắc chắn có đề cập đến phương pháp hình thang, công thức Simon, công thức Simson, ...

Tính tích phân xác định là một trong những bài toán rất đơn giản để mô phỏng kĩ thuật lập trình song song.

Mình mở chuyên đề này với hai mục đích:
1. Giới thiệu các phương pháp tính tích phân đã nêu ở trên, đồng thời giới thiệu thêm một phương pháp, có lẽ ít bạn biết tới - phương pháp Monte-Carlo, đặt nền tảng trên lý thuyết xác suất ngẫu nhiên.
2. Sử dụng kĩ thuật lập trình song song để áp dụng vào bài toán

Theo phương pháp Monte-Carlo, việc tính tích phân của một hàm f(x) trên đoạn [a,b] quy về việc tạo ra hàng loạt cặp số ngẫu nhiên (x,y) với x thuộc khoảng [a,b] mà y thuộc khoảng [m,M], ở đây m, M tương ứng là giá trị nhỏ nhất và lớn nhất của f(x) trên đoạn [a,b]. Gọi số cặp điểm (x,y) là N. Xét từng cặp điểm (x,y) trong N cặp nêu trên và điều kiện f[x] <= y (*). Gọi n là số cặp điểm thỏa mãn điều kiện (*). Khi đó tích phân của hàm f(x) trên đoạn [a,b] sẽ được tính theo công thức: integral(f,a,b)=(b-a)*(M-m)*(n/N)

Rất vui nếu các bạn đóng góp các phương pháp mới, code mô phỏng!

Wazi Armstrong
25-04-2011, 08:37 AM
Ha ha, đang định gọi ông Monte Carlo lên thì đọc đoạn sau có thấy đề cập rồi :D
Mình có 1 bài tương tự trong việc tính toán số PI ở đây, nhưng chưa tìm ra lời giải tốt http://forums.congdongcviet.com/showthread.php?p=207025

thachthao
25-04-2011, 02:40 PM
Tôi nghĩ thế này:
1. Còn phương pháp Gaussian nhưng giải thuật có vẻ hơi phức tạp ở hàm sinh các điểm và weight gaussianly.
2. Về MC của bạn, có thể cải thiện chút ít: thay cho việc so sánh hàm đặt trong hình chữ nhật ta có thể đặt hàm nằm bên dưới một hàm khác đơn giản và tích phân đã biết, như vậy tăng số điểm accepted.
3. Về MC simulation có phương pháp thứ hai đơn giản hơn, có thể được tổng quát hóa và được dùng nhiều hơn: "ramdomly sampling the function", hơn nữa tránh được việc xác định giá trị lớn nhất vào nhỏ nhất của hàm. Thay cho sampling function đều đặn như Simpson ta có thể sample function với N các điểm ngẫu nhiên {x_i} trên đoạn [a,b], khi đó tích phân đơn giản bằng {\sum_i f_i} *[b-a] /N. MC như vậy hội tụ chậm với các hàm biến đổi nhanh, các đỉnh nhọn. Vì vậy nếu ta có thông tin tương đối về vị trí các đỉnh, người ta se sử dụng weighted sampling, sample các điểm ngẫu nhiên với mật độ cao ở gần các đỉnh: tôi hiểu đây là ý tưởng Monte Carlo simulation dưới dạng đơn giản nhất ("weighted sampling".)