我正在将一些 MATLAB 代码转换为 python 并遇到错误“ValueError Traceback (last recent call last) in 1 for ig in range(nbas): ----> 2 psi[:,ig] = np.polyval (np.array(pp[ig,:ig]),节点)
ValueError: could not broadcast input array from shape (56,1) into shape (56) “我找不到以下代码的问题:
import numpy as np
import scipy.special as scl
##basis parameters (nbas<ngrid+1)
nbas = 54 #Basis set size in one dimension
ngrid = 56 #quadrature size
#Gauss-Hermite-Quadrature
#Hermite matrix
def hermipol(n):
p = np.zeros((n+1,n+1))
p[0][0] = 1
if n == 0:
p = np.array([[1,0],[2,0]], dtype = float)
if n > 0:
p[1][range(0,2)] = np.array([2,0])
if n >=1:
for k in range(2,n+1):
p[k][range(n)] = 2*p[k-1][range(0,n)]
p[k][range(2,n+1)] += -2*(k-1)*p[k-2][range(0,n-1)]
for i in range(0,n+1):
p[i,:] /= np.sqrt(np.sqrt(np.pi)*2**(i)*scl.factorial(i))
return(p)
#Generation Gauss-Hermite Quadrature nodes and weights
def ghquad(n):
return(np.polynomial.hermite.hermgauss(n))
[nodes,weights] = ghquad(ngrid)
pp = hermipol(ngrid)
#Evaluation and store psi_i()(x,y)_k)
nodes = np.array([nodes]).T
weights = np.array([weights]).T
print(weights)
print(nodes)
np.shape(nodes)
psi = np.zeros((ngrid,nbas))
np.shape(psi)
for ig in range(nbas):
psi[:,ig] = np.polyval(np.array(pp[ig,:ig]),nodes)
任何指导将不胜感激。
谢谢!