Som någon med bakgrund inom datavetenskap blev jag väldigt förvirrad första gången jag mötte matematikfolk som insisterade på att en tensor inte var en matris. För de är båda tydligt flerdimensionella arrayer. Men sedan insåg jag... Matematiker använder alltid starkt typade språk i sina huvuden!
För en datavetare är struktur som funktioner, gränssnitt och begränsningar både tydligt separerade och ombytbara. En tensor är en matris som du behandlar som en tensor. Du kan blanda dem, en klass är en bunt av alla fyra, men det är inte ett krav.
När de säger att vektorer inte är listor med siffror, beror det på att de har tränat sig själva till att vara typkontrollörer för ivrigt utvärderande starkt typade logikspråk. Matematiker kör något som i princip är en magilärd typkontroll i sina huvuden.
CS-personer kör oftast Lisp och/eller C mentalt, beroende på om vi vill att de ska vara tolken eller datorn. Om vi kör en starkt typad mental simulator, läggs den ovanpå. Även Haskell separerar typdeklarationer från implementering.
Men matematik görs bara med typsignaturer! De gör allt med starkt typade makron! Det är som gränsfallet för Hindley–Milner-typer, om man gjorde spekulativ expansion för att hitta bättre kompressioner. Vilket gör att matematiker kan optimera kompilering av program, abstrakt.
Nu när jag gör mer riktig matematik ser jag kraften i detta tillvägagångssätt. Men jag tycker att styrkan i datavetenskapsmetoden är underskattad av matematiker. För CS:s visdom är att en tensor är en matris, men en matris är inte en tensor. Variabler är vad du kan kasta dem på.
Matematiker känner till gips, men de kallar dem roliga namn som "morfismer". Och de kommer att erkänna, under tvång, att om du har rätt kast kan du använda en vektor som rotation av motsvarande dimension.
Men de kommer att säga, du använder inte vektorn som en rotation, du har härlett en bivektor under bla bla bla. Detta stämmer om du är en prolog super HM-typkontrollare. Det gäller inte om du är kompilator, interpeter eller dator.
Hur som helst bråkar jag fortfarande med mattefolk om det eftersom det är så löjligt att förneka att ank-typning fungerar, men de har rätt i att det fortfarande kräver typ-unifikation.
@St_Rev Och nej, en tensor är en subtyp av en matris, inte tvärtom. Matrisen är det mer generella objektet, tensorer måste följa fler begränsningar.
@SokobanHero Eftersom en multilinjär avbildning alltid kan realiseras som en matris (okej, tekniskt sett en hypermatris, eftersom folk tydligen bara använder matris för att betyda rank-2 n-dim-array) och vice versa i ett visst utrymme, tycker jag det är lika rimligt att gå åt båda hållen.
1,26K