Como alguém com formação em ciência da computação, fiquei muito confuso na primeira vez que encontrei pessoas de matemática insistindo que um tensor não era uma matriz. Porque ambos são claramente matrizes multidimensionais. Mas então percebi... Matemáticos sempre usam linguagens fortemente tipadas em suas cabeças!
Para um cientista da computação, estrutura, funções, interface e restrições são claramente separadas e interconversíveis. Um tensor é uma matriz que você trata como um tensor. Você pode fazer misturar eles, uma classe é um conjunto dos quatro, mas não é obrigatório.
Quando dizem que vetores não são listas de números, é porque eles se treinaram para serem verificadores de tipos para avaliar com entusiasmo linguagens lógicas fortemente tipadas. Matemáticos rodam algo que basicamente é um verificador de tipos mágico aprendido em suas cabeças.
O pessoal de CS geralmente faz lisp e/ou C mentalmente, dependendo se queremos que ele seja o intérprete ou o computador. Se rodarmos um simulador mental fortemente digitado, ele é colocado por cima. Até mesmo o Haskell separa declarações de tipo da implementação.
Mas a matemática é feita apenas com assinaturas de tipos! Eles fazem tudo com macros fortemente tipados! É como o caso limite dos tipos Hindley–Milner, se fizessem uma expansão especulativa para encontrar compressões melhores. O que permite que matemáticos façam compilações otimizadas de programas, de forma abstrata.
Agora que estou fazendo mais matemática real, vejo o poder dessa abordagem. Mas acho que o poder da abordagem da ciência da computação é subestimado pelo pessoal da matemática. Porque a sabedoria da ciência da computação é que um tensor é uma matriz, mas uma matriz não é um tensor. Variáveis são o que você pode conjurar.
Matemáticos conhecem as casts, mas as chamam de nomes engraçados como "morfismos". E eles admitirão, sob pressão, que se você tiver o elenco apropriado, pode usar um vetor como rotação de dimensão correspondente.
Mas eles vão dizer: você não está usando o vetor como rotação, você derivou um bivetor sob blá blá blá. Isso é verdade, se você for um verificador de tipos super HM do Prolog. Isso não é verdade se você for um compilador, um interoperador ou um computador.
Enfim, ainda entro briga com o pessoal da matemática por causa disso porque é ridículo negar que tipagem de pato funciona, mas eles estão certos, ainda exige unificação de tipos.
@St_Rev E não, um tensor é um subtipo de uma matriz, não o contrário. A matriz é o objeto mais geral, os tensores devem obedecer a mais restrições.
@SokobanHero Então, como um mapa multilinear sempre pode ser realizado como uma matriz (ok, tecnicamente uma hipermatriz, porque aparentemente as pessoas usam matrix para significar apenas um array n-dim de rank-2) e vice-versa em algum espaço, acho igualmente razoável ir para qualquer direção.
1,25K