#This is a program to evaluate my business for the quadratic nonlinearity
from numpy import *
from GenRK import GenRK
from math import sin
from pylab import *

partition_number = raw_input("Number of partitions: ")
arpha = raw_input("Parameter value: ")
steps = raw_input("Time steps: ")

n = int(partition_number)
arpha = float(arpha)
steps=int(steps)
t_init = 0
x_init = []
h=.1

def dynamic(t,x):
	y = []
	y.append(0)
	for i in range(1,n):
		placeholder=x[i+n+1]
		y.append(placeholder)
	y.append(0)
	y.append(0)
	for k in range(1,n):
		a = (x[k+1]-x[k]) + (x[k-1]-x[k])
		b = arpha * ( (x[k+1] - x[k])**2 - (x[k] - x[k-1])**2)
		c = a+b
		y.append(c)
	y.append(0)
	work_dammit = array(y)
	return work_dammit

for k in range(n+1):
	blah = sin(2*pi*(float(k)/(n)))
	x_init.append(blah)

for k in range(n+1):
	blah = 0
	#blah = -.1*abs(sin(2*pi*(float(k)/n)))
	x_init.append(blah)

x_init = array(x_init)
N = range(n+1)

for l in range(steps):
	x_init = GenRK(t_init,x_init,dynamic,h,1)
	xpl=[]
	for i in range(n+1):
		xpl.append(x_init[i])
	if mod(l,1)==0:
		plot(N,xpl)
		show()