不用任何數學方法,如何計算圓面積

2021-01-11 澎湃新聞

機器之心

選自medium

作者:Andre Ye

機器之心編譯

機器之心編輯部

殺雞用牛刀,我們用機器學習方法來算圓的面積。

詢問任何人圓的面積是多少,他們都會告訴你不就是��r⊃2;嗎。但如果你問他們為什麼,他們很可能並不知道。

這是因為圓的面積公式的證明在大多數情況下要麼不直觀,不令人滿意,要麼充斥著積分等高級數學概念。

借鑑統計學習和機器學習的核心原理,我們可以使用蒙特卡羅模擬和多項式/二次回歸來創建基於計算的方法,以找到圓的面積公式。

在不使用任何數學運算的情況下得出圓的面積,我們使用了蒙特卡羅方法。從探索不規則形狀的面積到預測股票市場的情況,都用到了蒙特卡羅方法。該方法的核心思想是引入隨機性,並測量系統對其作出的反饋,甚至可以在不了解系統原理的情況下獲得有效信息。

在使用蒙特卡羅來近似圓的面積時,我們先生成一些隨機坐標點 (x1,x2),這兩個方向的坐標都是從負半徑值到正半徑值的均勻分布繪製得到的。我們在圓中放入 250,000 個這樣的坐標點,如中心極限定理(或大數定律)所描述的,研究所用的真實隨機樣例點越多,得到的結果就會越準確。

對於圓內的每一個點,我們可以引入一個落入圓內的點的數目的計數變量。在所有隨機點都被投入之後,圓內的點數除以總點數(該研究中為 250,000)的值就代表在正方形內圓的面積所佔的分數。該正方形的邊長是圓的半徑的兩倍,因此正方形的面積是 4r⊃2;,其中 r 是圓的半徑。用 4r⊃2;乘之前得到的分數,就得到了圓的面積。通過蒙特卡羅方法,可以非常接近地得到圓的真實面積而無需數學計算公式。

道理很簡單,結果幾乎完全正確!

我們可以在給定半徑 r 的情況下找到任何圓的面積,但此時此刻我們還沒有歸納出圓的公式。為找到公式,我們需要創建一個二次方程式進行建模,該方程式需要一個半徑並嘗試輸出面積。為了正確地擬合方程,我們必須為每個半徑的蒙特卡洛近似面積收集數據。

import numpy as np

from tqdm import tqdm #Just a progress bar indicator

#Number of randomized points to generate for each approximation

num_points = 250_000

#Lists to store the radius and its corresponding area approximation

radii = []

areas = []

#For each of the 500 equally spaced values between 1 and 100 inclusive:

for radius in tqdm(np.linspace(1,100,500)):

#A counter for the number of points in the circle

in_circle = 0

for i in range(num_points):

#Generate an x and y coordinate from a uniform distribution bounded by a tangent box

xcoor = np.random.uniform(-radius,radius)

ycoor = np.random.uniform(-radius,radius)

#If the point is inside the circle, add one to in_circle

if xcoor**2 + ycoor**2 < radius**2:

in_circle += 1

#Get the fraction of the points that were inside the circle

area_frac = in_circle/num_points

#Append the approximated area and the radius

areas.append(area_frac*(4*(radius**2)))

radii.append(radius)

而下一步就是寫一個擬合數據的二次項模型(回歸模型),y =ax⊃2;。我們可以通過繪圖驗證數據為二次項,而不是三階或四階多項式。從本質上講,這是一個基礎的機器學習問題,因此再回顧一些基本術語:

模型參數:模型進行自動調整從而找到最佳參數,在這種情況下,參數為 a。如果具有 n 個參數,則該模型被稱為 n 維。我們所使用的最基本模型是一維的,而對圖像進行分類的深度神經網絡有可能具有數百萬個維度。

損失函數:損失函數是對當下模擬情況進行評估,並希望找到可以得到最低誤差度的參數集,從而使得損失函數最小化。比如某個參數值 j 的損失函數值為 3,而參數值 k 的損失函數值為 2,則理應選擇參數值 k。

平均絕對誤差(MAE):我們將使用損失函數/錯誤度量,其原因是因為它易於使用且易於理解。給定當前參數(a)和模型預測值,而平均絕對誤差是指預測值與真實值之間平均相差有多大,較低的 MAE 意味著模型更適合數據。

