def mmx(f,g,L):
    return max([abs(f(t)-g(t)) for t in L])

import numpy as np

def sub(f,a,b,e):
    p = 1
    L = np.arange(a,b,p)
    while max([abs(f(t)-f(t+p)) for t in L]) > e :
        p *= 0.1
        L = np.arange(a,b,p)
    return np.arange(a,b+p,p)

from numpy.polynomial import Polynomial

e = 0.07
S = sub(np.sqrt,0,1,e)
P = Polynomial([0])
X = Polynomial([0,1])
while mmx(P,np.sqrt,S) > e:
    P = P + (X-P*P)/2

import matplotlib.pyplot as plt

X = np.arange(-1,1,0.01)
Y = [P(t*t) for t in X]
plt.plot(X,Y)
plt.show()