Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import pi, exp, sqrt
- # ввод данных
- K = 10
- a = [[0 for j in range(10)] for i in range(3)]
- coef_file = open("expan-coef-3.dat")
- coeffs = [float(x) for x in coef_file.readline().split()]
- for i in range(len(coeffs)):
- a[i % 3][i % 10] = coeffs[i]
- coef_file.close()
- def factorial(n):
- res = 1
- for i in range(2, n + 1):
- res *= i
- return res
- def c(m):
- return (2**m * factorial(m) * sqrt(pi)) ** (-1/2)
- def h(m, x): # полином Эрмита степени m в точке x
- if m == 0:
- return 1
- elif m == 1:
- return 2*x
- elif m == 2:
- return 4*x**2 - 2
- else:
- return 2*x*h(m-1, x) + 2*(m-1)*h(m-2, x)
- def fi(m, x): # функция фи
- return c(m) * exp((-x**2) / 2) * h(m, x)
- def psi(n, x, a, K): # волновая функция
- return sum([a[n][k] * fi(k, x) for k in range(K)])
- #расчёт фунции фи
- f = [dict() for i in range(10)] # массив для значений функции фи
- for k in range(10):
- x = -4.0
- while x <= 4.0:
- f[k][x] = fi(k, x)
- x += 0.25
- # расчёт волновой функции
- wave = [dict() for i in range(3)] # значения волновой функции
- for n in range(3):
- x = -4.0
- while x <= 4.0:
- wave[n][x] = psi(n, x, a, K)
- x += 0.25
- # вывод посчитанных значений
- x = -4.0
- while x <= 4.0:
- print(wave[0][x], wave[1][x], wave[2][x])
- x += 0.25
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement