Advertisement
Artyom_Kopan

Волновая функция (код)

May 1st, 2022
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.41 KB | None | 0 0
  1. from math import pi, exp, sqrt
  2.  
  3. # ввод данных
  4. K = 10
  5. a = [[0 for j in range(10)] for i in range(3)]
  6. coef_file = open("expan-coef-3.dat")
  7. coeffs = [float(x) for x in coef_file.readline().split()]
  8. for i in range(len(coeffs)):
  9.     a[i % 3][i % 10] = coeffs[i]
  10. coef_file.close()
  11.  
  12. def factorial(n):
  13.     res = 1
  14.     for i in range(2, n + 1):
  15.         res *= i
  16.     return res
  17.  
  18. def c(m):
  19.     return (2**m * factorial(m) * sqrt(pi)) ** (-1/2)
  20.  
  21. def h(m, x): # полином Эрмита степени m в точке x
  22.     if m == 0:
  23.         return 1
  24.     elif m == 1:
  25.         return 2*x
  26.     elif m == 2:
  27.         return 4*x**2 - 2
  28.     else:
  29.         return 2*x*h(m-1, x) + 2*(m-1)*h(m-2, x)
  30.        
  31. def fi(m, x): # функция фи
  32.     return c(m) * exp((-x**2) / 2) * h(m, x)
  33.    
  34. def psi(n, x, a, K): # волновая функция
  35.     return sum([a[n][k] * fi(k, x) for k in range(K)])
  36.  
  37.  
  38. #расчёт фунции фи
  39. f = [dict() for i in range(10)] # массив для значений функции фи
  40. for k in range(10):
  41.     x = -4.0
  42.     while x <= 4.0:
  43.         f[k][x] = fi(k, x)
  44.         x += 0.25
  45.  
  46. # расчёт волновой функции
  47. wave = [dict() for i in range(3)] # значения волновой функции
  48. for n in range(3):
  49.     x = -4.0
  50.     while x <= 4.0:
  51.         wave[n][x] = psi(n, x, a, K)
  52.         x += 0.25
  53.  
  54. # вывод посчитанных значений
  55. x = -4.0
  56. while x <= 4.0:
  57.     print(wave[0][x], wave[1][x], wave[2][x])
  58.     x += 0.25
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement