Exemple #1
0
 def testDerivative2(self):
     conec = [(1, 3), (2, 3), (0, 3), \
              (1, 4), (0, 4), \
              (3, 4), (4, 5), (0, 5),
              (4, 6), (3, 6), (5, 6) ]
     net = ffnet(conec)
     y1n, y2n = net.derivative([1, 1])[0]
     from scipy import derivative
     def func1(x):
         return net([x, 1])[0]
     def func2(x):
         return net([1, x])[0]
     y1 = derivative(func1, 1, dx=0.001)
     y2 = derivative(func2, 1, dx=0.001)
     self.assertAlmostEqual(y1n, y1, 7)
     self.assertAlmostEqual(y2n, y2, 7)
Exemple #2
0
def newtonsMethod(f, x0, tol=1e-7, df=None):
	if df is None:
        df = lambda x: sp.derivative(f,x)
    
    x = x0
	while(sp.absolute(float(f(x))/df(x)) >= tol):
		x -= float(f(x))/df(x)
	return x
Exemple #3
0
def diff(f, x, i, n=1, eps=0.01, n_points=3):
    """Takes the i-th derivative of a multi-dimmensional function
    """
    def func_for_diff(x_i):
        return f(np.concatenate((x[:i],[x_i],x[i+1:])))

    x = np.atleast_1d(x)

    return derivative(func=func_for_diff, x0=x[i], dx=eps, n=n, order=n_points)
Exemple #4
0
    def diff(self, i, order=1):
        """
        N.diff(i, order=1)

        Derivative wrt index i to given order.
        """

        old_val = copy(self[i])
        d = derivative(func=self.func_for_diff, x0=old_val, dx=self.eps[i], n=order, args=[i], order=self.diff_order)
        self[i] = old_val
        return d
Exemple #5
0
 def ContinuousParSpread(self, parameters):
     surv_prob   = lambda t: self.SurvivalProbability(parameters, t)
     numerator   = lambda t: self.DiscountCurve.DF(0, t) * \
                     derivative( surv_prob, t, dx = 0.0001)
     denominator = lambda t: self.DiscountCurve.DF(0, t) * \
                     self.SurvivalProbability(parameters, t) 
     
     cts_ps = (1 - self.R) * -quad(numerator, 0, self.maturity)[0] \
                 / quad(denominator, 0, self.maturity)[0] * 10000
     
     return cts_ps
 def grad_Sy(r1,r2,r3,r4,t1,hx,hy,Ox,Oy,sig,t2):
     return array([
     derivative(lambda a: Sy(a,r2,r3,r4,t1,hx,hy,Ox,Oy,sig,t2),r1,0.01*r1),
     derivative(lambda a: Sy(r1,a,r3,r4,t1,hx,hy,Ox,Oy,sig,t2),r2,0.01*r2),
     derivative(lambda a: Sy(r1,r2,a,r4,t1,hx,hy,Ox,Oy,sig,t2),r3,0.01*r3),
     derivative(lambda a: Sy(r1,r2,r3,a,t1,hx,hy,Ox,Oy,sig,t2),r4,0.01*r4),
     derivative(lambda a: Sy(r1,r2,r3,r4,a,hx,hy,Ox,Oy,sig,t2),t1,0.02),
     derivative(lambda a: Sy(r1,r2,r3,r4,t1,a,hy,Ox,Oy,sig,t2),hx,0.01*hx),
     derivative(lambda a: Sy(r1,r2,r3,r4,t1,hx,a,Ox,Oy,sig,t2),hy,0.01*hy),
     0.0,
     1.0])
Exemple #7
0
	def jacobian( F,x):
	
		def replace( A,a,i):
			R=A.copy() #This line caused me a lot of problems
			R[i]=a
			return R
			
		J = sp.zeros((len(x),len(x)))
		for i in range(len(x)):
			for j in range(len(x)):
				#Is there a better way to do a partial derivative?
				J[i,j] = sp.derivative(lambda a: F(replace(x,a,i))[j],x[i])
		return J
Exemple #8
0
def get_eap_range(iap_v):
    """return the index range where the eap has a significant waveform
    
    based on the derivative of the iap, an index range is determined that will
    cover the course of the significant (that is non-zero) waveform for the eap.
    
    very heuristic.. might not work all the time
    """

    # this gets rid of apossible bump from 0 to x on the first samples and
    # extends the waveform for the derivative calculation
    my_iap = N.concatenate((iap_v[3:].copy(), N.ones(5) * iap_v[-1]))
    iap_func = lambda x: my_iap[x]
    der_1st = [N.derivative(iap_func, i) for i in xrange(iap_v.size)]
    der_1st = N.absolute(N.asarray(der_1st[1:]))
    start = stop = (der_1st > 1e-1).argmax()
    stop += (der_1st[stop:] > 1e-2).argmin()
    return start, stop
def newtonsMethod( *args):
	f = None
	df = None
	x0 = None
	tol = None
	if ( len(args) == 3 ):
		f = args[0]
		df = lambda x: sp.derivative(f,x)
		x0 = args[1]
		tol = args[2]
	else :
		f = args[0]
		df = args[1]
		x0 = args[2]
		tol = args[3]
		
	x = x0
	while( sp.absolute(float(f(x))/df(x)) >= tol):
		x -= float(f(x))/df(x)
	return x
Exemple #10
0
    def diff2(self, i, j):
        """
        N.diff2(i,j)

        Mixed second derivative. Differentiates wrt both indices.
        """

        old_val = copy(self[j])

        if not self.stochastic_indices[i][0] in self.stochastic_indices[j][0].moral_neighbors:
            return 0.

        def diff_for_diff(val):
            self[j] = val
            return self.diff(i)

        d = derivative(func=diff_for_diff, x0=old_val, dx=self.eps[j], n=1, order=self.diff_order)

        self[j] = old_val
        return d
Exemple #11
0
 def grad_Sx(r1, r2, r3, r4, t1, hx, hy, Ox, Oy, sig, t2):
     return array([
         derivative(
             lambda a: Sx(a, r2, r3, r4, t1, hx, hy, Ox, Oy, sig, t2), r1,
             0.01 * r1),
         derivative(
             lambda a: Sx(r1, a, r3, r4, t1, hx, hy, Ox, Oy, sig, t2), r2,
             0.01 * r2),
         derivative(
             lambda a: Sx(r1, r2, a, r4, t1, hx, hy, Ox, Oy, sig, t2), r3,
             0.01 * r2),
         derivative(
             lambda a: Sx(r1, r2, r3, a, t1, hx, hy, Ox, Oy, sig, t2), r4,
             0.01 * r4),
         derivative(
             lambda a: Sx(r1, r2, r3, r4, a, hx, hy, Ox, Oy, sig, t2), t1,
             0.02),
         derivative(
             lambda a: Sx(r1, r2, r3, r4, t1, a, hy, Ox, Oy, sig, t2), hx,
             0.01 * hx),
         derivative(
             lambda a: Sx(r1, r2, r3, r4, t1, hx, a, Ox, Oy, sig, t2), hy,
             0.01 * hy), 1.0, 0.0
     ])
Exemple #12
0
 def df (x1, y1):
     print 'df %.20g %.20g' % (x1, y1)
     dx = derivative (lambda x: f (x, y1), x1, derivx, order=dorder)
     dy = derivative (lambda y: f (x1, y), y1, derivy, order=dorder)
     print '   -> %.20g %.20g' % (dx, dy)
     return [dx, dy]
Exemple #13
0
 def df(x1, y1):
     dx = derivative(lambda x: f(x, y1), x1, derivx, order=dorder)
     dy = derivative(lambda y: f(x1, y), y1, derivy, order=dorder)
     return [dx, dy]
 def dSydt2(r1,r2,r3,r4,t1,hx,hy,Ox,Oy,sig,t2):
     return derivative(lambda a: Sy(r1,r2,r3,r4,t1,hx,hy,Ox,Oy,sig,a),t2,0.02)
Exemple #15
0
 def dSydt2(r1, r2, r3, r4, t1, hx, hy, Ox, Oy, sig, t2):
     return derivative(
         lambda a: Sy(r1, r2, r3, r4, t1, hx, hy, Ox, Oy, sig, a), t2, 0.02)
Exemple #16
0
hx = v[5]
hy = v[6]
Ox = v[7]
Oy = v[8]
t2 = thetas[0]

print "\nLet's make sure the forward equations are working..."
print "Sx:", sfbe.Sx(r1, r2, r3, r4, t1, hx, hy, Ox, Oy, sig, t2)
print "Sy:", sfbe.Sy(r1, r2, r3, r4, t1, hx, hy, Ox, Oy, sig, t2)

print "\nSome numerical derivatives we're surely gonna need..."
print "F**k doing them by hand! I *know* the forward equations are right!\n"

print "the gradient bits for Sx:"
print "1:", derivative(
    lambda a: sfbe.Sx(a, r2, r3, r4, t1, hx, hy, Ox, Oy, sig, t2), r1,
    0.01 * abs(r1))
print "2:", derivative(
    lambda a: sfbe.Sx(r1, a, r3, r4, t1, hx, hy, Ox, Oy, sig, t2), r2,
    0.01 * abs(r2))
