问题标签 [matrix-inverse]
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.
c++ - 计算一个非常大的矩阵的逆
我正在尝试在 C++ 中计算一个非常大的矩阵(11300x21500)的逆。到目前为止,我已经尝试过 Eigen 和 Armadillo 库,但在初始化阶段都失败了,说内存不足。有什么办法可以克服这种情况吗?
提前致谢
PS
我应该将矩阵的大小更正为21500x21500。正如 UmNyobe 所建议的,这不是方阵。它实际上是观察矩阵X,我正在尝试计算 ( X T X ) -1
我有一个 8GB 内存(在 64 位系统中),但我不认为我正在使用所有这些内存空间。任务管理器显示出错时的内存使用量为1GB。也许在 Windows7 中有一个操作系统命令,当应用程序的内存使用量超过 1GB 时会关闭它。
顺便说一句,我最初的目的是对这个观察矩阵进行回归。
还有一件事:观察矩阵 X 的每一行中的大多数列都为零。有没有办法利用这一点来限制反转操作中的内存使用?
c++ - 运行时检查失败 #2 - 变量“B”周围的堆栈已损坏
这个错误不断出现,但我没有看到代码有问题(它在 c++ 中)程序应该找到 2x2 矩阵的逆矩阵
c - 使用 CBLAS/LAPACK 在 C 中进行对称矩阵求逆
我正在用 C 语言编写一个需要矩阵和向量乘法的算法。我有一个矩阵Q (W x W),它是通过将向量J (1 x W) 的转置与自身相乘并添加单位矩阵I来创建的,使用标量a进行缩放。
Q = [(J^T) * J + aI]。
然后我必须将Q 的倒数与向量 G相乘以得到向量M。
M = (Q^(-1)) * G。
我正在使用cblas和clapack来开发我的算法。当矩阵Q使用随机数(浮点类型)填充并使用例程sgetrf_和sgetri_进行反转时,计算的逆是正确的。
但是当矩阵 Q 是对称的时,当你乘以 (J^T) x J 时,计算的逆是错误的!.
在从 C 调用lapack例程时,我知道数组的行优先(在 C 中)和列优先(在 FORTRAN 中)格式,但是对于对称矩阵,这应该不是问题,因为 A^T = A.
我在下面附上了矩阵求逆的 C 函数代码。
我相信有更好的方法来解决这个问题。谁能帮我这个?
使用 cblas 的解决方案会很棒......
谢谢。
algorithm - 检查矩阵是否为奇异的快速方法?(不可逆,det = 0)
检查一个小方阵(<16*16 个元素)是否为奇异(不可逆,det = 0)的最快算法是什么(链接到 C 或 C++ 示例会很酷)?
c++ - 逆矩阵 OpenCV。Matrix.inv() 无法正常工作
我有一个问题,我找不到任何解决方案。
我必须用一个已知矩阵的逆进行一些计算。
接着:
矩阵的内容是:
这当然是错误的,因为我已经在 Matlab 中检查了结果。两个矩阵都显示和读取为浮点数,它们的深度是 a 64FC1
。
有谁知道可以做什么?
谢谢大家
更多代码:
功能打印矩阵:
但错误不在printMatrix
,因为如果我分别打印元素,我会在逆数中获得相同的奇怪结果。
performance - 矩阵求逆的最快方法
我想用反函数和很多函数处理图像。为了使代码快速运行,在 3 种反转方法中,任何人都可以提出快速方法吗?
- CV_LU 高斯消除,选择了最佳枢轴元素
- CV_SVD 奇异值分解 (SVD) 方法
- CV_SVD_SYM 对称正定义矩阵的 SVD 方法。
c++ - 对稀疏矩阵求逆
我正在使用稀疏矩阵,我需要反转它。实际上,我正在寻找一个可以存储和反转稀疏矩阵的库。有人知道一些吗?
c - C中好的矩阵求逆例程
作为用于数值计算的 python 代码的一部分,我必须多次反转较大(稀疏)矩阵(~100x100)。我真的很想加快程序的速度,向我建议的一种方法是调用 C 中的子程序来进行矩阵求逆步骤。
对于这项任务,是否有任何推荐的高效且经过良好测试的 C 例程?
谢谢你。
concurrency - 大矩阵求逆
我正在寻找一个大矩阵的逆矩阵,常见大小为 1000 x 1000,但有时超过 100000 x 100000(由于时间和内存,目前正在失败)。我知道正常的情绪是“不要采取相反的方式,找到其他方法来做到这一点”,但目前这是不可能的。其原因是由于使用了期望得到矩阵逆的软件。(注意:我正在研究改变这种情况的方法,但这需要很长时间)
目前我们正在使用数值复制的 LU 分解方法,我目前正在测试特征库。eigen 库似乎更稳定且速度更快,但我仍处于准确性测试阶段。我快速浏览了其他库,例如 ATLAS 和 LAPACK,但尚未对这些库进行任何实质性测试。
似乎 eigen 库不使用并发方法来计算逆(尽管对于逆的 LU 分解部分确实如此),据我所知,ATLAS 和 LAPACK 在这个限制方面是相似的。(我目前正在使用 openMP 和不使用 openMP 测试 eigen 的速度差异。)
第一个问题是谁能解释如何通过并行化优化矩阵求逆。在这里找到了一篇讲矩阵求逆并行算法的文章,但是没看懂。这篇文章似乎在谈论另一种方法?我也不确定 scaLAPACK 或 PETSc 是否有用?
第二个问题,我阅读了这篇关于使用 GPU 提高性能的文章,但我从未为 GPU 编码,因此不知道要传达什么,但底部的图表看起来相当惊人。这怎么可能,如果这是真的,我该如何开始实施这样的事情。
我还发现了这篇文章,还没有时间通读以了解它,但它似乎很有希望,因为内存是我们软件的当前问题。
有关这些文章或一般问题的任何信息都会有很大帮助。如果这个问题看起来含糊不清,我再次道歉,如有必要,我会尝试扩展更多内容。
osx-lion - 如何使用加速框架执行矩阵逆运算?
我想找到矩阵的逆矩阵。
我知道这涉及到第一个 LU 因式分解,然后是求逆步骤,但我无法通过搜索苹果的 10.7 文档找到所需的函数!
这似乎是一篇有用的帖子Symmetric Matrix Inversion in C using CBLAS/LAPACK,指出应该使用sgetrf_
and函数。sgetri_
但是搜索这些术语我在 Xcode 文档中一无所获。
有人有这个矩阵运算的样板代码吗?