蒙特卡洛方法與定積分

2021-02-18 內核觀察

基本概念介紹


求積分其實要麼是求面積,要麼就是在求體積。可能有的人會覺得積分很討厭,那麼一大堆奇怪的符號,不知道該怎麼辦,但是實際上這是最自然的去描述一個自然事物的公式。同學們可以去嘗試了解一下黎曼和,因為這個傢伙在我們的圖形學中也很重要,重要的是它的思想,只不過它用了一種逼近的方式去描述出了積分,如果說成是人話的話,那麼就是黎曼和用離散的數據去逼近求解得到了連續的積分。不過我們說了,這只是一種思想,實際上我們相信,這種思想只要是個人就能想到,只不過要形成一套整體的方法論和解決方案,我們需要把這些思想武器擺放到正確的位置上。

我們先前的文章介紹了蒙特卡洛方法,它是一種統計學的方法,那麼我們怎麼把這個統計學的方法與定積分聯繫起來呢?為什麼我們要做這樣的一套思路連接呢?那是因為我們在做PBS或者PBR的時候,我們會去一個半球上對一個小區域內的燈光進行球面積分,然後算出這些入射光最終得出了怎樣的一個色彩。

為什麼我們在PBS或者PBR裡要對一個半球上的光線做積分呢?難道我們在傳統光柵化的Lmabert光照的計算方式有什麼錯誤嗎?要解決這個問題,就需要同學們去學習光線追蹤了,我們之所以要在一個半球上對光線做積分,最主要的原因是在現實世界中,射入我們眼睛的光線是由很多光線共同作用的結果,而不是我們在光柵化中提到的那個一個入射光對應一個出射光的模型。所以我們要儘可能的採樣更多的光束,才能得到一個相對正確的結果。這也是PBS或者PBR是基於物理的渲染的原因,我們沒有說這套渲染方式是:物理渲染。其中的含義就是,我們採用的是一套逼近物理世界的算法在進行渲染,因此叫:Physical Based Rendering或者是Physical Based Shading。

與定積分做連接

我們知道真實的環境中,射到物體表面的光線數量是無限多的,所以我們這裡要採用統計學的方式去模擬這種效果,因此我們就需要背後的這套蒙特卡洛方法與無限多的入射光的這一現實問題做思路的對接。

為了說明蒙特卡洛方法是如何解決現實中的連續數據問題的,我們來看看下面這個小例子,這個例子其實就是在求在第一象限, 

其實還是跟之前那個求PI的思路一樣,我們之前是在一個邊長為2的盒子裡,算隨機出來的點落在圓裡面的概率,那麼我們依照這個思路,我們在第一象限裡,執行n次下面的操作:

在0~2的範圍內隨機出一個點x,然後求出 

把所有第一步求出來的 

然後用sum乘以2再除以n

這便得到了 

#include <iostream>#include <stdio.h>#include <math.h>float randf() {  return float(rand()) / float(RAND_MAX);}float srandf() {  return randf()*2.0f - 1.0f;}int main(int argc, char **argv) {  int count = 1000000;  float sum = 0.0f;  for (int i=0;i<count;++i){    float x = randf()*2.0f;    sum += x * x;  }  printf("area is %f\n", 2.0f*sum /float(count));  return 0;}

上面這些代碼為什麼可以這麼寫呢?背後我們出於怎樣的思路把代碼寫成這樣子的呢?因為我們的定積分公式表示的是 

所以對於積分公式而言,我們求的就是這條曲線下面的這塊積分面積。這裡底邊x軸的邊長是2,如果我們把求面積的方法寫成近似的值的話,我們可以把它看成是把底邊切成n份,每一份的寬度是 

所以我們最終求得的面積為: 

完結撒花,這貌似就是一個求積分吧,跟蒙特卡洛方法有聯繫?當然是有聯繫的,我們看到具體的代碼實現,不難發現,我們的x並不是等於 

如果沒辦法想明白這個x取隨機數的原因,那麼可以回想一下先前我們舉例的圓的例子,在一個方形內隨機一個點,落在圓裡的概率,通過那個概率我們可以求出PI的值。

