我实际上需要反函数,所以我不能改用mldivide,…
这是不正确的,因为您仍然可以
mldivide用来求逆。注意。在MATLAB中,这等效于
A-1 = A-1 * I
invA = Aspeye(size(A));
在我的机器上,
5000x5000矩阵大约需要10.5秒。请注意,MATLAB确实具有
inv计算矩阵逆的函数。尽管这将花费相同的时间,但在数值精度方面效率较低(链接中的更多信息)。
首先,他们的行列式为1,因此它们绝对是可逆的
而不是
det(A)=1,是矩阵的条件编号指示逆矩阵的准确性或稳定性。注意。所以只设置,并且会给你。然而,正如,和,这意味着你的矩阵接近奇异会有在计算反大数值的误差。
det(A)=∏i=1:nλi``λ1=M``λn=1/M``λi≠1,n=1``det(A)=1``M → ∞``cond(A) = M2 → ∞``λn → 0
我的矩阵来自一个问题,这意味着它们具有一些不错的属性。
当然,如果矩阵稀疏或具有其他有利属性,则可以使用其他更有效的算法。但是,如果没有有关您的特定问题的任何其他信息,就只能说无话可说了。
我希望有一种方法可以加速Matlab
MATLAB使用Gauss消除法来计算通用矩阵的逆(满秩,非稀疏,没有任何特殊属性)
mldivide,这是,其中矩阵的大小。因此,在您的情况下,有浮点运算。因此,在具有大约10
Gflops计算能力的合理机器上,您将需要至少12.5秒的时间来计算反函数,除非您利用“特殊属性”(如果它们是可利用的),否则将没有其他办法。
)
Θ(n3)``n``n=5000``1.25 x 1011



