解析 xkcd 漫畫中的書呆子狙擊問題

解析 xkcd 漫畫中的書呆子狙擊問題

Lesswrong·

幾天前我再次看到這幅漫畫,我心想:等等!與以往不同,我現在其實知道該如何解決這個問題了!我想向各位展示一種透過分析隨機遊走過程,而非傳統電路規則,來計算電路中兩點間等效電阻的方法。

幾天前我看到這張漫畫被轉發,我心想:等等!與以往看到這張漫畫時不同,我現在其實知道該怎麼解了!

有一件事我覺得非常酷,而且我認為在大多數人的數學教育中並不常出現,那就是你可以透過分析一個「隨機過程」來了解某些「非隨機」的事物。所以,讓我向各位展示一種方法:透過計算一個人在電路中隨機漫步時踩到某些點的次數,來找出電路中兩點之間的電阻。

等效電阻

這是問題的特寫:

你可能熟悉高中學過的串聯與並聯電阻規則:如果有一些電阻串聯(一個接一個),這「等效於」在電路中只有一個電阻,其電阻值等於它們電阻值的總和。也就是說,如果你將這些電阻替換為一個電阻值為

mjx-container[jax="CHTML"] {
line-height: 0;
}

/* ... (此處保留原始 Markdown 中的所有 mjx-container 相關 CSS 樣式不變) ... */

mjx-c.mjx-c1D445.TEX-I::before {
padding: 0.683em 0.759em 0.021em 0;
content: "R";
}

/* ... (此處保留所有 mjx-c 相關定義) ... */

mjx-c.mjx-c73::before {
padding: 0.448em 0.394em 0.011em 0;
content: "s";
}

mjx-c.mjx-c2061::before {
padding: 0 0 0 0;
content: "";
}
的電阻,電路其餘部分的行為將保持不變。

一些串聯的電阻

如果有一些電阻並聯,這「等效於」在電路中只有一個電阻,其電導(電阻的倒數,)等於它們電導的總和。

一些並聯的電阻

這個問題要求我們做類似的事情:找出一個單一電阻值,使得我們整個無限電路就像是在兩個標記節點之間只有一個具有該電阻值的電阻。不幸的是,串聯和並聯電阻規則對我們完全沒用;問題中沒有任何電阻是串聯或並聯的!所以我們的第一個挑戰是跨越十年級物理的範疇,進入十二年級物理的領域。

電路定律

你可能遇到過歐姆定律(Ohm’s law),它將電路中兩點之間的電流與它們的電位差(電壓)以及它們之間的電阻聯繫起來:

這裡 表示從 到 的電流, 是點 處的電位(我不想用 因為我們稍後會用到它,抱歉),而 是 與 之間邊緣的電阻。這個定律已經是一個很好的開始,因為如果我們能設定某種情況讓電流在電路中流動,且我們知道兩個標記節點之間的電流和電位差,那麼我們就可以直接計算出等效於整個電路的單一電阻:我們只需將電位差除以電流即可。

然而,僅憑這條定律,我們的電路中仍有許多可能的電流流向。例如,如果我們將一伏特電池的引線連接到這兩個節點,電位可能看起來像這樣:

其中綠色區域的所有點電位均為 1V,粉紅色區域的所有點電位均為 0V,且唯一的電流存在於青色箭頭上——標記節點完全沒有電流流入或流出。這個圖示滿足歐姆定律;區域內沒有電位差,所以沒有電流,而跨越邊界的電流與電壓除以電阻的結果相符。但這張圖在物理上沒有意義。我們知道,如果沒有實際從電池中抽取電力,電子不可能無止盡地從邊界右側的節點被取走並交給左側的節點。問題在於這違反了克希荷夫電流定律(Kirchoff’s current law*),該定律指出流向和流出任何特定點的淨電流為零;也就是說,流出電流和流入電流的量是相同的。

如果存在從 到 的電流,那等同於從 到 的負電流,所以這表示:所有遠離 的電流(即流向每個節點 )之和減去所有朝向 的電流(來自每個節點 )之和等於零。有了這兩個方程式,我們就擁有了所需的所有碎片。如果我們接上電池,就只有一種分配電流和電壓的方法能同時滿足這兩個方程式。

我們有兩種不同的方法可以求解等效電阻。我們可以將特定電壓的電池連接到兩個節點,找出電流,然後使用歐姆定律計算電阻:

