In [3]:
# Необходмые команды импорта.
# Необходмые команды импорта.
import sys
sys.path.append('../../physlearn/')
sys.path.append('../../source')

import numpy as np
from numpy import linalg as LA
import tensorflow as tf
import matplotlib
matplotlib.use('Agg')
from matplotlib import pylab as plt
import numpy.random as rand
from physlearn.NeuralNet.NeuralNet import NeuralNet
from physlearn.Optimizer.NelderMead.NelderMead import NelderMead
import d1_osc
import ann_constructor
import math_util
from matplotlib import rc
from lagaris import LagarisSolver
from visualiser import Visualiser

n_sig = 25
a = -5
b = 5
m = 200
train_x = np.linspace(a, b, m, endpoint = True).reshape(1, m) 
trapz_x = np.linspace(a, b, m, endpoint = True)

lagar = LagarisSolver()
lagar.define_psi(n_sig)
net_x = lagar.get_net_x()
dim = lagar.get_dim()
sess = lagar.get_sess()

potential = tf.square(net_x)
lagar.define_H_psi(potential)

In [4]:
iterations = int(1e4)
max_eps = 1e-12


#solver
lagar = LagarisSolver()
lagar.define_psi(n_sig)
net_x = lagar.get_net_x()
dim = lagar.get_dim()
sess = lagar.get_sess()

potential = tf.square(net_x)
lagar.define_H_psi(potential)

#J_quad = lagar.get_cost_func_quad(train_x, a, b)
J_trapz = lagar.get_cost_func('trapz', train_x, trapz_x)

opt_nm = NelderMead(-2.5,2.5)
opt_nm.set_epsilon_and_sd(0.3, 100)

def opt(J, dim, n_it, eps):
    optimisation_result = opt_nm.optimize(J, dim+1, n_it, eps)
    return optimisation_result


optimisation_result = opt(J_trapz, dim, iterations, max_eps)
print("J after optimisation: ", J_trapz(optimisation_result.x))
print("Информация: ", optimisation_result)

m_show = 1000
show_x = np.linspace(a, b, m_show, endpoint = True).reshape(1, m_show) 
psi_list = np.abs(lagar.calc_psi(show_x, optimisation_result.x[-1]))
H_psi_list = lagar.calc_H_psi(show_x, optimisation_result.x[-1])
psi_true = d1_osc.wf(0, show_x)
error = psi_list - psi_true

#plt.switch_backend('Agg')
fig = plt.figure(figsize=(20,10))
plt.grid(True)
rc('text', usetex=True)
plt.title('$Psi_0(x)$ and $Psi_t(x)$ with error', fontsize=26)
plt.xlabel('x, dimensionless units', fontsize=20)
plt.ylabel('Value of wave functions', fontsize=20)
plt.plot(show_x[0], psi_list, 'b--', label= '$Psi_t(x)$')
plt.plot(show_x[0], psi_true, 'r', label= '$Psi_0(x)$')
plt.plot(show_x[0], error, 'b-..', label = 'Error')
plt.legend()
fig.savefig('out_graph.png', dpi=fig.dpi)
plt.close()


...  10000 (100%) 376.817 it\s
J after optimisation:  [9.50982856e-09]
Информация:  Is converge: False
Amount of iterations: 10000
Total time: 26.51 s
Reached function value: 9.509828562415613e-09
Reason of break: Maximum iterations reached