根据我的理解,需要分解/分解(LU,QR,Cholesky等),然后基于分解进行矩阵逆计算.有没有其他方法可以绕过它(我想弄清楚我是否可以坚持在试用版CULAtools中免费提供的6个功能)?提前感谢您的评论.
我试图用一些符号变量反转矩阵,但Matlab只返回'FAIL'.我正在使用inv(K).这是Matlab在经过一些计算后输出的K:
K =
[ 11/80, 7/80, -11/80, -7/80, 0, 0]
[ 7/80, 11/80, -7/80, -11/80, 0, 0]
[ -11/80, -7/80, 11/80, 7/80, 0, 0]
[ -7/80, -11/80, 7/80, 11/80, 0, 0]
[ 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0]
invK = inv(K);
FAIL
Run Code Online (Sandbox Code Playgroud)
请注意,我的脚本中的矩阵看起来像这样(例如):
K = [1,2,3;
3,2,1;
1,1,1];
Run Code Online (Sandbox Code Playgroud) 不太清楚这意味着什么."警告:Matrix的工作精度非常高."
我有一个称为矩阵的3x4矩阵bestM矩阵Q是bestM的3x3,矩阵m是bestM的最后一列
我想做C = - Q*矩阵m的逆矩阵,我得到那个警告和C = [Inf Inf Inf],这是不对的,因为我正在计算世界上的摄像机中心
bestM = [-0.0031 -0.0002 0.0005 0.9788;
-0.0003 -0.0006 0.0028 0.2047;
-0.0000 -0.0000 0.0000 0.0013];
Q = bestM(1:3,1:3);
m = bestM(:,4);
X = inv(Q);
C = -X*m;
disp(C);
Run Code Online (Sandbox Code Playgroud) 如何在R中找到矩阵的符号反转; 例如:
Matrix.test <- function(x) matrix(c(x, x^2, x^3, x^4, x^5, x^6, x^7, x^8, x^9, 2*x, 3*x, 4*x, 2*x^2, 3*x^3, 4*x^4, 5*x^5), 4, 4)
Run Code Online (Sandbox Code Playgroud)
我知道有一个名为'Ryacas'的包,它是'yacas'的接口,但我不能用它来做这样的计算.'yacas'是一个用于符号操纵数学表达式的程序.请参阅链接了解更多详情.
谢谢
我正在寻找一种方法来找到矩阵的伪逆,这样就可以在GPU上完成.SVD/QR很难并行化,并且不支持MATLAB的GPU,但似乎LU虽然可以并行运行,但MATLAB的GPU也不支持.我比较了性能,它似乎比在单核CPU上运行要慢.
我正在寻找可以使用的伪逆(或甚至是方形矩阵的常规逆).根据Matlab,使用mldivide()执行高斯消除,适用于GPU.
我尝试使用A\I但遗憾的是它无法在GPU上高效运行.
有没有人可以指导我使用并行LU或高斯消除的优化代码?
我听说过MAGMA软件包,但是安装和编译似乎需要做很多工作,我真的需要这个简单的东西.
也欢迎使用C++代码.
谢谢,吉尔
通常,我想计算复方(NxN)矩阵的逆.
F.ex我有一个5x5矩阵:
Ybus = [
6.2500 -18.6950i, -5.0000 +15.0000i, -1.2500 + 3.7500i, 0, 0 ;
-5.0000 +15.0000i, 10.8333 -32.4150i, -1.6667 + 5.0000i, -1.6667 + 5.0000i, -2.5000 + 7.5000i;
-1.2500 + 3.7500i, -1.6667 + 5.0000i, 12.9167 -38.6950i, -10.0000 +30.0000i, 0;
0, -1.6667 + 5.0000i, -10.0000+30.0000i, 12.9167 -38.6950i, -1.2500 + 3.7500i;
0, -2.5000 + 7.5000i, 0, -1.2500 + 3.7500i, 3.7500 -11.2100i;
]
Run Code Online (Sandbox Code Playgroud)
如何使用Delphi计算该矩阵的逆(Zbus =逆(Ybus))?
我正在研究一个c ++代码库,它使用矩阵库来计算各种事物.其中之一是计算矩阵的逆.它使用高斯elimation来实现这一点.但结果非常不准确.因此,将逆矩阵与原始矩阵相乘甚至不会接近单位矩阵.
下面是用于计算逆的代码,矩阵是在数值类型和行和列上模板化的:
/// \brief Take the inverse of the matrix.
/// \return A new matrix which is the inverse of the current one.
matrix<T, M, M> inverse() const
{
static_assert(M == N, "Inverse matrix is only defined for square matrices.");
// augmented the current matrix with the identiy matrix.
auto augmented = this->augment(matrix<T, M, M>::get_identity());
for (std::size_t i = 0; i < M; i++)
{
// divide the current row by the diagonal element.
auto divisor = augmented[i][i];
for …Run Code Online (Sandbox Code Playgroud) [python 2.7 和 numpy v1.11.1] 我正在查看矩阵条件数,并试图在不使用函数的情况下计算矩阵的条件数np.linalg.cond()。
根据 numpy 的文档,矩阵条件数的定义是“x 的范数乘以 x 的倒数的范数”。
||X|| * ||X^-1||
对于矩阵
a = np.matrix([[1, 1, 1],
[2, 2, 1],
[3, 3, 0]])
print np.linalg.cond(a)
Run Code Online (Sandbox Code Playgroud)
1.84814479698e+16
print np.linalg.norm(a) * np.linalg.norm(np.linalg.inv(a))
Run Code Online (Sandbox Code Playgroud)
2.027453660713377e+17
我的计算错误在哪里?
谢谢!
我需要计算一个帽子矩阵(如线性回归)。标准 R 代码将是:
H <- tcrossprod(tcrossprod(X, solve(crossprod(X))), X)
用X是相对大的矩阵(即1E5 * 100),并且该线具有运行数千次。我知道最大的限制部分是逆计算,但叉积也可能很耗时。有没有更快的替代方法来执行这些矩阵运算?我尝试了 Rcpp 并查看了几篇文章,但我测试的任何替代方法都较慢。也许我没有正确编写 C++ 代码,因为我不是高级 C++ 程序员。
谢谢!
该链接具有我的矩阵的 dput 输出结构。
\n https://pastebin.com/TsUzuF4L
\n\nsolve() 中的错误:系统在计算上是奇异的:R 中的倒数条件数 = 4.35295e-21
\n
我想知道R中是否有任何通用方法可以确定矩阵可逆?有什么功能吗?
\n我添加了属性tol=FALSEor tol = 1e-22(与 error 中的数字相比),但我仍然收到相同的错误。
附:我将其放在 stackexchange 上的原因是,我的矩阵行列式不为零,但 R 给出了上面的错误,并相信我的矩阵不可逆!怎么会?!
\n\n我的矩阵是 45 \xc3\x97 45。dput()输出超出了 Stack Overflow 上 40000 个字符的限制,但为了了解其数字是什么,我在上面显示了其中的一部分。