Math 如何以FP方式转置高次张量?

Math 如何以FP方式转置高次张量?,math,recursion,permutation,transpose,tensor,Math,Recursion,Permutation,Transpose,Tensor,我目前正在做一项研究。 它现在支持多种矩阵运算: - Plus - Product - Dot - Get & Set - Transpose - Multiply - Determinant 我总是想概括我能概括的一切 我在考虑一种递归的方法来实现矩阵的转置,但我就是想不出来 有人帮忙吗?我建议您不要尝试编写递归方法来转置矩阵 这个想法很简单: transpose(A) = A(j,i) 在这种情况下,递归并不难。您可以看到停止条件:具有单个值的1x1矩阵是它自己的转置。将其构建为

我目前正在做一项研究。 它现在支持多种矩阵运算:

- Plus
- Product
- Dot
- Get & Set
- Transpose
- Multiply
- Determinant
我总是想概括我能概括的一切

我在考虑一种递归的方法来实现矩阵的转置,但我就是想不出来


有人帮忙吗?

我建议您不要尝试编写递归方法来转置矩阵

这个想法很简单:

transpose(A) = A(j,i)
在这种情况下,递归并不难。您可以看到停止条件:具有单个值的1x1矩阵是它自己的转置。将其构建为2x2,等等

问题是,这将是非常低效的,无论是在堆栈深度和内存方面,对于任何超过一个平凡大小的矩阵。将线性代数应用于实际问题的人可能需要几万或几十亿个自由度

你不会谈论像稀疏或带状矩阵等有意义的实际案例

最好使用简单的声明性方法

使用BLAS作为其支持实现。它是一种比JavaScript更实用的语言。也许您可以通过查看源代码来套取一些想法

我建议你先做一件简单的事情,让它全部运作起来,然后再从那里分支出去

这里有一个问题要问你自己:为什么会有人想用JavaScript做严肃的数字工作?你的图书馆将提供什么,这是一个什么的改进


如果你想学怎么做,一定要继续。要知道你不是第一个。

所有的矩阵都不是张量。张量遵循特定的变换规则。张量可以表示为矩阵,但并非所有矩阵都是张量。这和你的问题没有关系,但我想我会指出任何一点。@duffymo但是。。。维基百科是这么说的。。。我理解错了吗?我对张量的了解比维基百科上的要多。是的,我的观点仍然站得住脚。您将很难用函数的方式编写矩阵运算。它们不会那样缩放。@duffymo哈哈好的,谢谢你指出这一点,伙计!比如说,嗯,“高维矩阵”怎么样(“高维矩阵”听起来像是一个大于3*3的矩阵),也许是“cubix”?你现在在编术语。请停下来。这取决于你是否理解数学,而不是问题是否适合你。有四阶张量之类的东西。不,我这样做不是为了什么,我只是喜欢它