问题标签 [matrix-decomposition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
263 浏览

ruby - Ruby Matrix::特征值分解错误

我查看了给定矩阵的特征向量矩阵,但是当我尝试对其求逆时,我在eigenvector_matrix_inv().

它不应该是单数,如检查Mathematica

给予

我究竟做错了什么 ?

我应该特别注意 Ruby 中的一些特殊内容吗?

0 投票
2 回答
9995 浏览

matlab - 通过给定的 LU 分解和常数向量求解线性方程组

给定LU LU 分解和常数向量b这样LU*x=b ,是否有任何内置函数可以找到x?意思是 -

请注意,在两者中LU我们都在处理三角矩阵,它可以通过前向和后向替换直接求解,而无需使用高斯消元过程。

编辑 :

求解这个线性方程组应该按照以下步骤——

编辑 2:

我找到了 linalg::matlinsolveLU 但我没有尝试,因为我的版本太旧 ( R2010a) 。它对任何人都有效吗?

0 投票
1 回答
344 浏览

cuda - 使用 CUDA 的矩阵乘法的特例

我正在寻找一些专用于典型密集矩阵乘法的特殊函数(CUDA),例如 A*B,其中 A 的大小为 6*n,B 的大小为 n*6,n 非常大(n=2 ^24)。我已经使用 CUBLAS 和其他一些库来测试这个示例,在 CUBLAS 中,对于这个示例,我们使用 6*6=36 个线程,这与 GPU 的总并行度相差甚远,所以我将 A 和 B 拆分为子矩阵(向量)然后对它们中的每一个实现点积函数,性能得到了很好的提升。问题是,在这种情况下,我们需要启动 36 个 CUDA 内核,并且在它们之间有很多相同的数据足迹(相同的数据已经从 GPU 的全局内存中访问过多次)。所以我问这种问题是否存在任何解决方案。

0 投票
2 回答
1522 浏览

c++ - mpi环境中c/c++中并行分布式cholesky分解的库?

在 mpi 环境中,哪些库可用于 C/C++ 中密集矩阵的并行分布式 Cholesky 分解?

我找到了 ScaLAPACK 库,这可能是我正在寻找的解决方案。似乎调用起来有点繁琐,有很多 Fortran <-> C 转换要做,这让我觉得它可能没有被广泛使用,因此也许有一些其他的库被用来代替?

或者,当一个已经在使用 MPI 并且 MPI 已经在程序中初始化时,是否有一些 ScaLAPACK 包装器使得在 C 或 C++ 环境中使用起来相对不太痛苦?

0 投票
2 回答
1087 浏览

java - Java中的CHOLMOD

我已经问过类似的问题,但这次我会更具体。

我需要在一个for循环中执行一个通常很大的正定对称矩阵(约1000x1000)的 Cholesky 分解。现在,为此,我一直在尝试:

1) Apache 数学库

2) 并行 Colt 库

3) JLapack 库

例如,如果与 MATLAB 相比,在上述三种情况中的任何一种情况下,时间消耗都非常长。

因此,我想知道在 Java 中是否有任何高度优化的外部 Cholesky 分解工具:例如,我一直在考虑CHOLMOD算法,它实际上在内部MATLAB和其他工具中调用。

我非常感谢您能就此事获得全面的反馈。

0 投票
3 回答
7143 浏览

algorithm - LU分解方阵matlab高斯消除

我正在尝试创建一个程序,该程序将方形(n×n)矩阵作为输入,如果它是可逆的,LU 将使用高斯消元法分解矩阵。

这是我的问题:在课堂上,我们了解到最好更改行,以便您的枢轴始终是其列中的最大数字(绝对值)。例如,如果矩阵当时正在A = [1,2;3,4]切换行[3,4;1,2],那么我们可以继续进行高斯消元。

我的代码适用于不需要行更改的矩阵,但对于需要行更改的矩阵,则不需要。这是我的代码:

澄清:由于我们正在切换行,我们正在寻找分解P(置换矩阵)时间,而不是我们作为输入A的原始数据。A

代码说明:

  1. 首先我检查矩阵是否可逆,如果不是,停止。如果是,则枢轴为 (1,1)
  2. 我在第 1 列中找到最大的数字,然后切换行
  3. 使用高斯消元对第 1 列进行评分,将除点 (1,1) 之外的所有部分都归零
  4. 枢轴现在是 (2,2),在第 2 列中找到最大的数字...冲洗,重复
0 投票
2 回答
2090 浏览

java - 在java中计算截断奇异值分解的最佳方法

我想对最好的 2 或 3 个库进行基准测试,以计算截断奇异值分解 (SVD),即仅保留 k 个最大奇异值的 SVD。此外,我有这些限制:

  • 它必须是一个java库
  • 我的矩阵是稀疏的(大约 1% 非零值)
  • 我的矩阵很大(通常是 10k x 5k)
  • 我的矩阵也可以大于高(5k x 10k)

我遇到了相当多的库,但例如,对于 Colt,我什至不知道 SVD 算法是否考虑到我的矩阵是稀疏的这一事实。此外,我没有找到可以直接计算截断解决方案的单个库(应该更快)。实际上,我最感兴趣的是从截断的 SVD 获得的近似矩阵。

提前感谢您的帮助,

罗曼·拉罗什

0 投票
1 回答
978 浏览

java - Java Concurrent - Fork/Join 中的线程同步 - LU 分解

在开发Java软件的过程中,我在这里问Java Concurrent - no speedUp 获得LU算法 - 虚假共享?为什么我没有加快使用 CyclicBarrier 并行化此代码的速度。

该算法基本上是做矩阵的高斯归约

经过一番讨论(如果您感兴趣,请查看评论),用户 (brettw) 使用 Fork/Join Java 框架回复了此解决方案:

问题是该算法不会产生预期的结果,因为没有与工作人员同步(每一行都必须更新所有值以增加k值)。

我的问题是:

由于我无法预见线程/工作者的数量,您会建议什么样的同步策略?

0 投票
2 回答
412 浏览

matrix - LU分解N^3

假设我有一个正方形 NXN 对称实数矩阵 A,并且我想计算 A 的 LU 分解。最好的算法来做到这一点

  • 如果 A 是稠密矩阵
  • 如果 A 是稀疏矩阵?
0 投票
0 回答
1451 浏览

java - 4x4变换矩阵分解

我正在尝试分解一个齐次坐标变换矩阵,它是这些变换矩阵的结果(按其书写顺序应用):非均匀缩放 -> 旋转 -> 翻译我从生成 4x4 变换矩阵(最后一列的前三个值),但我找不到提取旋转和缩放矩阵的方法。

我在网上找到了以下矩阵分解算法:

  1. 将比例因子计算为矩阵的前三个基向量(列或行)的大小
  2. 将前三个基向量除以这些值(从而对它们进行归一化)
  3. 矩阵的左上角 3x3 部分现在表示旋转(您可以按原样使用它,也可以将其转换为四元数形式)
  4. 平移是矩阵的第四个基向量(在齐次坐标中 - 这将是您感兴趣的前三个元素)

这是我的java实现

但是它检索到的轴角和比例因子是不正确的。
它出什么问题了?