Теорія ймовірностей для фізично точного рендерингу

Певні інтеграли

Певний інтеграл – це інтеграл виду ∫abf(x)dx, де [a,b] – це відрізок (або область), x – скаляр, а f(x) – функція, яка може бути обчислена для будь-якої точки відрізка . Як написано у Вікіпедії, певний інтеграл – це площа зі знаком на площині x, обмежена графіком f, віссю x та вертикальними лініями x=a та x=b.

Ця концепція логічно поширюється і на більш високу кількість вимірювань: для певного подвійного інтегралу площа зі знаком стає об’ємом зі знаком, а загалом для певних багаторазових інтегралів він стає багатомірним об’ємом зі знаком.

У деяких випадках площу можна визначити аналітично , наприклад, для f(x)=2: на відрізку [a,b] площа дорівнюватиме 2(b−a). В інших випадках аналітичне рішення неможливе, наприклад, коли нам потрібно дізнатися про об’єм частини айсберга, що знаходиться над водою. У таких випадках f(x) часто можна семплювати.

Чисельне інтегрування

Ми можемо приблизно обчислити площу складних інтегралів за допомогою числового інтегрування. Один із прикладів — це сума Рімана. Ця сума обчислюється поділом області на правильні фігури (наприклад, прямокутники), які утворюють область, схожу на істинну область. Сума Рімана задається так:

(1)S=∑i=1nf(xi)Δxi
n – це кількість підінтервалів, а Δxi=b−an – ширина одного підінтервалу. Для кожного інтервалу i ми семплюємо f в одній точці xi усередині підінтервалу.

Слід зазначити, що при збільшенні суми Рімана сходиться до дійсного значення інтеграла:

(2)∫abf(x)dx=lim||Δx||→0∑i=1nf(xi)Δxi
Сума Рімана може використовуватися і при великих розмірностях. Однак тут ми стикаємося з проблемою: для функції з двома параметрами кількість підінтервалів має бути набагато більшою, якщо ми хочемо досягти дозволу, порівнянного з тим, що застосовувалося у двовимірному випадку. Це явище називають прокляттям розмірностей, і у більш високих розмірностях воно посилюється.

Зараз ми оцінимо точність суми Рімана для наступної функції (ми навмисно вибрали складну функцію):

(3)f(x)=|sin⁡(12x+π2)tan⁡x27+sin⁡(35×2)+4x+π+1−1|
Графік функції на відрізку [−2.5,2.5 ] показаний нижче. Для довідки ми обчислили в Wolfram Alpha певний інтеграл ∫−2.52.5f(x), отримавши площу 3.12970. Графік праворуч показує точність чисельного інтегрування за допомогою суми Рімана для збільшення n.

Щоб отримати уявлення про точність, наведемо числа: при n=50 похибка становить 2×10−3. При n=100 похибка становить 3×10−4. Наступний порядок величин виходить за n=200.

Додаткову інформацію про суми Рімана можна прочитати на таких ресурсах:

Монте-Карло (1)

При рендерингу майже ніякі (а може, взагалі ніякі?) інтеграли не є одноразовими. Це означає, що ми швидко зіткнемося із прокляттям розмірностей. Крім того, семплювання функції на рівних інтервалах піддається недостатності вибірки і ми можемо пропустити важливі значення функції або отримати непередбачені взаємні перешкоди між функцією, що семплюється.

Ці проблеми вирішуються за допомогою техніки, яка називається інтегруванням Монте-Карло. Аналогічно сумі Рімана, в ній теж використовується семплювання функції в безлічі точок, але на відміну від детермінованого патерну суми Рімана ми застосовуємо фундаментально недетермінований інгредієнт: випадкові числа .

Інтегрування Монте-Карло засноване на наступному спостереженні: інтеграл можна замінити очікуванням стохастичного експерименту: