球形贝塞尔函数导致 "invalid __array_struct__"

Spherical Bessel Functions causing "invalid __array_struct__"

我正在尝试计算散射问题中的微分截面(函数和角度以及“阶数”l)。 我想对不同的 l 值执行此操作并绘制横截面。 我认为贝塞尔函数的划分是问题,但我不知道如何解决。 有 solutions/tips 吗? 谢谢

这是我的代码:

import numpy as np
import scipy as sp
from scipy import special



def j_l(l,k):
    sp.special.spherical_jn(l, k)
    return np.ndarray
def j_l1(l,k):
    sp.special.spherical_jn(l, k, True)
    return np.ndarray
def n_l(l, k):
    sp.special.spherical_yn(l, k)
    return np.ndarray
def n_l1(l, k):
    sp.special.spherical_yn(l, k, True)
    return np.ndarray




def delta_l(k_1, k_2,r, l):
    np.arctan(np.divide(k_1*np.divide(j_l1(l,k_1),j_l(l,k_1))*j_l(l,k_2)-k_2*r*j_l1(l,k_2)),(k_1*np.divide(j_l1(l,k_1),j_l(l,k_1))*n_l(l,k_2)-k_2*r*n_l1(l,k_2)))

def dcross(l,t,k_2,k_1):
    (1/k_2*(2*l+1)*np.exp(delta_l(k_1,k_2,2,l))*np.sin(delta_l(k_1,k_2,2,l))*sp.special.lpmv(0, l, np.cos(t)))**2






t=np.linspace(0, 10, 10000)
fig = plt.figure()




plt.plot(t,dcross(1,t,1,0.5))
fig.savefig('dcross.png')

plt.show() ```

我的物理学有点生疏,所以我无法检查公式,但有两个问题:delta_l(外部真实分界线)中的括号错误和正确的 returns贝塞尔函数及其导数:

import matplotlib.pyplot as plt
import numpy as np
import scipy as sp
from scipy import special

def j_l(l,k):
    return sp.special.spherical_jn(l, k)
    #return np.ndarray

def j_l1(l,k):
    return sp.special.spherical_jn(l, k, True)
    #return np.ndarray

def n_l(l, k):
    return sp.special.spherical_yn(l, k)
    #return np.ndarray

def n_l1(l, k):
    return sp.special.spherical_yn(l, k, True)
    #return np.ndarray

def delta_l(k_1, k_2,r, l):
    return np.arctan(np.divide(k_1*np.divide(j_l1(l, k_1), j_l(l ,k_1))*j_l(l, k_2)-k_2*r*j_l1(l, k_2),
              (k_1*np.divide(j_l1(l,k_1), j_l(l,k_1))*n_l(l, k_2)-k_2*r*n_l1(l, k_2))))

def dcross(l,t,k_2,k_1):
    return (1/k_2*(2*l+1)*np.exp(delta_l(k_1,k_2,2,l))*np.sin(delta_l(k_1,k_2,2,l))*sp.special.lpmv(0, l, np.cos(t)))**2


t=np.linspace(0, 10, 10000)
fig = plt.figure()

plt.plot(t,dcross(1,t,1,0.5))
#fig.savefig('dcross.png')

plt.show()

制作中(如果这是您要找的):