*************************************
Elman Recurrent network (newelm)
*************************************

Use  :py:func:`neurolab.net.newelm`

Task: Detect the amplitudes

::

	import neurolab as nl
	import numpy as np

	# Create train samples
	i1 = np.sin(np.arange(0, 20))
	i2 = np.sin(np.arange(0, 20)) * 2

	t1 = np.ones([1, 20]) * 2
	t2 = np.ones([1, 20])

	input = np.array([i1, i2, i1, i2]).reshape(20 * 4, 1)
	target = np.array([t1, t2, t1, t2]).reshape(20 * 4, 1)

	# Create network with 2 layers
	net = nl.net.newelm([[-2, 2]], [10, 1], [nl.trans.TanSig(), nl.trans.PureLin()])
	# Set initialized functions and init
	net.layers[0].initf = nl.init.InitRand([-0.1, 0.1], 'wb')
	net.layers[1].initf= nl.init.InitRand([-0.1, 0.1], 'wb')
	net.init()
	# Train network
	error = net.train(input, target, epochs=500, show=100, goal=0.01)
	# Simulate network
	output = net.sim(input)

	# Plot result
	import pylab as pl
	pl.subplot(211)
	pl.plot(error)
	pl.xlabel('Epoch number')
	pl.ylabel('Train error (default MSE)')

	pl.subplot(212)
	pl.plot(target.reshape(80))
	pl.plot(output.reshape(80))
	pl.legend(['train target', 'net output'])
	pl.show()

:Result:
	.. image:: _static/newelm.png