*或者,我們可以強迫電流通過這兩個節點,在一個節點加入電荷並從另一個節點取出電荷,然後找出由此產生的電壓:

兩種方法都行得通,但我這裡會採用後者。除了慣例之外沒有強烈的理由;這會讓後面的內容稍微簡單一點,但如果你喜歡,也可以用另一種方式。因此我們的計劃是:將一個單位的電流強行注入其中一個紅色節點,並從另一個節點取出一個單位的電流。將會有一種為每個節點分配電位的方法,使得流入和流出每個節點的淨電流為零。找到一種有效的方法來做到這一點,讀取電位差,使用歐姆定律(因為我們知道電流;就是我們強加的那個值),最後得到等效電阻。

所以我們需要想出一種分配電位的有效方法。

方程式組

首先,讓我們為網格上的每個點分配一個座標:

從現在起,我們不再說「標記的節點」,而是討論節點 和 。

現在,根據克希荷夫電流定律,我們知道有效的電流分配必須滿足一組無限的方程式,如下所示(針對每一組座標 ):

我們可以使用歐姆定律展開這些項:

既然每個電阻都是 1,這就是……

展開這四項,我們得到:

除了兩個節點 (右側為 ,因為我們強行將一個單位的電流注入節點 )和 (右側為 ,因為我們強行從節點 取出一個單位的電流)之外。

(請注意,這個方程式組將有無限多個解——如果我們有一個解,並為每個節點增加相同的電位量,每個方程式仍將成立。然而,如果我們挑選兩個節點,無論我們找到哪一個解,它們的電位差都會是相同的。這在物理上是有道理的;我們可以將任何任意數值指定為每個節點的電位,但電壓,即節點之間的差異,才是決定電流的因素。)

這個方程式組出現在圖論中,有一種標準的解決方法,我會簡要介紹一下。首先,我們建立一個矩陣 。 的每一行和每一列都對應於圖的一個節點,如果圖中節點 和 之間有一條邊,我們就設定 。然後,對於每個節點 ,我們設定 等於從節點 發出的邊數(在這種情況下,始終為 )。接下來我們嘗試求解方程式:

( 和 不一定要相鄰或位於向量末尾,只需位於相關節點所在的位置即可)。這裡的想法是 是我們的電位向量—— 是節點 處的電位——透過將向量乘以矩陣的相關行並將其設定為右側的元素,我們強迫每個方程式都得到滿足。這個矩陣 被稱為拉普拉斯矩陣(Laplacian*),它在各種事物中都很有用。

我們面臨的問題是我們的網格是無限的!如果我們願意,可以想像一個無限大的矩陣,但這對我們沒有幫助,因為我們用來求解矩陣方程式的任何方法都行不通。我們可以嘗試將答案視為越來越大的矩陣的極限,但那樣我們會得到所有這些尷尬的邊界點,這會使計算電位向量變得困難得多。所以那行不通。然而,數學中還有另一個領域經常涉及求解無限線性方程式組……

隨機漫步

讓我們來談談二維網格上的簡單隨機漫步。我們從點 開始。每一步,我們向上一單位、向下一單位、向右一單位或向左一單位移動,機率均等——所以我們在任何特定方向移動的機會都是 。我們在特定秒鐘移動的方向與我們之前的移動方向完全獨立(這種獨立性使隨機漫步成為馬可夫過程;馬可夫過程的定義特徵是未來發生的事情僅取決於你當前所處的狀態)。這是一個長度為七步的漫步範例:

*現在想像我們有一個函數 ,它根據我們目前在網格位置 的情況,輸出關於我們預期未來會發生什麼事的結果。只要我們不參考任何過去的移動,這樣的函數將是定義良好的(也就是說,對於其參數的每一種分配,它將恰好取得一個值)——歷史除了透過我們目前所在的節點外,不會改變我們未來的行為。許多這樣的函數對於幾乎所有的點都會滿足一個看起來像這樣的方程式:

例如,考慮函數 ,它等於給定我們目前在該節點的情況下,我們擊中節點 所需的預期步數。,因為我們已經在那裡了。對於所有其他節點,擊中 的預期步數將是 1 加上我們邁出一步後的預期步數。由於有四個方向,且我們邁向每個方向的機會都是 ,而 是如果我們落在節點 上的預期步數,

這種方程式看起來非常像我們為了解出電位而需要解的方程式!我們上面的方程式組如果重新排列,就是:

對於 ,以及:

所以,如果我們能弄清楚在隨機漫步的背景下那個函數是什麼,並弄清楚它代表什麼,我們就可以透過解決那個問題來解決原始問題。

請注意,我們的範例函數 在每一步都會增加 1,而我們這裡的函數在節點 上增加四分之一,在節點 上減少四分之一。表述 行為的另一種方式是它是我們訪問任何節點的次數*;我們可以將其擴展為僅討論對「某些」節點的訪問。具體來說:如果我們每次訪問 時都加 ,每次訪問 時都減 ,那麼我們得到的正是上面的公式。

電位函數

假設我們從節點 開始,走了 步。我們將 定義為在走完 步後,我們位於節點 的機率。例如 ,因為如果我們走零步,我們就不會從開始的節點移動;而 ,因為從 出發走一步,我們有 的機會移動到每個相鄰節點。那麼,根據這個函數 ,我們想要的函數大約是:

我們經過 步,從節點 開始,在每一步中,我們加上我們在點 的機率,並減去我們在點 的機率。由於期望值是線性的,這就是 步後我們在 上的預期次數減去在 上的預期次數。

只有一個問題。在我們的範例 中,我們可能需要走任意多步才能到達 ;我們把所有的可能性都加了起來,包括那些我們在遙遠未來才到達 的可能性。所以為了得到我們想要的正確的 ,我們需要取考慮的步數趨於無窮大時的極限:^([1])

現在,由於情況是對稱的,從 開始訪問 的預期次數與從 開始訪問 的預期次數相同,而從 開始訪問 的預期次數與從 開始訪問 的預期次數相同。也就是說,

既然如此,如果我們想找出原始問題中標記節點之間的電位差,我們只需要計算 ;我們可以將其加倍來得到差值。

所以現在我們已經將電學問題簡化為一個純粹的機率問題:如果我們從 開始進行無限步的簡單隨機漫步,平均而言,我們訪問 的次數會比訪問 多多少次?如果我們能解決這個問題,我們就能直接確定電阻無限網格上 和 之間的有效電阻!我覺得這類事情真的很酷;我們原本有一個完全沒有隨機性的純粹對象,不知何故,如果我們能回答一個關於相關隨機過程行為的問題,我們就能回答關於原始對象的問題。

(如果你記得我們可以接上電池或電流源,你可能會想,如果我們接上的是電池,我們會怎麼做。那時我們必須回答的問題是「在重新訪問 之前,我們第一次訪問 的機率是多少」?這個問題的答案將等於我們在電流源情況下回答的問題的倒數,因為一伏特感應出的安培數是一安培感應出的伏特數的倒數。順便說一句,如果你從隨機漫步開始,這是一個非常酷的證明,證明這些量互為倒數——將隨機漫步轉換為電路,你就可以證明兩者必須互為倒數,因為有歐姆定律!能夠說「在隨機漫步中,在重新訪問起點之前訪問某點的機率,是你在無限漫步中訪問該點額外次數的倒數,因為歐姆定律」,這簡直太瘋狂了。)

傅立葉分析^([2])

(這是最後一部分非數學家也會跟丟的地方。如果你不知道發生了什麼,直接跳到最後即可。)

首先,讓我們稍微簡化一下符號。我們只關心 ,它是:

我們實際上不需要 的第一個參數,因為它總是 。讓我們簡化一下並把它刪掉;我們就說 是從 開始的隨機漫步在 步後位於節點 的機率。

現在我們必須解決這個問題:

不幸的是,這似乎相當困難。事實上,我們的情況看起來比以前更糟;以前我們只需要處理一個無窮大(節點數量),現在我們有兩個(節點數量和步數)。如果我們能擺脫其中一些無窮大,那就太好了。有一種顯而易見(?)的方法可以解決其中一個無窮大:如果我們能以某種方式將其轉化為幾何級數,我們就可以使用恆等式 。這並不像聽起來那麼瘋狂。表達馬可夫過程的一種自然方式是使用它們的「轉移矩陣 」,其中 是如果你目前處於狀態 ,下一步進入狀態 的機率。那麼,給定你從狀態 開始,在第 步處於狀態 的機率就是 ,其中 是除了位置 為 外其餘皆為 的向量。所以也許我們可以將我們的函數表述為類似 的東西?不幸的是,我們不能對矩陣使用幾何級數恆等式,而且無論如何,處理無限大的矩陣正是我們做這麼多工作想要避免的!但這在某種程度上表明這可能是一個富有成效的方向,事實證明^([3])我們可以使用傅立葉級數將 表示為看起來像 的東西。如果我們將函數 的「特徵函數**」定義為:

(也就是說,只是 的標準傅立葉級數),那麼我們得到我們的指數運算完全按照我們喜歡的方式運作:

要看到這一點,請注意 ^( )正是期望值 ,其中 和 是代表 步後當前位置的隨機變數。那麼,如果 是代表第 步 座標變化的隨機變數,而 同樣代表 座標,則:

基本上,每一步都是從同一組可能性中以相同的機率抽取的,所以唯一重要的是第一步看起來像什麼。這是隨機漫步的基本屬性,使其區別於其他馬可夫過程;無論你從哪裡開始,隨機漫步都必須是相同的。總之,現在我們有了想要的便利指數運算。更方便的是,這也擺脫了無限節點的問題!由於無論我們在網格的哪個位置,所有的轉移機率都是相同的,我們只需要加總起點節點旁邊的部分:我們一次解決了兩個無窮大。最後,我們得到:^([4])

只剩下一個問題:我們有一個用 表述的問題,而不是用 。我們如何從前者轉到後者?嗯,事實證明:

……聽著。我也不知道為什麼這行得通。你只能憑信念接受這一點。或者閱讀 維基百科關於傅立葉級數的文章。總之,如果我們接受這一點,我們現在就擁有了所需的所有碎片——剩下的就是解一些積分了。

(其中未標記的 符號是在 正方形上的積分)。現在我們可以展開 :

然後把整個東西丟進 Wolfram Alpha(我拒絕手算積分):

所以,既然 和 之間的電位差是該值的兩倍(伏特),且電流是一安培,等效電阻就是 ^( )歐姆。我們完成了!

回顧

所以我們的解決方案如下:

  • 我們想要求解電路中兩點之間的等效電阻;
  • 為此,我們必須弄清楚當我們施加電流時會感應出多少電壓;
  • 為此,我們必須求解一個無限線性方程式組;
  • 我們可以將同一個線性方程式組視為代表其他事物,特別是隨機漫步;
  • 因此,我們可以使用分析隨機漫步的工具來求解我們的方程式組;^([5])
  • 因此,我們可以透過回答「在隨機漫步中,相對於我們正在計算電阻的點,我們預期會額外訪問起點多少次」來求解我們的方程式組;
  • ……然後將該解決方案轉化回我們原始問題的解決方案。

現在你已經對在卡車前發呆免疫了。:)

  • ^(^)這個極限確實存在,但我不會證明它,因為那會花很長時間。Serguei Popov 的《二維隨機漫步》(Two-Dimensional Random Walk)一書在第 46 頁包含了一個很好的耦合論證,如果你想查看的話。

  • ^(^)最後一節的大部分內容改編自 Frank Spitzer 的《隨機漫步原理》(Principles of the Random Walk)。此外,對於各個部分(例如電池/電流源的連接),我參考了 Doyle 和 Snell 的《隨機漫步與電網絡》(Random Walks and Electrical Networks),以及上面腳註提到的 Serguei Popov 的書。如果你想更全面地了解這個主題,我建議瀏覽這些書的相關章節。

  • ^(^)我一直很討厭數學中有人說「事實證明」,因為我想知道你是如何想出來的,而不僅僅是答案是什麼!但既然我基本上不懂分析,我完全不知道你是如何想出這個的。所以我無法告訴你,只能用「事實證明」了。

  • ^(^)我在這裡作弊了,假裝你可以直接將其視為幾何級數而不需要任何理由。如果我們要嚴謹一點,我們應該證明部分和 在 時收斂,而且這實際上是可積的;我們將跳過所有這些,因為它很複雜。這一切都行得通,相信我。

  • ^(^)不幸的是,我們最終沒有使用任何實際的機率論,那本來會很不錯。也許我會寫一篇關於機率方法的文章……

討論

Lesswrong

相關文章

  1. 表徵的上下文學習可由歸納電路解釋

    大約 2 個月前

  2. 透過克里普克框架輕鬆實現 Payorian 合作

    大約 2 個月前

  3. 為什麼你很可能無法透過數據驅動來實現自我提升

    大約 2 個月前

  4. 你可能無法透過數據驅動的習慣堆疊來實現自我提升

    大約 2 個月前

  5. 大語言模型作為淺層電路的巨型查找表

    大約 1 個月前

其他收藏 · 0