python - 在 python 中使用 genlaguerre 的错误?
问题描述
我正在尝试在 Python 中绘制以下方程的图形。
二维量子环径向微分方程的解
贝塔参数是
这是我的尝试
import numpy as np
from scipy.special import gamma, genlaguerre
import matplotlib.pyplot as plt
from scipy import exp, sqrt
m = 0.067*9.1*10E-31
R = 5E-9
r = np.linspace(0, 20E-9)
#Definição do parâmetro beta
def beta(gama):
flux = np.linspace(0,1.0)
beta = sqrt((m-flux)**2+(gama**4)/4)
return beta
def Rn(n,gama):
raiz = sqrt((gamma(n+1)/((2**beta(gama)) * gamma(n+beta(gama)+1))))
eval_g = genlaguerre((n,beta(gama)),((gama * r/R)**2/2))
exp_g = exp(-((gama * r/R)**2)/4)
return (1/R) * raiz * (gama * r/R)**beta(gama) * exp_g * eval_g
sol1 = Rn(0,1.5)
sol2 = Rn(0,2.0)
sol3 = Rn(0,2.5)
sol4 = Rn(0,3.0)
fig, ax = plt.subplots()
ax.plot(r/R, sol1, color = 'red', label = '$\gamma$ = 1.5')
ax.plot(r/R, sol2, color = 'green', label = '$\gamma$ = 2.0')
ax.plot(r/R, sol3, color = 'blue', label = '$\gamma$ = 2.5')
ax.plot(r/R, sol4, color = 'black', label = '$\gamma$ = 3.0')
ax.legend()
ax.set_xlabel('R/r')
ax.set_ylabel('$R_0(r)$')
错误使用genlaguerre
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
这里是文章的链接
解决方案
我不喜欢这个话题,但至少有以下错误(我假设静默设置 n=0 是故意的):
- 与发布的 beta 函数图像相反,您在函数定义中添加了除以 4。
正确版本:
def beta(gama):
return np.sqrt((m-flux)**2+(gama**4))
这不是分布式而不是固定峰值的原因,但我告诉我在这里看到的内容。
- 由于振幅函数定义中缺少括号而乘积而不是除法:正确版本:
def amplitude(gama):
return np.sqrt(gamma(1)/((2**beta(gama)*gamma(beta(gama)+1))))
- 在 Rn 函数的定义中,缺少引入的 1/R。
然而,不幸的是,所有这一切并没有改变峰值发生在相等的 x 位置......
推荐阅读
- tweepy - api.user_timeline 没有抓取完整的推文
- javascript - jQuery 数据表中的下拉过滤
- javascript - 我正在尝试编写一个函数 isUniform()
- kubernetes - 在 helm 模板中传递多个变量
- flutter - Flutter - 相对于选项卡文本包装选项卡指示器宽度
- r - 使用 dplyr 以长格式总结多种手段和 sd
- python - 在列上拟合图表以创建条形图迷你图
- azure-iot-edge - Azure IoT Edge 模块证书处理
- azure - 无法创建 Azure AD 动态组
- python - Tensorflow 无法识别 cudart64_101.dll