问题标签 [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.
python - 2x2 矩阵的数值稳定逆矩阵
在我正在使用 C 语言的数值求解器中,我需要反转一个 2x2 矩阵,然后在右侧乘以另一个矩阵:
我一直在使用倒置 2x2 矩阵的以下定义:
在我的求解器的前几次迭代中,这似乎给出了正确的答案,但是,经过几步之后,事情开始增长并最终爆炸。
现在,与使用 SciPy 的实现相比,我发现同样的数学不会爆炸。我能找到的唯一区别是 SciPy 代码使用scipy.linalg.inv()
,它在内部使用 LAPACK 来执行反转。
当我用上述计算替换调用时inv()
,Python 版本确实会爆炸,所以我很确定这就是问题所在。计算中的微小差异正在蔓延,这让我相信这是一个数值问题——对于反演运算来说并不完全令人惊讶。
我正在使用双精度浮点数(64 位),希望数值问题不会成为问题,但显然情况并非如此。
但是:我想在我的 C 代码中解决这个问题,而不需要调用像 LAPACK 这样的库,因为将它移植到纯 C 的全部原因是让它在目标系统上运行。此外,我想了解这个问题,而不仅仅是呼叫一个黑匣子。如果可能的话,最终我也希望它以单精度运行。
所以,我的问题是,对于这么小的矩阵,是否有一种数值上更稳定的方法来计算 A 的逆?
谢谢。
编辑:目前试图弄清楚我是否可以通过求解来避免反转C
。
python - Python稀疏矩阵逆和拉普拉斯计算
我有两个稀疏矩阵 A(亲和矩阵)和 D(对角矩阵),维度为 100000*100000。我必须计算拉普拉斯矩阵 L = D^(-1/2)*A*D^(-1/2)。我正在为稀疏矩阵使用 scipy CSR 格式。
我没有找到任何方法来找到稀疏矩阵的逆。如何找到稀疏矩阵的 L 和逆?还建议使用python这样做是否有效,或者我应该调用matlab函数来计算L?
algorithm - Matlab 使用“inv”计算逆时是否使用任何重新排序算法
我正在尝试使用 Matlab biult-in 函数“inv”来计算方阵的逆。matlab inv() 是否使用任何重新排序算法(在 inv 内部并且没有用户指定)来计算逆?
提前致谢..
c++ - C++ 反转矩阵
以下动态数组包含一个非对称 n*n 矩阵(n <=100):
有没有一种非常简单的方法来反转它?理想情况下,我只会使用 STL 中的某些内容或下载单个头文件。
matlab - 在 Matlab 中计算逆矩阵
我正在运行一个需要计算矩阵逆的优化算法。该算法的目标是从矩阵 A 中消除负值并获得新的矩阵 B。基本上,我从相同大小的已知方阵 B 和 C 开始。
我首先计算矩阵 A,它等于:
A = B^-1 * C
或者在 Matlab 中:
我使用这个是因为 Matlab 告诉我B\C
比inv(B)*C
.
然后将 A 中的负值除以 2,然后对 A 进行归一化,使其行长度为 1。使用这个新 A,我计算一个新 B:
(1/N) * A * C' = B^-1
其中 N 只是一个比例因子(A 中的列数)。然后,这个新的 B 将在第一步中再次使用,这些迭代将继续进行,直到 A 中的负数消失。
我的问题是我必须从第二个等式计算 B 然后对其进行归一化。
我一直在使用 B 计算,inv(B^-1)
但经过几次迭代后,我开始收到B^-1
“接近奇异或缩放不良”的消息。
该算法实际上适用于较小的矩阵(大约 70x70),但是当它达到大约 500x500 时,我开始收到这些消息。
有没有更好的计算方法inv(B^-1)
?
matlab - 尝试反转矩阵时,Matlab 返回“FAIL”
我试图用一些符号变量反转矩阵,但 Matlab 只返回“失败”。我正在使用 inv(K)。这是 Matlab 经过一些计算后输出的 K:
请注意,我的脚本中的矩阵如下所示(例如):
c++ - 使用 invert() 或 inv() 在 opencv 中反转矩阵时出现运行时错误
我正在尝试反转opencv中的矩阵。没有构建错误,但我不断收到“未知函数中不支持的格式或格式组合(),文件..\..\..\..\ocv\opencv\modules\core\src\lapack.cpp,第 1469 行”,这对理解我做错了什么没有多大帮助。我正在使用以下代码:
同样使用 invert() 而不是 inv() 会产生相同的结果。
我错过了什么?
谢谢。
matlab - 矩阵的逆
在 matlab 中,matlab 的逆可以写成:
对于最小二乘(更有效)
但是对于未知参数(x)的协方差矩阵(Qxx),我通常会这样做,
我如何以像(1)这样的有效方式编写它?
matlab - 计算矩阵行列式的问题
我正在尝试计算矩阵逆的行列式。矩阵的逆存在。但是,当我尝试计算逆的行列式时,它在 matlab 中给了我 Inf 值。这背后的原因是什么?
performance - 加速numpy矩阵逆
我正在使用 Numpy/Scipy 反转 20k 矩阵,它很慢。我试过了:
但没有看到任何加速。
有没有其他方法可以加快速度?