作為一名擁有計算機科學背景的人,第一次遇到數學人員堅持張量不是矩陣時,我感到非常困惑。因為它們明顯都是多維數組。但後來我意識到……數學家在腦中總是使用強類型語言!
對於計算機科學家來說,結構、函數、介面和約束都是明確分開且可互換的。張量是一個你將其視為張量的矩陣。你可以將它們混合,類別是一個包含所有四者的包,但這不是必需的。
當他們告訴你向量不是數字的列表時,這是因為他們已經訓練自己成為急切評估強類型邏輯語言的類型檢查器。數學家在他們的腦海中運行著一種基本上是魔法的學習類型檢查器。
CS 人員大多在心中運行 lisp 和/或 C,這取決於我們想要成為解釋器還是計算機。如果我們確實運行一個強類型的心智模擬器,它是建立在上面的。即使是 Haskell 也將類型聲明與實現分開。
但是數學僅僅是用類型簽名來完成的!他們用強類型宏來做所有事情!這就像是 Hindley–Milner 類型的極限情況,如果進行推測性擴展以尋找更好的壓縮。這讓數學家能夠抽象地對程序進行優化編譯。
現在我在做更多的實際數學時,我看到了這種方法的力量。但我認為數學界對計算機科學方法的力量並不夠重視。因為計算機科學的智慧在於,張量是一個矩陣,但矩陣並不是一個張量。變數是你可以將其轉換為的任何東西。
數學家知道類型轉換,但他們稱之為有趣的名字,如「態射」。他們會在壓力下承認,如果你有適當的類型轉換,你可以將向量用作相應維度的旋轉。
但他們會說,你並沒有將向量用作旋轉,你是在 blah blah blah 下推導出一個雙向量。這是對的,如果你是一個 prolog 超級 HM 類型檢查器。如果你是一個編譯器、一個解釋器或一台電腦,那就不對了。
無論如何,我仍然會和數學人員為此爭論,因為否認 duck-typing 有效實在太荒謬了,但他們是對的,這仍然需要類型統一。
@St_Rev 不,張量是矩陣的子類,而不是反過來。矩陣是更一般的對象,張量必須遵循更多的約束。
@SokobanHero 所以,由於多線性映射總是可以實現為矩陣(好吧,技術上是超矩陣,因為人們顯然只用矩陣來指代秩為2的n維數組),在某些空間中,反之亦然,我認為朝任一方向發展都是合理的。
27.26K