我试图找到一个积分函数的数组,但是我在形状和尺寸上有一些问题。我找到了系数k,然后找到了区间x=(0,a)的能量,其中a=1,n=(-Nmax,Nmax)。我还试着把它们矢量化。但每次都会给我带来新的错误。我不确定如何解决这个问题,因为我需要这个积分函数来调用另一个函数来绘制图形。在
def k_n(n):
k = fsolve(lambda n : np.tan(n*a/2.) - np.tanh(n*a/2.),n)
return(k)
def E(n):
return(np.piecewise(n,[n<0.,n>=0.],
[lambda n: -k_n(n)**2 ,
lambda n: k_n(n)**2 ]))
def integrand1(x,n):
return(np.sin(k_n(n)*x)**2)
def integrand2(x,n):
return((np.sin(k_n(n)*a/2.))**2*(np.sinh(k_n(n)*(a-x)))**2/2*
np.exp(-a*k_n(n))*(np.sinh(k_n(n)*a/2.))**2)
def integrate(n):
integrand = spi.integrate.quad(integrand1,0,a/2,args=(n))+spi.integrate.quad(integrand2,a/2,a,args=(n))
one = np.true_divide(1, integrand )
return(one)
可能问题出在n_r
和{
TypeError: only size-1 arrays can be converted to Python scalars.in _quad return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit
不能将数组发送到函数进行集成。四元函数期望只有一个来自函数的输出(就像您从数学函数中期望的那样)。但您可以迭代n\r数组:
结果是一个二维numpy数组。在
相关问题 更多 >
编程相关推荐