相關焦點

  • 蒙特卡洛法求積分
    問題一:我們如何用蒙特卡洛方法求積分?問題二:如何近似求一個隨機變量的數學期望?問題三:估計的誤差是多少?問題四:如何從理論上對蒙特卡洛估計做分析?結論import numpy as npimport matplotlib.pyplot as pltimport seaborn as snssns.set_style('whitegrid')問題一:我們如何用蒙特卡洛方法求積分?
  • 定積分的計算方法
    萊布尼茨-數學家基本方法:牛頓萊布尼茨、換元、分部積分法特殊方法:幾何意義、奇偶性、周期性、基本公式下面講解幾個特殊的方法1、定積分的幾何意義2、奇偶性與周期性3、基本公式知識點只會越來越多,小夥伴們選擇性記憶,主要靠自己理解。
  • 求一元函數定積分和不定積分的六種方法
    定積分和不定積分的求法沒必要分開,因為會求不定積分就會求定積分。
  • 定積分的計算
    使用牛頓-萊布尼茲公式求定積分,則求定積分與求不定積分的方法類似,主要思想是利用積分方法進行積分,然後「出來代值」計算。
  • python快速求解不定積分和定積分
    基本概念定積分的定義如下:不定積分定義如下:from sympy import *接下來我們需要定義,本次需要使用到的符號變量x,其定義如下:x = symbols('x')最後我們來計算積分,定積分和不定積分我們都需要用到函數integrate,這個函數的用法非常的簡單,完全可以自己領悟。
  • 蒙特卡洛模擬(Python)深入教程
    蒙特卡洛模擬使我們能夠看到決策的所有可能結果,並評估風險影響,從而在不確定的情況下更好地做出決策。在本文中,我們將通過五個不同的例子來理解蒙特卡羅模擬方法。所以,我們需要對所有的θ值做一個積分,得到投針相交的實際概率。圖 30: 對所有θ值積分的投針相交概率公式。圖 31: PI的估計值。由蒲豐投針問題來估計PI:接下來,我們要用上面的公式來進行實驗求得PI值。
  • Matlab:不定積分和定積分
    點擊上方藍字關注 無距書鄉 獲取即時更新最近在寫一些常用的工具方法,前面已經介紹過了導數和極限,
  • 定積分與不定積分的計算思路、步驟與例題
    ,如果有,則考慮使用「偶倍奇零」性質簡化定積分計算.Step2:考慮被積函數是否具有周期性,如果是周期函數,考慮積分區間的長度是否為周期的整數倍,如果是,則利用周期函數的定積分在任一周期長度的區間上的定積分相等的結論簡化積分計算.
  • 「認識你自己」——自學習蒙特卡洛三部曲
    茲事體大,這裡的篇幅沒法完全展開,在這篇文章中,筆者只希望講述我們最近發展「自學習蒙特卡洛方法(Self-leaning Monte Carlo method, SLMC)」三部曲[1,2,3],講述我們如何通過自我觀照、自我學習蒙特卡洛構型,設計出自學習蒙特卡洛方法,解決了凝聚態量子多體系統蒙特卡洛模擬中一些諸如臨界慢化和接收概率低等瓶頸性的問題,推動領域的發展。
  • 反常積分是定積分嗎?
    反常積分與定積分都表示一個數值,那麼反常積分是定積分嗎?很多同學認為反常積分是定積分,造成這種錯誤理解的原因可能有三個:1)對定積分和反常積分的定義並不很了解;2)從記憶的角度看,定積分和反常積分都描述曲線與坐標軸所圍成封閉區域的面積,因此想當然認為兩者是等價的。但事實上,反常積分和定積分是兩個完全不同的概念,1.
  • 無法用公式的形式求定積分時怎麼辦?——藉助幾何意義求定積分
    第二步,知道定積分1-x^2在-1≤x≤1上的意義。定積分1-x^2在-1≤x≤1上則表示半圓的面積。詳細講解「用定積分的方法來求幾何概型的題」第三步,根據面積相等的原則,得出定積分√(1-x^2)(-1≤x≤1)的面積。
  • 在線計算專題(07):不定積分、定積分與重積分、曲線、曲面積分的計算
    另外在積分之後給出了積分函數的帶皮亞諾餘項的麥克勞林公式和一些定積分、反常積分結果. 如下圖所示.2、定積分、反常積分計算與變限積分求導例1  計算以下定積分參考輸入表達式為integrate(sinx+cos(2x))^2,x=0 to pi/2執行結果不僅給出了積分結果,也給出了定積分的幾何意義,最後還給出了不定積分結果.
  • 揭開原函數、不定積分、定積分的神秘面紗!
    原函數、不定積分、定積分從定義上看似不難理解,但是其中存在很多的難點和坑,大家都知曉嗎?1.原函數、不定積分、定積分的含義工欲善其事,必先利其器。欲徹底掌握其中的難點,首先要清楚原函數、不定積分、定積分的含義,通俗點講,原函數、不定積分、定積分的含義如下:原函數:如果函數F(x)在定義域內可導,且導函數為f(x),則稱F(x)為f(x)的一個原函數。不定積分:若函數f(x)存在原函數,則f(x)所有原函數的集合稱為不定積分。換句話說,不定積分表示函數f(x)所有的原函數。
  • 根據定積分的定義推導表達式
    上篇中我們分析了定積分求取曲邊圖形面積的思想,連續函數f(x)在區間[a,b]的定積分可表示如下按照其定義中的求解過程,可分為四步:分割、近似、求和、取極限。分割的方法有無數種,但必須有個條件,那就是當分割的段數趨近於無窮大時,每段圖形的寬度都必須趨近於0,只有這樣才能保證總體的誤差近似於0。
  • 數學小站定積分計算公式和性質
    這裡x既是積分上限,又是積分變量,由於定積分與積分變量無關,故可將此改為間上任意變動,則對於每一個取定的x值,定積分有一個確定值與之對應,所以定積分在為底的曲邊梯形的面積,必然隨著底數端點的變化而變化,所以陰影部分的面積是端點x的函數(見圖5-10)定積分計算公式利用定義計算定積分的值是十分麻煩的,有時甚至無法計算。因此,必須尋求計算定積分的簡便方法。
  • 2019考研數學:淺析定積分的概念及其性質
    主要知識點與考點含有:不定積分、定積分、二重積分、以及定積分的應用。其中,不定積分的學習重點在於解題方法的掌握。相較而言,定積分的學習除了要求大家能熟練地使用解題方法,還需要大家注重對於定義性質的理解與把握。後續的二重積分和定積分的的應用問題都是需在定積分定義理解的基礎上再進行學習。那麼,老師現在就帶領大家一起來學習定積分的定義性質。
  • 2018蒙特卡洛大師賽告訴我們的五件事
    對西班牙人來說,第31次在大師賽捧杯意味著新賽季的真正開始,但對其他球員而言,他們在蒙特卡洛鄉村俱樂部有哪些時刻值得銘記呢? ATP 官網盤點了本屆蒙特卡洛大師賽的五大事件。而在昨晚的蒙特卡洛,他又得到機會向職業生涯最具分量的冠軍發起衝擊。 老實說,錦織圭從腕傷手術後歸來表現不俗。職業生涯第二次參加蒙特卡洛大師賽,日本人就打進決賽,連續戰勝前溫網亞軍伯蒂奇、2018年雪梨賽冠軍梅德維德夫、 2號種子西裡奇和2屆大師賽冠軍小茲維列夫,這也是錦織圭時隔 14 個月首度闖進ATP巡迴賽決賽。
  • 計算定積分∫「-1,1」(x+1)dx的值
    主要內容:本文通過定積分直接計算法、定積分定理和定積分的幾何意義等方法,介紹計算定積分∫[-1,1](x+1)dx值的主要思路和步驟。方法一:定積分直接計算法∫[-1,1](x+1)dx=1/2x^2+x[-1,1]=1/2(1^2-1^2)+2=2。方法二:定積分定理計算法定理:奇函數在對稱區間上的積分為0。∫[-1,1](x+1)dx=∫[-1,1]xdx+∫[-1,1]dx=0+x[-1,1]=2。
  • 利用輔助函數證明定積分不等式的常見失分點
    在不等式證明中,經常用到的一個方法是構造輔助函數法。輔助函數法,是通過將不等式中一個常量轉換為自變量,通過論證輔助函數的單調性和尋找零點,進而證明原不等式。需要用到輔助函數法的定積分不等式通常有以下幾個特徵:(1)不等式中至少涉及兩個常量。對應習題1中的常量a和b。(2)當將一個常量固定,考慮另一個常量自由變化時,結合題幹條件,題幹的不等式結論沒有變化。對應習題1,將常量a固定,自由變化b時,不影響不等式結論。
  • 「高中數學積分」定積分求陰影面積舉例1
    在中小學練習中,經常出現求陰影面積的問題,其中大多數容易入手,套用面積公式或經簡單割補拼接湊可得方法。但有少數題目題目難以用常規方法處理,如下圖題:本題看似簡單,經過分析發現,沒有現成公式,經過簡單的割補拼接湊也不能得到基本幾何圖形的有效組合,因為它要用到反三角或定積分計算。法一:如下圖建立坐標系,用定積分思想求解,具體過程略。