圖解虛數 - A Visual, Intuitive Gudie to Imaginary Numbers
虛數總是讓我困擾,就像在指數 e 的理解上,大多數解釋都可以劃分為這兩類之中的一種:
它是一個數學的抽象,解決了一些等式。去好好地處理好它吧~
相信我們,它用於高階物理。等到大學你就可以學到了。
哈,這真是一個鼓勵孩子去學習數學的一個“極佳”方式!今天,我們用一些我們最愛的工具來解決這個問題:
把焦點放在「關係」上,而不是數學公式;
將複數視為對現有數字系統的一次升級,就像曾經的 0,小數以及負數升級了當時的數字系統那樣;
通過視覺圖表而不是文字來理解概念。
以及我們的祕密武器:通過類比。我們將會通過觀察它的來源、負數來了解虛數。下面便是你的指南:
*sqrt(n) 指求 n 的平方根
現在你可能還看不懂上面的指南,但是先放在這兒。最終我們會搞定虛數 i,然後將它存放在你深深的腦海裡~
真正地瞭解負數
負數並不簡單。想像你是一位 18 世紀的歐洲數學家,你能寫出 4-3=1,這很簡單。
但是,如果是3-4呢?什麼?這到底意味著什麼呢?怎麼能從 3 頭奶牛中牽走 4 頭呢?怎麼可能比什麼都沒有還少呢?
負數曾被看作是荒謬的東西,是一種“使得等式的整個學說都變得灰暗”的東西(Francis Maseres, 1759)。然而在今天,把負數看成是沒有邏輯或者沒有用才是荒謬的。去問問你的老師,問他們負數是否改變了數學的整個根基。
這是發生了什麼呢?是我們發明了一種非常有用的理論數字。我們不能觸控或者拿到負數,但是在描述某些關係時用負數非常方便(比如債務)。它是一個非常有用的設想。
相比於“我欠你 30”這種需要通過閱讀詞語來判斷是負債與否,我可以寫“-30”,這意味著我在負債。如果我掙到錢了,還清了債務(-30+1000=70),我可以輕易地就記錄下這筆交易。我有 +70 的富餘,這意味著我的債務還清了。
正數和負數的符號自動地追隨了交易的流動方向——你不再需要一個句子去描述每一筆交易對債務帶來的變化。數學變得更加簡單、更加優雅。負數可不可感知、是不是真實存在不再重要——因為它們擁有有用的屬性,我們使用了它直到它成為了日常生活的每一個部分。在今天,如果有人“無法接受”負數,你可以說他們真的是駭人聽聞。
但是還是不要對這種艱難的轉變沾沾自喜:負數曾經是一個非常巨大的思想轉變。即使如尤拉,這位發現了指數 e 等更多發現的天才,也無法像我們今天這樣去理解負數。當時負數被當作是“無意義的”結果(後來他彌補了這一點,令人敬佩)。
這也證明了我們的思想潛能,即今天的孩子們期望去理解那些曾經困惑了古代數學家的問題。
進入虛數
虛數有一個簡單的故事。我們可以整天去解決這樣的等式:
它的答案是 3 和 -3。但是如果有一個聰明的人給它新增了一個小小的符號:
阿歐~這個問題讓大多數人在看到它第一眼的時候就感覺到了尷尬。你想要對一個小於 0 的數字求平方根?荒謬!(歷史上這個確實是要解決的問題,但我喜歡把它設想成一個聰明的人提出來的)
這個問題看起來好像很愚蠢,就好像負數、0、無理數(不迴圈的數)剛開始被提出來時一定也會被認為如此愚蠢。這個問題沒有“實際”的意義,對嗎?
錯!所謂的“虛構的數字”與其他數字一樣正常:它們都是描述這個世界的工具。就像假設 -1
, .3
及 0
“存在”一樣,讓我們假設有一個數字 i 存在:
就像這樣,你把 i 乘以 i 可以得到 -1。那現在發生了什麼?
當然,首先我們會感到頭痛...但是“假設 i 存在”的遊戲事實上讓數學變得更加簡單和優雅。一種我們可以更加方便地描述的新的關係就此浮現。
你也許不相信 i,就像那些固執的老數學家們一樣不相信 -1 的存在。新的、繞腦的概念都很難,不能立刻理解,即使像尤拉這樣的天才都不行。但是負數告訴我們,陌生的概念依然可以很有用。
我不喜歡“虛數”這個詞語——它被看作是一種侮辱,傷害了 i 的感情。數字 i 就跟其他一樣數字一樣正常,但是“虛數”這個名字是擺脫不了了,我們還將會用它。
圖解負數和複數
正如上次我們看到的那樣,等式 x^2=9 意味著:
或者:
x 是什麼轉換數,累乘兩次,就能把 1 變成 9?
答案有兩個:“x = 3”和 “x = -3”:也就是說,通過將其擴大 3 倍後再擴大 3 倍來實現。
現在讓我們考慮 x^2=-1,也就是
x 是什麼轉換數,累乘兩次,就能把 1 變成 -1?
我們不能乘以一個正數乘兩次,因為結果還是正數;
我們不能乘以一個負數乘兩次,因為結果在第二次乘之後會跳回至正數。
然而如果是...旋轉呢!這聽起來很瘋狂,但是如果我們想像把 x “旋轉 90 度”,乘以兩次 x 的話,即為旋轉 180 度,1 就會變成 -1。
呀!如果我們在想想,會發現將其在其他方向(順時針)旋轉兩次也能將 1 轉換為 -1。這是一個“負”旋轉或者說乘以 -i:
如果我們乘以 -i 兩次,第一次乘法會將 1 轉換成 -i,第二次將 -i 轉換成 -1。所以這裡實際上有兩個 -1 的平方根:i 和 -i。
這非常酷!我們有了某種形式的答案,但是它們意味著什麼呢?
i 是一個“新設想出來的維度”用來衡量數字;
i (or -i) 是數字在旋轉中“形成的”;
乘以 i 就是逆時針旋轉 90 度;
乘以 -i 就是順時針旋轉 90 度;
兩種旋轉在各自的方向上都是 -1:它把我們帶回了正數與負數所在的“常規”維度。
數字成二維了。這是思維的擴充,就像小數或者長除法對一個古羅馬人是思維擴充一樣。(你認為 1 和 2 之間的數字有什麼意義?)。這是一個新奇的看待數學的方式。
我們問“我們如何用兩步實現 1 轉換成 -1?”然後發現了答案:將其旋轉 90 度。這是一個新奇的看待數學的方式。但非常有用。(順帶提一下,直到 i 被發現後的數十年才有了這個關於複數的幾何解釋)。
同時也要記住逆時針旋轉變成正數是一個人類的發明——有可能還存在其它更為簡單的方式。
找到模式
讓我們深入到一點小細節中。當乘以一個負數時(就像 -1),你會得到一個模式:
1, -1, 1, -1, 1, -1, 1, -1
-1 並沒有改變數字的大小,只改變了符號,來來回回。而對於一些數字"x",你可以得到:
x, -x, x, -x, x, -x...
這個概念非常有用。數字"x"可以代表一個愉快或者糟糕的一週。假設每週被分為愉快的和糟糕的,現在是愉快的一週,那麼在 47 周的時候是愉快的一週還是糟糕的一週呢?
所以 -x 意味著是糟糕的一週。注意負數是如何“保持與符號的聯絡”的——我們可以把 (-1)^47 放到計算器裡面而不用去算(“第一週愉快,第二週糟糕,第三週愉快...)。這種可以來來回回的東西可以很好地應用負數這個模型。
那好,現在如果我們持續乘以 i 會怎麼樣?
這非常有趣。讓我們簡化一點:
1 = 1(這裡無需簡化)
i = i (這裡無需簡化)
i ^ 2 = -1 (這就是 i 的全部)
i ^ 3 = (i · i) · i = -1 · i = -i (3 次逆時針旋轉等於 1 次順時針旋轉,非常好)
i ^ 4 = (i · ) · (i · i) = -1 · -1 = 1 (4 次旋轉帶來了一個“整圓”)
i ^ 5 = i ^ 4 · i = 1 · i = i (這裡開始重複...)
從視覺上來看:
每次迴圈,我們旋轉 4 次。這就有意義了,對不對?任何一個小孩子都能告訴你旋轉 4 次相當於沒動。現在讓我們將精力放在虛數(i, i^2)上,觀察這個一般的模式:
X, Y, -X, -Y, X, Y, -X, -Y...
就像負數模型那樣來回翻轉,虛數可以作為 "X" 和 "Y" 這兩個維度之間的任何東西的旋轉模型,或者是,任何只要有迴圈、環狀關係的東西——有什麼想法了嗎?
Cos it’d be a sin if you didn’t. There’ll de Moivre be more in future articles.
[譯者注:作者在這裡使用了雙關,翻譯成中文就失去了意義,此句不包含關鍵資訊]
理解複數
這裡還有一個細節要說:一個數字能既可以有“實部”又有“虛部”嗎?
當然有。誰說旋轉必須要旋轉整個 90 度?如果我們在“實部”的維度和“虛部”的維度上各走一步,看來就是這樣:
現在我們處於 45 度,在真實的部分和虛構的部分擁有相等的部分(1+i)。這就好像一個熱狗同時有芥末醬和番茄醬——誰說你必須要選擇了?
事實上,我們可以選擇任意的實部和虛部的數字來組成一個三角形。這個角度就成為了“旋轉的角度”。複數是一個有趣的名字,就是說一個數字有實部和虛部兩個部分。它們被寫作 a + bi,其中:
a 是實部
b 是虛部
這樣還不錯。但是有一個最後的問題:這個複數有多大呢?我們不能分開地計算實部和虛部的大小,這樣就沒有意義了。
讓我們退回一點。一個負數的大小你也不能數出來——它是距離 0 的長度,在負數中:
這是另一種求絕對值的方式。但對於複數來說,當兩個部分成 90 度時我們該如何去測量它的大小呢?
它是一隻鳥,是一架飛機,它是畢達哥拉斯!
他的定理[譯者注:勾股定理]出現在任何地方,甚至在他之後的 2000 年才發明了數字。我們製造了一種三角形,它的斜邊就是距離 0 的長度:
非常棒!儘管測量它的大小不像“丟棄掉負數的符號”那麼簡單,複數依然有它們的用處。讓我們看一下它的一個例項。
一個例項:旋轉
我們不必等到大學物理才去使用虛數,讓我們今天就來使用它。關於複數的乘法有很多可說的,但把這個記在腦海裡:
通過乘以一個複數來旋轉它的角度
下面讓我們一探究竟。假設我有一條船,向東 3 個單位,向北 4 個單位的方向航行。我想將我的航行方向逆時針偏轉 45 度,那麼我的新方向是多少?
一些高手會說“這很簡單!使用 sine,cosine...blabla...使用 tangent... blabla.. 以及...”。崩潰。抱歉,我打斷了你的計算了嗎?可以再重新關注一下那個問題嗎?
讓我們用一個簡單的方法:我們現在航行在 3 + 4i(不用管什麼角度,不需要關心),然後我們想偏轉 45 度。那好,45 度是 1 + i(完美的對角線),這樣我就可以乘以這個數量!
這裡是思路:
初始的航行方向:向東 3 個單位,向北 4 個單位 = 3 + 4i;
逆時針旋轉 45 度 = 乘以 1 + i;
如果我們將它們相乘,可以得到:
所以新的航行方向是向西 1 個單位(即向東 -1 個單位),向北 7 個單位,這樣你就能畫出來,並按照這個方向航行。
呀!我們在沒有使用 sine 或 cosine 的情況下找到這個結果只花費了 10 秒鐘。也沒有用到向量、矩陣或者追蹤我們所在的象限。它僅僅是一個使用了代數乘法的算術。旋轉規則已經深深地嵌入了虛數中:這種規則是有效的。
更好的是,這個結果是有用的。我們航行在(-1, 7)而不是一個角度(arctan(7/-1)=98.13,記住我們在第二象限)。你計劃畫出或者跟隨這個角度?在四周都用上量角器?
不行。你要把它轉換為 cosine 和 sine (-.14 和 .99),找到一個合理的比率(大約在 1 到 7 之間),然後描繪出這個三角形。而複數可以迅速、準確,且在沒有計算器的情況下做這件事情。
如果你像我一樣,你會發現這運用了思維擴充。如果你沒有...額...恐怕數學並不適合你。對不起...
三角學很偉大,但是複數可以讓醜陋的計算變得簡單(比如計算 cosine(a+b))。這篇文章僅僅是個預覽,後續的文章會給你全餐。
另外:一些人認為“Hey,用北/東指明航行方向來替代角度指明航行方向沒有多大用處!”
不是吧?好吧。你看看你的右手。小手的中間到食指的尖端的角度是多少?自己算吧,祝你好運。
而用北/東航行法,你至少可以說:“橫向距離 X 英寸,縱向距離 Y 英寸”,這樣還有一些機會算出它的方向。
複數不“正常”
上面快速地過了一下我在複數上的基本觀點。看看文章開頭的第一個表格——現在應該能看懂了。
還有非常多美妙、好玩的數字,但是我的大腦已經很疲憊了。我的目的很簡單:
讓你相信複數雖然被視為“瘋狂”,但是很有用(就像曾經的負數那樣);
展示了複數可以使某些問題變得簡單,比如旋轉。
如果我看起來對這個話題非常熱心和關注,這裡有個原因:我對虛數念念不忘很多年——對它缺少一種直觀的見解,這讓我很沮喪。
現在我終於有了這樣的見解,我迫不及待地去分享它們。但如果你只是在一個狂熱的人的部落格上閱讀了這篇文章,而不是在教室裡,這會讓我感到沮喪。我們束縛自己的疑問,緩緩前行——是因為我們沒有去尋找、分享一些簡潔、直觀的見解。
但點亮一支蠟燭好過詛咒黑暗:這是我的想法,而且你們的其中之一也將會發出光亮。想想看,正是我們“解決”了像數字這樣的問題才讓我們能一直停留在羅馬數字的大陸上。
後記:但是他們仍然很陌生!
我知道,複數對我來說,也依然很陌生。我試著把自己放到第一個發現 0 的人思維中。
0 是如此怪異的觀點,有“0 個東西”卻代表“沒有東西”,羅馬人避開了這個數字。複數也極其相似——它是一種新的思維方式。但是 0 和複數都讓數學變得更加簡單。如果我們從不採納陌生的、新的數字系統,我們就只能靠手指數數了。
我重複了這個類比,是因為這樣可以很輕易地去開始認為複數不“正常”。讓我們開啟思維:在未來,他們會為複數曾被不相信而輕聲地笑:儘管都已經 21 世紀了。
∑編輯 | Gemini
來源 | cnblogs
翻譯/文之
演算法數學之美微信公眾號歡迎賜稿
稿件涉及數學、物理、演算法、計算機、程式設計等相關領域,經採用我們將奉上稿酬。
投稿郵箱:math_alg@163.com
相關文章
- React數字滾動元件 numbers-scrollReact元件
- [題解]CF55D Beautiful Numbers
- 【數位dp】Beautiful numbers CodeForces - 55D
- 圖撲虛擬現實解決方案,實現 VR 數智機房VR
- Visual SLAM 筆記——李群和李代數詳解SLAM筆記李群李代數
- Intuitive Scrolling Interfaces with CSS Scroll Snap PointsUICSS
- 400多種Numbers模板 DesiGN for Numbers Templates for macMac
- [題解]SP10606 Balanced Numbers
- CF878E Numbers on the blackboard 題解
- POJ1142 Smith Numbers(數論,分治+暴力,質因數分解)MIT
- LeetCode2: Add two numbers(兩數相加)LeetCode
- [LeetCode] Add Two Numbers 兩個數字相加LeetCode
- 簡述Python虛擬環境(圖解)Python圖解
- Codeforces - Jzzhu and Numbers
- different random numbers generatorrandom
- Collecting Numbers II
- Fifth. LeetCode 2:Add Two Numbers 兩數之和LeetCode
- POJ 1995-Raising Modulo Numbers-整數快速冪AI
- LeetCode 解題報告 - 2. Add Two NumbersLeetCode
- 圖解中國的數字化轉型——資訊圖圖解
- Leetcode - Bitwise AND of Numbers RangeLeetCode
- LeetCode-Lexicographical NumbersLeetCode
- Find All Numbers Disappeared in an ArrayAPP
- Visual Studio 使用GIT詳解Git
- Visual C++中的圖形特技 (轉)C++
- 企業數字人虛擬形象定製解決方案
- Codeforces 914C Travelling Salesman and Special Numbers:數位dp
- visual C++數字影像處理類C++
- Visual Studio 選擇相同變數高亮變數
- 圖解兩數之和:雙指標法圖解指標
- 圖解兩數之和:雜湊表法圖解
- 虛解構函式(√)、純虛解構函式(√)、虛建構函式(X)函式
- LeetCode-Bitwise AND of Numbers RangeLeetCode
- 201-Bitwise AND of Numbers Range
- Leetcode Sum Root to Leaf NumbersLeetCode
- Leetcode Add Two NumbersLeetCode
- Quick Reference to Patch Numbers for Database PSUUIDatabase
- leetcode 兩數相加(add two numbers) Python程式設計實現LeetCodePython程式設計