Лучший способ построить математическую функцию с несколькими параметрами в python? - PullRequest
0 голосов
/ 06 января 2020

Я (теоретик) студент-физик, и я действительно новичок в этом программировании. Я пытаюсь построить радиальную волновую функцию Шредингера для двумерной квантовой системы в Python, но у меня много проблем

import numpy as np
import scipy.special as ss
import matplotlib.pyplot as plt


#beta parameter definition
def beta(m, flux, gama):
    flux = np.linspace(0,1.0)
    return np.sqrt((m-flux)**2+gama**4)

#radial wave function definition
beta = beta(0.067*9.1E-31, 0.5, 1.5)
R=5.0E-9
r=np.linspace(0, 0.6)
ro = r/R
def radial (n,gama,beta, ro, R,r):
    return (1/R)*np.sqrt((ss.gamma(n+1)/2**beta*ss.gamma(n+beta+1)))*(gama*ro)**beta*np.exp(-(gama*ro)**2/4)*ss.eval_genlaguerre(n,beta,((gama*ro)**2/2))

sol = radial(0, 1.5, beta, ro, R,r)
plt.plot(ro, sol, 'b-')
plt.xlabel('r/R')
plt.ylabel('R(r)')
plt.title('Solução radial em fução da coordenada radial')
plt.legend("gamma=1,5")
plt.grid()
plt.show()

Я хотел бы спросить: как лучше всего передать несколько параметры математической функции? Даже с несколькими параметрами и специальными функциями я получаю прямую линию на графике. Спасибо за любые советы или помощь.

Ответы [ 2 ]

0 голосов
/ 06 января 2020

Функция ss.genlaguerre принимает в качестве третьего аргумента значение bool, а не массив.

https://docs.scipy.org/doc/scipy/reference/generated/scipy.special.genlaguerre.html#scipy .special.genlaguerre

0 голосов
/ 06 января 2020

Вы вводите ненулевое значение в логический аргумент в функции genlaguerre https://docs.scipy.org/doc/scipy/reference/generated/scipy.special.genlaguerre.html

def genlaguerre(n: int,
                alpha: float,
                monic: Optional[bool] = False) -> orthopoly1d)

Вы вводите:

ss.genlaguerre(n=n,
               alpha=beta,
               monic=((gama*ro)**2/2)  #  <--- this is your issue
               )
...