In [1]:
# Необходмые команды импорта.
import sys
sys.path.append('../physlearn/')
sys.path.append('../source')
import numpy as np
from numpy import linalg as LA
import tensorflow as tf
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 lagaris import LagarisSolver
from visualiser import Visualiser

n_sig = 7
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)

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

%matplotlib inline


D:\Anaconda\lib\site-packages\h5py\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters

In [2]:
#optimisation_result = opt(J_quad, dim, int(35), 1e-6)
optimisation_result = opt(J_trapz, dim, int(4e3), 1e-6)
print("J after optimisation: ", J_trapz(optimisation_result.x))
print("Информация: ", optimisation_result)


.    1495 (37%) 326.900 it\s
J after optimisation:  [9.77299132e-07]
Информация:  Is converge: True
Amount of iterations: 1495
Total time: 4.44 s
Reached function value: 9.77299131522661e-07
Reason of break: Minimum cost reached


In [3]:
psi_list = np.abs(lagar.calc_psi(train_x, optimisation_result.x[-1]))

%matplotlib inline
H_psi_list = lagar.calc_H_psi(train_x, optimisation_result.x[-1])
plt.title('Difference between trial function and real:')
plt.plot(train_x[0], psi_list)
Visualiser.show_wf(0, train_x)
plt.plot(train_x[0], psi_list - d1_osc.wf(0, train_x), 'g--')


Out[3]:
[<matplotlib.lines.Line2D at 0x186515a0a58>]

In [4]:
err = psi_list - d1_osc.wf(0, train_x)
print(math_util.MSE(err))
print(math_util.std_err(err))


2.294851785647085e-09
4.8024823832763035e-05