Als iemand met een achtergrond in computerwetenschappen was ik erg in de war de eerste keer dat ik wiskundigen hoorde volhouden dat een tensor geen matrix was. Omdat ze beide duidelijk multidimensionale arrays zijn. Maar toen realiseerde ik me... wiskundigen gebruiken altijd sterk getypeerde talen in hun hoofd!
Voor een computerwetenschapper zijn structuur, functies, interface en beperkingen zowel duidelijk gescheiden als onderling uitwisselbaar. Een tensor is een matrix die je behandelt als een tensor. Je kunt ze mixen, een klasse is een bundel van alle vier, maar dat is niet verplicht.
Wanneer ze je vertellen dat vectoren geen lijsten van getallen zijn, komt dat omdat ze zichzelf hebben getraind om type-controleurs te zijn voor gretig-evaluerende sterk-getypeerde logica talen. Wiskundigen draaien iets dat in wezen een magische geleerde type-controleur in hun hoofd is.
CS-mensen draaien meestal lisp en/of C mentaal, afhankelijk van of we de interpreter of de computer willen zijn. Als we een sterk getypeerde mentale simulator draaien, is deze bovenop gelegd. Zelfs Haskell scheidt typeverklaringen van implementatie.
Maar wiskunde wordt alleen gedaan met typehandtekeningen! Ze doen alles met sterk getypeerde macro's! Het is als de grensgeval van Hindley–Milner types, als je speculatieve expansie zou doen om betere compressies te vinden. Wat wiskundigen in staat stelt om geoptimaliseerde compilatie van programma's abstract te doen.
Nu ik meer echte wiskunde doe, zie ik de kracht van deze benadering. Maar ik denk dat de kracht van de CS-benadering ondergewaardeerd wordt door wiskundigen. Want de wijsheid van CS is dat een tensor een matrix is, maar een matrix geen tensor is. Variabelen zijn wat je ze ook maar kunt casten.
Wiskundigen weten van casts, maar ze noemen ze grappige namen zoals "morfismen". En ze zullen, onder druk, toegeven dat als je de juiste cast hebt, je een vector kunt gebruiken als een rotatie van de bijbehorende dimensie.
Maar ze zullen zeggen, je gebruikt de vector niet als een rotatie, je hebt een bivector afgeleid onder bla bla bla. Dit is waar, als je een prolog super HM type-checker bent. Het is niet waar als je een compiler, een interpreter of een computer bent.
Hoe dan ook, ik heb nog steeds ruzie met wiskundige mensen erover omdat het zo belachelijk is om te ontkennen dat duck-typing werkt, maar ze hebben gelijk, het vereist nog steeds type-unificatie.
@St_Rev En nee, een tensor is een subtype van een matrix, niet andersom. De matrix is het meer algemene object, tensors moeten aan meer beperkingen voldoen.
@SokobanHero Dus aangezien een multilinaire kaart altijd kan worden gerealiseerd als een matrix (ok technisch gezien een hypermatrix, omdat mensen blijkbaar matrix gebruiken om alleen een rang-2 n-dimensionale array te betekenen) en vice versa in een bepaalde ruimte, denk ik dat het even redelijk is om in beide richtingen te gaan.
20,78K