學習率:為了優化參數,模型會在特定「方向」上逐漸調整參數。由於我們現在的模型僅優化一個參數(a),因此僅需決定在一維平面上是增大或是減小參數值(任何變化都會產生較低的損失函數)。而模型在調整過程中的移動量稱為學習率。較高的學習速度意味著模型有可能短時間內就能得到一組效果較好的參數,但無法保證其準確度,而較低的學習率能夠獲得非常不錯的參數,並且擁有較高的準確度,唯一一點是需要大量的訓練時間。

有了這些變量,我們可以構建一個非常基礎簡單的程序,使得它對這些數據擬合:

把參數 coef(a)初始化為 0.1。

對於訓練周期中的每次迭代:

對 coef 提出兩條路徑;coef+lr 和 coef-lr,其中 lr 是學習率。

對使用 coef=coef+lr 的模型和使用 coef=coef-lr 的模型評估平均絕對誤差。

將 coef 設置為等於 coef+lr 和 coef-lr 中平均絕對誤差值較小的那個數字。

通過對平均絕對誤差的反覆優化,模型最終將收斂出一個「最佳」的 coef 值(從而最大程度地降低平均絕對誤差)。這一思路正是機器學習的核心原理——通過反覆地推斷、評估和修正,計算機可以「磨鍊」出一套最優的參數。

coef = 0.1 #Initial coefficient value

learning_rate = 0.00001 #How fast the model 'learns'

iterations = 100000 #How many times we want the model to 'practice and correct'

for i in tqdm(range(iterations)): #note - tqdm is just a progressbar

#Propose two path for the coefficient:

up_coef = coef + learning_rate #Move up

down_coef = coef - learning_rate #Or move down

#Store the predictions for a model using parameters up_coef and down_coef

up_pred = []

down_pred = []

#For each radius value in the previously created list radii:

for r in radii:

#Append the model using up_coef's and down_coef's prediction (a*r^2)

up_pred.append(up_coef*(r**2))

down_pred.append(down_coef*(r**2))

#Find the MAE. Both are converted to NumPy arrays for easy operation.

up_coef_mae = np.abs(np.array([up_pred])-np.array([areas])).mean()

down_coef_mae = np.abs(np.array([down_pred])-np.array([areas])).mean()

#If moving the coefficient down yields a lower (better) MAE:

if down_coef_mae < up_coef_mae:

#Set it equal to down_coef

coef = down_coef

#Otherwise (moving the coefficient up yields a lower (better) or equal MAE:

else:

#Set it equal to up_coef

coef = up_coef

當我們查看訓練的 coef 值時,可以看到它等於π:

print(str(coef)[:5]) #first four digits of coefficient (decimal point counts as a character)

[Output]: '3.141'

當然,計算圓面積的公式很好記就是��r⊃2;。無需使用微積分中的任何複雜的數學方法或其他證明,我們就能找到它的公式,並找到一種使用蒙特卡洛模擬和二次回歸找到��值的方法。使用這種思路就可以找到計算圓面積的方法——當然也可以找到任何圖形的面積計算公式——橢圓、心形、二維的烏龜形狀——只要參數可以說明它的輪廓。

近年來,計算機已經接手開始解決複雜的高可變數學問題,計算圓面積只是其中的一個簡單的示例。如果想要更複雜、更具開創性的,那當然是四色定理了(每個無外飛地的地圖都可以用不多於四種顏色來染色,且不會有兩個鄰接的區域顏色相同)。這是第一個由計算機先生成證明,又被數學家廣泛接受的成果。

藉助計算機,人類可以探索以往無法嘗試進入的,極其複雜的數學領域。

原文連結:https://medium.com/swlh/finding-the-formula-for-circle-area-without-using-any-math-898cbee70253

機器之心聯合 AWS 開設線上公開課,通過 6 次直播課程幫助大家熟悉 Amazon SageMaker 各項組件的使用方法,輕鬆玩轉機器學習。

6 月 2 日 20:00,AWS解決方案架構師尹振宇將帶來第 3 課,詳解如何利用SageMaker Operator簡化Kubernetes 上的機器學習任務管理。

點擊閱讀原文或識別二維碼,立即預約直播。

閱讀原文

原標題:《不用任何數學方法,如何計算圓面積》

閱讀原文

