Python。积分问题。TypeError:只有size1数组可以转换为Python标量

2024-09-27 23:17:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找到一个积分函数的数组,但是我在形状和尺寸上有一些问题。我找到了系数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和{}

^{pr2}$

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


Tags: lambda函数spireturndefnpargssin
1条回答
网友
1楼 · 发布于 2024-09-27 23:17:42

不能将数组发送到函数进行集成。四元函数期望只有一个来自函数的输出(就像您从数学函数中期望的那样)。但您可以迭代n\r数组:

n_r = np.arange(-Nmax, Nmax,1)
x_r = np.arange(0,a,.1)

print(k_n(n_r))
print(E(n_r))
print(np.array([integrate(n) for n in n_r]))

结果是一个二维numpy数组。在

相关问题 更多 >

    热门问题