Các tích phân gần đúng sử dụng mô phỏng Monte Carlo trong R


12

Làm cách nào để tính gần đúng tích phân sau bằng mô phỏng MC?

1111|xy|dxdy

Cảm ơn!

Chỉnh sửa (Một số ngữ cảnh): Tôi đang cố gắng học cách sử dụng mô phỏng để tích phân gần đúng và tôi đang thực hiện một số thực hành khi gặp một số khó khăn.

Chỉnh sửa 2 + 3 : Bằng cách nào đó tôi đã nhầm lẫn và nghĩ rằng tôi cần phải tách tích phân thành các phần riêng biệt. Vì vậy, tôi thực sự đã tìm ra nó:

n <- 15000
x <- runif(n, min=-1, max=1)
y <- runif(n, min=-1, max=1)
mean(4*abs(x-y))

2
Bạn(-1,1)

2
Đó là 0,5. Vì vậy, tôi cần nhân hai số 2 để cho: 'mean (4 * abs (xy))'. Cuối cùng tôi đã nhận được nó?
Tên tôi

3
(+1) ! :) Bạn có thể phải đợi một vài (8?) Giờ, nhưng bạn nên cân nhắc quay lại và đặt bản chỉnh sửa của mình vào câu trả lời để những người dùng khác (như tôi) có thể nâng cấp nó. Chào mừng đến với trang web! Tôi hy vọng sẽ thấy bạn tiếp tục tham gia ở đây. Chúc mừng. :)
Đức hồng y

1
Một điểm cần nói thêm: Tôi thấy cực đại cực kỳ hữu ích cho toán học tượng trưng. Nếu tôi phải tự mình thực hiện các phép tính phân tích, tôi sẽ gặp vấn đề tương tự như @EpiGrad. Nhưng trong cực đại, bạn có thể làm integrate(integrate(abs(x-y), y, -1, 1), x, -1, 1);và nhận được câu trả lời 8/3.
Karl

2
Đối với người R quan tâm, mặc dù không thanh lịch ở mã cực đại được đăng bởi Karl, người ta có thể làm integrate(Vectorize(function(y) integrate(function(x) abs(x-y), -1, 1)$value), -1, 1)và lấy xấp xỉ bằng số. Sử dụng cubature gói adaptIntegrate(function(x) abs(x[1] - x[2]), c(-1, -1), c(1, 1))có thể được sử dụng. Đây chỉ là để đưa ra một vài ý tưởng để đánh giá số các tích phân có thể có ích, chẳng hạn khi kiểm tra nếu một mô phỏng hoạt động chính xác.
NRH

Câu trả lời:


1

Chỉ để tham khảo, một tích phân chiều thấp như thế thường được thực hiện hiệu quả hơn thông qua phương pháp xác định thay vì Monte Carlo. Monte Carlo đi vào riêng của nó ở khoảng 4 đến 6 chiều. Trước tiên phải học nó ở kích thước thấp, tất nhiên ...


2
Tôi đoán đó là lý do tại sao câu hỏi này được gắn thẻ bài tập về nhà :-).
whuber

0

Bạn có thể làm điều đó trong Excel với Tukhi .

Đi vào

=tukhi.average(abs(2*rand()-1 - (2*rand()-1))) 

và nhấn nút chạy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.