print "3:", derivative(
    lambda a: sfbe.Sx(r1, r2, a, r4, t1, hx, hy, Ox, Oy, sig, t2), r3,
    0.01 * abs(r3))
print "4:", derivative(
    lambda a: sfbe.Sx(r1, r2, r3, a, t1, hx, hy, Ox, Oy, sig, t2), r4,
    0.01 * abs(r4))
print "5:", derivative(
    lambda a: sfbe.Sx(r1, r2, r3, r4, a, hx, hy, Ox, Oy, sig, t2), t1, 0.02)
print "6:", derivative(
    lambda a: sfbe.Sx(r1, r2, r3, r4, t1, a, hy, Ox, Oy, sig, t2), hx,
    0.01 * abs(hx))
Exemple #17
0
 def df(x1, y1):
     print 'df %.20g %.20g' % (x1, y1)
     dx = derivative(lambda x: f(x, y1), x1, derivx, order=dorder)
     dy = derivative(lambda y: f(x1, y), y1, derivy, order=dorder)
     print '   -> %.20g %.20g' % (dx, dy)
     return [dx, dy]
Exemple #18
0
 def df(x1, y1):
     dx = derivative(lambda x: f(x, y1), x1, derivx, order=dorder)
     dy = derivative(lambda y: f(x1, y), y1, derivy, order=dorder)
     return [dx, dy]
Exemple #19
0
    def F( z, OmegaM ):
	d = []
	for i in xrange( 0, len(OmegaM) ):
	    f = lambda x: (Delta(x,[OmegaM[i]])[0])
	    d.append( -((1+z)/Delta(z,[OmegaM[i]])[0])*sp.derivative( f , z, dx = 0.00001 ) )
	return d
Exemple #20
0
 def marginal_cost(self, quantity):
     return derivative(self.cost_function, quantity)
Exemple #21
0
 def marginal_cost(self, quantity):
     return derivative(self.cost_function, quantity)
t1=v[4]
hx=v[5]
hy=v[6]
Ox=v[7]
Oy=v[8]
t2=thetas[0]

print "\nLet's make sure the forward equations are working..."
print "Sx:", sfbe.Sx(r1,r2,r3,r4,t1,hx,hy,Ox,Oy,sig,t2)
print "Sy:", sfbe.Sy(r1,r2,r3,r4,t1,hx,hy,Ox,Oy,sig,t2)

print "\nSome numerical derivatives we're surely gonna need..."
print "F**k doing them by hand! I *know* the forward equations are right!\n"

print "the gradient bits for Sx:"
print "1:",derivative(lambda a: sfbe.Sx(a,r2,r3,r4,t1,hx,hy,Ox,Oy,sig,t2),r1,0.01*abs(r1))
print "2:",derivative(lambda a: sfbe.Sx(r1,a,r3,r4,t1,hx,hy,Ox,Oy,sig,t2),r2,0.01*abs(r2))
print "3:",derivative(lambda a: sfbe.Sx(r1,r2,a,r4,t1,hx,hy,Ox,Oy,sig,t2),r3,0.01*abs(r3))
print "4:",derivative(lambda a: sfbe.Sx(r1,r2,r3,a,t1,hx,hy,Ox,Oy,sig,t2),r4,0.01*abs(r4))
print "5:",derivative(lambda a: sfbe.Sx(r1,r2,r3,r4,a,hx,hy,Ox,Oy,sig,t2),t1,0.02)
print "6:",derivative(lambda a: sfbe.Sx(r1,r2,r3,r4,t1,a,hy,Ox,Oy,sig,t2),hx,0.01*abs(hx))
print "7:",derivative(lambda a: sfbe.Sx(r1,r2,r3,r4,t1,hx,a,Ox,Oy,sig,t2),hy,0.01*abs(hy))
print "8:",1.0
print "9:",0.0

print "\nthe gradient bits for Sy:"
print "1:", derivative(lambda a: sfbe.Sy(a,r2,r3,r4,t1,hx,hy,Ox,Oy,sig,t2),r1,0.01*abs(r1))
print "2:", derivative(lambda a: sfbe.Sy(r1,a,r3,r4,t1,hx,hy,Ox,Oy,sig,t2),r2,0.01*abs(r2))
print "3:", derivative(lambda a: sfbe.Sy(r1,r2,a,r4,t1,hx,hy,Ox,Oy,sig,t2),r3,0.01*abs(r3))
print "4:", derivative(lambda a: sfbe.Sy(r1,r2,r3,a,t1,hx,hy,Ox,Oy,sig,t2),r4,0.01*abs(r4))
print "5:", derivative(lambda a: sfbe.Sy(r1,r2,r3,r4,a,hx,hy,Ox,Oy,sig,t2),t1,0.02)