from scipy.integrate import odeint
import matplotlib.pyplot as plt
import numpy as np
import pylab as pl
import math

#plot f(x) vs. x
x = np.arange(-4.0,4.0,0.01)
fx = 4*x**2 - 16
zerox = 0.*x

#Create plot env
f = plt.figure()
plt.grid(True)
f.set_figwidth(8)
f.set_figheight(8)

#plot some stuff
plt.plot(x,fx,'g-',x,zerox,'b-')

plt.xlabel('x',fontsize = 15)
plt.ylabel('y', fontsize = 15)
plt.savefig("2024-09-09/ex1.png")

#Integrating stuff!
#Define the integration:
def dx_dt(xx,t):
    return[4.*xx[0]**2 -16.]

f1 = plt.figure()
f.set_figwidth(12)
f.set_figheight(12)

# forward integration in time, so we need a time span
ts = np.linspace(0,3,1000)
ic = 1
xs = odeint(dx_dt, ic, ts)
#print(xs)

plt.plot(ts,xs)
plt.savefig("2024-09-09/ex2.png")
#plt.show()

#Let's do the same thing in the time domain!
ics = np.linspace(-4,2.0001,20)
ts = np.linspace(0,0.5,1000)

# loop over the initial conditions
for r in ics:
    x0 = [r]
    xs = odeint(dx_dt,x0,ts)
    plt.plot(ts,xs[:,0],"b")

x1 = ts - ts - 2
x2 = ts - ts + 2
f2 = plt.figure()
plt.plot(ts,x1,'r',ts,x2,'r--')
plt.grid(True)
plt.xlabel('Time, some units.')
plt.ylabel('Voltage shrug?')
plt.savefig('2024-09-09/ex3')

