Como alguien con formación en informática, estaba muy confundido la primera vez que encontré a personas de matemáticas insistiendo en que un tensor no era una matriz. Porque ambos son claramente arreglos multidimensionales. Pero luego me di cuenta... ¡los matemáticos siempre usan lenguajes fuertemente tipados en sus cabezas!
Para un científico informático, la estructura, las funciones, la interfaz y las restricciones están claramente separadas e interconvertibles. Un tensor es una matriz que estás tratando como un tensor. Puedes mezclarlos, una clase es un conjunto de los cuatro, pero no es obligatorio.
Cuando te dicen que los vectores no son listas de números, es porque se han entrenado para ser verificadores de tipos en lenguajes de lógica fuertemente tipados que evalúan de manera ansiosa. Los matemáticos ejecutan algo que es básicamente un verificador de tipos mágico aprendido en sus cabezas.
Las personas de CS generalmente ejecutan Lisp y/o C mentalmente, dependiendo de si queremos ser el intérprete o la computadora. Si ejecutamos un simulador mental fuertemente tipado, está encima. Incluso Haskell separa las declaraciones de tipo de la implementación.
¡Pero las matemáticas se hacen solo con firmas de tipo! ¡Hacen todo con macros fuertemente tipadas! Es como el caso límite de los tipos de Hindley–Milner, si se hiciera una expansión especulativa para encontrar mejores compresiones. Lo que permite a los matemáticos hacer compilación optimizada de programas, de manera abstracta.
Ahora que estoy haciendo más matemáticas reales, veo el poder de este enfoque. Pero creo que el poder del enfoque de CS es subestimado por la gente de matemáticas. Porque la sabiduría de CS es que un tensor es una matriz, pero una matriz no es un tensor. Las variables son lo que sea que puedas convertirlas.
Los matemáticos saben sobre los casts, pero los llaman nombres graciosos como “morfismos”. Y admitirán, bajo presión, que si tienes el cast apropiado puedes usar un vector como una rotación de la dimensión correspondiente.
Pero dirán, no estás usando el vector como una rotación, has derivado un bivector bajo bla bla bla. Esto es cierto, si eres un verificador de tipos super HM de prolog. No es cierto si eres un compilador, un intérprete o una computadora.
De todos modos, sigo peleando con la gente de matemáticas sobre esto porque es tan ridículo negar que el duck-typing funciona, pero tienen razón, todavía requiere unificación de tipos.
@St_Rev Y no, un tensor es un subtipo de una matriz, no al revés. La matriz es el objeto más general, los tensores deben cumplir más restricciones.
@SokobanHero Entonces, dado que un mapa multilineal siempre puede ser realizado como una matriz (ok, técnicamente un hipermatriz, porque aparentemente la gente usa matriz para referirse solo a un arreglo n-dimensional de rango 2) y viceversa en algún espacio, creo que es igualmente razonable ir en cualquier dirección.
30,27K