Jako osoba z wykształceniem informatycznym, byłem bardzo zdezorientowany, gdy po raz pierwszy spotkałem ludzi z matematyki, którzy upierali się, że tensor to nie macierz. Bo obie są wyraźnie wielowymiarowymi tablicami. Ale potem zrozumiałem… matematycy zawsze używają w swoich głowach języków o silnym typowaniu!
Dla informatyka struktura, funkcje, interfejs i ograniczenia są zarówno wyraźnie oddzielone, jak i wymienne. Tensor to macierz, którą traktujesz jak tensor. Możesz je mieszać, klasa to zbiór wszystkich czterech, ale nie jest to wymagane.
Kiedy mówią ci, że wektory nie są listami liczb, to dlatego, że wytrenowali się na bycie kontrolerami typów dla języków logiki o silnym typowaniu i chętnym ewaluowaniu. Matematycy uruchamiają coś, co w zasadzie jest magicznym, wyuczonym kontrolerem typów w ich głowach.
Ludzie z informatyki głównie myślą w lispie i/lub C, w zależności od tego, czy chcemy być interpretem, czy komputerem. Jeśli uruchamiamy silnie typowany symulator mentalny, jest on na wierzchu. Nawet Haskell oddziela deklaracje typów od implementacji.
Ale matematyka jest wykonywana tylko za pomocą sygnatur typów! Robią wszystko za pomocą makr o silnych typach! To jak graniczny przypadek typów Hindleya-Milnera, jeśli przeprowadzono by spekulacyjną ekspansję, aby znaleźć lepsze kompresje. Co pozwala matematykowi na optymalizację kompilacji programów, w sposób abstrakcyjny.
Teraz, gdy wykonuję więcej rzeczywistych obliczeń, dostrzegam moc tego podejścia. Ale myślę, że moc podejścia CS jest niedoceniana przez ludzi matematyki. Ponieważ mądrość CS polega na tym, że tensor to macierz, ale macierz nie jest tensorem. Zmienne to cokolwiek, na co możesz je rzutować.
Matematycy wiedzą o rzutach, ale nazywają je zabawnymi nazwami, takimi jak „morfizmy”. I przyznają, pod presją, że jeśli masz odpowiedni rzut, możesz użyć wektora jako rotacji odpowiadającego wymiaru.
Ale powiedzą, że nie używasz wektora jako rotacji, wyprowadziłeś bivektor pod blah blah blah. To prawda, jeśli jesteś super HM typem sprawdzacza w Prologu. To nieprawda, jeśli jesteś kompilatorem, interpretatorem lub komputerem.
Tak czy inaczej, wciąż wszczynam kłótnie z ludźmi od matematyki na ten temat, ponieważ to jest tak absurdalne, by zaprzeczać, że duck-typing działa, ale mają rację, że wciąż wymaga unifikacji typów.
@St_Rev I nie, tensor jest podtypem macierzy, a nie odwrotnie. Macierz jest bardziej ogólnym obiektem, a tensory muszą spełniać więcej ograniczeń.
@SokobanHero Ponieważ mapę wieloliniową można zawsze zrealizować jako macierz (technicznie rzecz biorąc, hipermacierz, ponieważ ludzie najwyraźniej używają terminu macierz tylko w odniesieniu do macierzy o randze 2, n-wymiarowej), a odwrotnie w pewnej przestrzeni, uważam, że równie rozsądne jest pójście w obie strony.
30,26K