我在matlab中有这个代码
b = 0.25*ones(4)
a = [0 1 1 1 ; 1/3 0 0 0 ; 1/3 0 0 0; 1/3 0 0 0]
m = .85*a + .15*b
v = [1/4 1/4 1/4 1/4]
m^1e308*v'
Run Code Online (Sandbox Code Playgroud)
m^1e308*v'快速运行?它应该1e300多次显示矩阵时间,但它可能会做一些其他的计算,它是什么?为什么m^1e309*v'给出:
ans =
NaN
NaN
NaN
NaN
Run Code Online (Sandbox Code Playgroud)如何m^inf在不使用符号变量的情况下看到什么?
matlab如何
m^1e308*v'快速运行?
我无法告诉你Matlab的内部结构在做什么,但请注意,一般来说,A^n可以及时完成O(log n),而不是O(n)时间.
例如,A^16 = (((A^2)^2)^2)^2.
您还可以使用特征分解将其转换为标量A = U*V*U'幂,即,如果,那么幂是U * V^N * U',V对角矩阵在哪里.
为什么
m^1e309*v'要给NaN?
双精度无法代表1e309.
如何
m^inf在不使用符号变量的情况下看到什么?
使用上述的特征分解.如果任何特征值小于1,它们将变为0,如果它们中的任何一个大于1,它们将变为无穷大.