from __future__ import division
from scipy import *
from scipy import optimize
import pylab

def f(x):
    return 4*x**3 - 6*x**2 + 1

def g(x):
    return -(1 - x[0]**2 - x[1]**2)

# Plot the function
x = linspace(-1, 1.5, 200)
pylab.plot(x, f(x))
pylab.plot([-1, 1.5], [0, 0], 'k')
pylab.plot([0, 0], [-1, 1.5], 'k')
pylab.ylim(-1, 1.5)
pylab.show()

# Find the minimum of a function
print optimize.fmin(f, 0.5, xtol=1e-10)

# Find the root of a function
print optimize.fsolve(f, 0.1)


