分块对角矩阵的逆矩阵,相似于对角矩阵嘛,分块对角矩阵的逆矩阵,相似于对角矩阵对吗
我想像这样生成分区对角矩阵A
给出矩阵B
B=-np.diag(np.ones(n - 2),-1) - np.diag(np.ones(n - 2),1) 4 * np.diag(np.ones(n - 1))
例如,
有没有一种方法可以不使用循环?
抱歉,第一次错误地上传了矩阵A和B的图形。
解决方法:
您可以将构建块堆叠到查找表中,然后通过在其中建立索引来构建答:
从科学计算导入稀疏
n=5
B=sparse.diags([-1,4,-1],[-1,0,1],(n-1,n-1),dtype=int).A
A=sparse.diags([1,2,1],[-1,0,1],(n-1,n-1),dtype=int).A
# 0表示0 0 0.
# 1表示我
# 2表示B
#下一行构建查找表(使用堆栈)
#进行查找.[A]
#并展平交换后产生的4D阵列
#中间轴;交换对条目进行重新排序
#垂直,水平,垂直,水平到垂直,垂直,水平,水平
A=np.stack([np.zeros_like(B),-np.identity(n-1,int),B])[A].交换(1,2)。整形((n-1)*(n-1),-1)
A
数组([[ 4,-1,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,
[-1, 4, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, -1, 4, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, -1, 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0],
[-1, 0, 0, 0, 4, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0],
[ 0, -1, 0, 0, -1, 4, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0],
[ 0, 0, -1, 0, 0, -1, 4, -1, 0, 0, -1, 0, 0, 0, 0, 0],
[ 0, 0, 0, -1, 0, 0, -1, 4, 0, 0, 0, -1, 0, 0, 0, 0],
[ 0, 0, 0, 0, -1, 0, 0, 0, 4, -1, 0, 0, -1, 0, 0, 0],
[ 0, 0, 0, 0, 0, -1, 0, 0, -1, 4, -1, 0, 0, -1, 0, 0],
[ 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 4, -1, 0, 0, -1, 0],
[ 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 4, 0, 0, 0, -1],
[ 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 4, -1, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 4, -1, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 4, -1],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 4]])
请注意,稀疏构造函数仅出于其便利性而使用。稀疏矩阵将立即转换为密集矩阵(使用A属性).
标签:python,numpy