相關焦點

  • 不用微積分,如何計算圓面積
    詢問任何人圓的面積是多少,他們都會告訴你不就是r嗎。但如果你問他們為什麼,他們很可能並不知道。這是因為圓的面積公式的證明在大多數情況下要麼不直觀,不令人滿意,要麼充斥著積分等高級數學概念。借鑑統計學習和機器學習的核心原理,我們可以使用蒙特卡羅模擬和多項式/二次回歸來創建基於計算的方法,以找到圓的面積公式。在不使用任何數學運算的情況下得出圓的面積,我們使用了蒙特卡羅方法。從探索不規則形狀的面積到預測股票市場的情況,都用到了蒙特卡羅方法。
  • 一位數學老師的教學方法:如何推導圓的面積計算?
    圓也是最常見的平面圖形,它是最簡單的曲線圖形。俗話說「溫故而知新」,在學習新知之前,引導學生回憶以前探究長方形、平行四邊形、三角形、梯形面積公式的推導方法,引導學生發現「轉化」是探究新的數學知識、解決數學問題的好方法,為下方探究圓的面積計算的方法奠定基礎。
  • 以圓面積的計算闡述有限元方法的思想和實質
    假定我們並不知道圓面積的計算公式和三角形面積計算公式,現在需要通過有限元方法給出半徑為R的圓的面積計算公式。
  • python由圓半徑計算圓的周長和面積
    前言提到圓,大家一定會首先想到大鋼鏰兒上面的一圓的圓,因為大家都是財迷。這裡我們所說的圓是指圓形的圓,哈哈不過大鋼鏰兒也是圓形的。要計算圓的周長和面積,自然而然就要用到圓周率π,在我國,祖衝之在劉徽開創的探索圓周率的精確方法的基礎上,首次將「圓周率」精算到小數第七位,即在3.1415926和3.1415927之間,他提出的「祖率」對數學的研究有重大貢獻。直到16世紀,阿拉伯數學家阿爾·卡西才打破了這一紀錄。
  • 巧求與圓有關的面積問題,老師再也不用擔心我的學習
    我們閩南語有句俗語:會不會讀看英語,會不會學看數學。因為數學的學習是比較靈活的,題目是千變萬化的,所以如果死讀書,那一定會把數學讀死的。今天鄭老師就教大家一起如何來巧求與圓有關的面積問題,學會後老師再也不用擔心你的學習啦!
  • 與圓有關的計算,圓的陰影部分面積計算,學生:求心理陰影面積
    圓的陰影部分面積,在中考中屬於計算類題目,一般都是計算不規則圖形的陰影部分面積,我們常用規則圖形的面積作減法來計算,這裡我們需要知道扇形的面積計算公式和一些其它圖形的面積公式計算例一:>連接BC,OB,我們計算陰影部分的面積,就可以當作三角形BCE的面積減去拱形BC的面積,即BCE-(扇形OBC-OBC)例二:求陰影部分面積有時候輔助線很重要例三:例四:利用弧長公式計算
  • 北師大版六年級數學上冊圓面積的計算,圓環的面積。值得一看
    上一篇主要講了圓的認識和圓的周長的計算,主要用到的公式有:r=d÷2 d=2rC=2πr或者C=πdd=C÷π r=C÷π÷2這一節內容我們講的內容有三個:①圓的面積的推導過程和面積公式我們把圓先沿著任意一條直徑剪成兩個半圓,然後把每個半圓都平均分成相等的份數,最後把兩個半圓拼起來,拼成了一個長方形。
  • 計算陰影部分的面積,李明用的是圓減去兩個三角形,你用的是什麼
    題中圖形只標出了一個數字12,其餘沒有任何提示和標註。仔細觀察陰影部分是四個相連的不規則圖形,無法直接計算。此時,思考間接計算的方法,比如,前面文章裡我們一起學過的圖形面積相減法。在我們班上,李明同學掌握這種方法進行計算是運用的最好的,每次都得滿分,他的數學成績總是讓所有同學都羨慕不已。下面我們就一起來看看他的答題過程吧。
  • 2019年小升初數學試卷預測題,計算陰影部分的面積,重點在半徑
    試題是要我們計算圖中陰影部分的面積。陰影部分的面積是一個不規則圖形,直接是計算不出來的。那麼,我們應該通過什麼方法來計算陰影部分的面積呢?對於這樣的數學題,很多同學都覺得很難,一是覺得陰影部分的面積很難計算,二是在心理上就是覺得幾何題很難。通過觀察上圖後,你覺得這題難不難?我覺得這題挺簡單的,方法如下:
  • 圓的弧長與扇形面積,陰影部分面積計算題,老師:用割補法計算
    圓的弧長與陰影部分面積的計算是中考數學計算中的一種填空題類型,難度倒也不大,話說中考數學也不一定全都是考的超難的也有基礎題目,今天為大家整理一些圓陰影部分面積計算的習題例題一:圓錐的側面展開圖其實就是扇形的面積,根據扇形的面積公式計算就可以,也可以用推導出的公式s=
  • 中考數學診斷,圓的弧長與扇形面積,用割補法計算陰影的技巧
    上一篇文章大概寫了一下圓的切線證明的問題,圓的問題在選擇和判斷題中還有一種類型那就是計算陰影部分的面積,我們除了要記憶幾個公式外還要學會用割補法來計算陰影部分的面積01圓的弧長和扇形面積計算還有圓的周長和面積公式都共同用來計算弧長和扇形面積類的題目例一:直接套用公式計算類型直接套用扇形面積計算公式計算就可以了
  • 2018中考數學知識點:圓的計算公式
    新一輪中考複習備考周期正式開始,中考網為各位初三考生整理了各學科的複習攻略,主要包括中考必考點、中考常考知識點、各科複習方法、考試答題技巧等內容,幫助各位考生梳理知識脈絡,理清做題思路,希望各位考生可以在考試中取得優異成績!下面是《2018中考數學知識點:圓的計算公式》,僅供參考!
  • 小學數學的重要知識點:「方中圓」與「圓中方」的計算方法
    圓是我們常見的一種幾何圖形,生活中處處可見。認識圓,解構圓,理解圓,探究圓,這些都是數學不可或缺的內容,也是邏輯思維能力和極限想像能力訓練的需要。數學的學習絕不能只浮於表面,絕不能淺嘗輒止,對於每一個知識點都應深入挖掘和探索,最大限度地明其義理,最大可能地拓寬拔高。
  • 計算下圖中陰影部分的面積,最簡單的方法是用正方形的面積除以2
    小升初數學題圖形包含了正方形、扇形和三角形,但是所求陰影部分的面積卻是兩個不規則的圖形。小升初數學題到這一步,我們已經把陰影部分的面積表示成了正方形的面積減去三角形的面積了,現在可以計算了嗎?題中已知圓形O的半徑為2分米,正方形的邊長為2分米,三角形的底為圓的半徑2分米,高也為圓的半徑2分米。將這些已知數值代入我們的式子,就可以很簡單地計算出陰影部分的面積了,如下圖所示:
  • 2020年中考數學複習資料之圓的面積
    中考網整理了關於2020年中考數學複習資料之圓的面積,希望對同學們有所幫助,僅供參考。   圓的面積s=π×r×r   其中,π是周圍率,等於3。14   r是圓的半徑。   圓的周長計算公式為:C=2πR。C代表圓的周長,r代表圓的半徑。圓的面積公式為:S=πR2(R的平方)。
  • 小學數學說課稿:《平行四邊形的面積計算》
    (二)教材分析:(1)教材的內容和地位:教材的主要內容是:「平行四邊形的面積計算」。本節課的學習,要求學生在掌握了平行四邊形的特徵以及長方形、正方形面積計算的基礎上進行的,學好這節課同時又是進一步學習三角形面積、梯形面積、圓的面積和立體圖形表面積計算的基礎。
  • 中考數學專題複習:第24講 圓的有關計算
    第24講 圓的有關計算考點分析1、圓的弧長及扇形面積公式2、圓與其他圖形的結合計算①圓與相似三角形結合的計算;②圓與三角函數結合的計算;③圓與勾股定理結合的計算。思想方法1、基本思想轉化思想:處理不規則圖形的面積時,注意利用割補法與等積變換轉化為規則圖形,再利用規則圖形的公式求解.
  • 面積計算
    所以幾何學誕生之初就和面積的計算息息相關。 我們知道計算面積最好的辦法就是微積分,有了這個神器,媽媽再也不用擔心我算面積的事情了。但是對於小學生來說,這個超綱了。。。 何況微積分也必須是以承認矩形的面積等於長乘以寬為基礎的。事實上,在處理這些邊界不是直線段圖形面積的時候,古希臘人體現出了高超的計算技巧。
  • 2021年初中七年級數學知識點:圓的面積
    中考網整理了關於2021年初中七年級數學知識點:圓的面積,希望對同學們有所幫助,僅供參考。   圓的面積s=π×r×r   其中,π是周圍率,等於3。14   r是圓的半徑。   圓的周長計算公式為:C=2πR。C代表圓的周長,r代表圓的半徑。圓的面積公式為:S=πR2(R的平方)。
  • 除了用「正多邊形逼近圓」的「割圓術」,還有哪些計算π的方法?
    眾所周知,圓周率是圓周長與直徑的比值,而且是一個無理數,更進一步的說是一個超越數。由於計算的需要,古今中外的數學家從未停止對圓周率的計算,其中主要有7類方法:割圓術、分析法、沙-波法、橢圓積分法、概率法等。