Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy生成更快的逆矩阵_Python_Numpy_For Loop_Matrix_Matrix Inverse - Fatal编程技术网

Python Numpy生成更快的逆矩阵

Python Numpy生成更快的逆矩阵,python,numpy,for-loop,matrix,matrix-inverse,Python,Numpy,For Loop,Matrix,Matrix Inverse,我有一个复杂的2D数组(HH),我想对其进行反演,我只想要它的第一项,在3 for循环中迭代。对于合理大小的M,C,K(2D数组),它不会花费很长时间,但是如果我增加它们的大小,等待就会变得无限。 第三个循环中的一个循环计算HH[0,0]大约需要0.19秒,想象一下迭代2x20x500次需要很多时间。 我怎样才能加快这个过程 因为我无法上传M、C和K,所以我将它们替换为:inv((np.random.rand(10001000)+np.random.rand(10001000)*1j) 我还尝试

我有一个复杂的2D数组(HH),我想对其进行反演,我只想要它的第一项,在3 for循环中迭代。对于合理大小的M,C,K(2D数组),它不会花费很长时间,但是如果我增加它们的大小,等待就会变得无限。 第三个循环中的一个循环计算HH[0,0]大约需要0.19秒,想象一下迭代2x20x500次需要很多时间。 我怎样才能加快这个过程

因为我无法上传M、C和K,所以我将它们替换为:inv((np.random.rand(10001000)+np.random.rand(10001000)*1j)

我还尝试了这一点来加快速度:

H11_1 = np.zeros((num_harms,num_modes,len(w)),dtype = 'complex_') # dim(num_harms,num_modes,step_freq) 
for h in range(0,num_harms):
    for j in range(0,num_modes):
        for iw in range(0,len(w)):    
            H = ((-((h+1)*w[iw])**2)*M[j]+(1j*(h+1)*w[iw]*C[j])+K[j])            
            H_1 = (np.linalg.det(A))
            H11_1[h,j,iw] = H_1
但似乎有这样的警告:

RuntimeWarning: overflow encountered in det                                                          
r = _umath_linalg.det(a, signature=signature)

我调试它以查看H_1值,它是:(-inf infj)

你说的逆是什么意思?你是说
M**(-1)
?除此之外,请提供一个最小的工作示例(对于第一个代码)。它们是许多未知变量,
len(w)=500
显然不起作用。我说的逆是指numpy function numpy.linalg,inv()如果你只需要HH^(-1)[0,0],你就不需要求整个矩阵的逆。我只是不喜欢拿起我的旧教科书,但它可能在O(N)时间内完成。要得到元素H[0,0],我需要整个矩阵的逆,而不仅仅是第一个元素的倒数。不,你不需要求整个矩阵的逆。读一下这个。我记得那是
RuntimeWarning: overflow encountered in det                                                          
r = _umath_linalg.det(a, signature=signature)