反矩阵的最大大小?

Maximum size to inverse a matrix?

提问人:Jep 提问时间:5/9/2023 最后编辑:Jep 更新时间:5/9/2023 访问量:155

问:

我想在 python 中反转 401x401(上三角形正方形)矩阵,但在矩阵大小超过 153x153 时遇到问题。对于低于此值的所有大小,一切都像魅力一样工作,但反转矩阵与初始矩阵的乘积不再是单位矩阵。

import numpy as np
import math
from scipy import special

N=1
check = np.identity(N)

def calculate_matrix(N):
    matrix = np.zeros( (N,N) ) 
    matrix[0]=[1/(2**(j))*special.binom(j,j/2) if j%2==0 else 0 for j in range(N)]
    for p in range(0,math.floor((N-2)/2)+1):
        i=2*p+1
        matrix[i]=[(-1)**(2*q-p)/(4**q)*special.binom(2*q+1,(q-p)) if (q-i>=0 and q%2==1) else 0 for q in range(N)]
    for p in range(1,math.floor((N-1)/2)+1):
        i=2*p
        matrix[i]=[(-1)**(2*q-p)/(2**(2*q-1))*special.binom(2*q,(q-p)) if (q-i>=0 and q%2==0) else 0 for q in range(N)]
    return matrix

while (np.allclose(check, np.identity(N))==True and N<=402):
    N=N+1
    matrix = calculate_matrix(N)
    inverse_matrix = np.linalg.inv(matrix)
    check=np.matmul(inverse_matrix, matrix)

print("Maximum size of the matrix that can be inverted:", N-1)

知道出了什么问题吗?

补充:似乎(谢谢user@2357112)矩阵定义不清,因此出现了问题。如果存在解决方法,将不胜感激,因为部分透视似乎不是这里的解决方案。

python numpy 矩阵

评论

0赞 Solar Mike 5/9/2023
是计算机限制还是程序限制?
0赞 Jep 5/9/2023
401 大小由数据强加。你建议我如何测试这个?
1赞 user2357112 5/9/2023
您的矩阵条件非常差 - 反转它们本质上是困难的,并且受到任何错误源的高度影响。尝试调用以查看条件编号,或打印以查看 get 的元素有多大。np.linalg.cond(matrix)np.max(np.absolute(inverse_matrix))inverse_matrix
0赞 Jep 5/9/2023
谢谢@user2357112。反演无效之前的最大条件数(在 的数值精度内)为 。在那之后它上升了。而最大的元素是.np.linalg.cond(matrix)check1.617507632158823e+23inverse_matrix2.0076553962575547e+22
0赞 5/9/2023
为什么需要那个大矩阵的显式逆?

答: 暂无答案