Ejemplo n.º 1
0
def f(value):
    """
    f takes in a dictionary of independent variables
    """
    X = ad.Variable(value['x'], name='x')
    Y = ad.Variable(value['y'], name='y')
    Z1 = ad.exp(-X**2 - Y**2)
    Z2 = ad.exp(-(X - 1)**2 - (Y - 1)**2)
    return (Z1 - Z2) * 2
 def test_hyberbolic(self):
     x1 = Variable(1, name='x1')
     x2 = Variable(1, name='x2')
     x3 = Variable(1, name='x3')
     x4 = AutoDiff.sinh(x1) + AutoDiff.cosh(x2) + AutoDiff.tanh(x3)
     assert x4.val == 3.4798759844148099
     assert x4.der == {'x1': 1.5430806348152437, 
         'x2': 1.1752011936438014,
         'x3': 0.41997434161402614}
 def test_trigonometric(self):
     x1 = Variable(np.pi/4, name='x1')
     x2 = Variable(np.pi/4, name='x2')
     x3 = Variable(np.pi/4, name='x3')
     x4 = AutoDiff.sin(x1) + AutoDiff.cos(x2) + AutoDiff.tan(x3)
     assert x4.val == 2**0.5 + 1
     assert x4.der == {'x1': 0.70710678118654757, 
         'x2': -0.70710678118654746,
         'x3': 1.9999999999999998}
 def test_inverse_trigonometric(self):
     x1 = Variable(0.1, name='x1')
     x2 = Variable(0.2, name='x2')
     x3 = Variable(0.3, name='x3')
     x4 = AutoDiff.arcsin(x1) + AutoDiff.arccos(x2) + AutoDiff.arctan(x3)
     assert x4.val == 1.7610626216439926
     assert x4.der == {'x1': 1.005037815259212, 
         'x2':  -1.0206207261596576,
         'x3': 0.9174311926605504}
Ejemplo n.º 5
0
def test_gmres_autodiff():
    b = [1, 2, 3]
    x1 = ad.Variable(1, name='x1')
    x2 = ad.Variable(1, name='x2')
    x3 = ad.Variable(1, name='x3')
    f1 = 2*x1+3*x2+2*x3
    f2 = 3*x1+2*x2+1*x3
    f3 = 3*x1+3*x2+3*x3
    F = [f1, f2, f3]
    x = gmres_autodiff(F, b)
    np.testing.assert_allclose(x, [1, -1, 1])
 def test_hyperbolics(self):
     x1 = Variable(1, name='x1')
     x2 = Variable(1, name='x2')
     x = AutoDiff.sinh(x1)
     y = AutoDiff.cosh(x2)
     z = AutoDiff.tanh(x2)
     z1 = x*y+z
     assert z1.der2['x1x1'][0] == 1.8134302039235093
     assert z1.der2['x1x2'][0] == 1.8134302039235093
     assert z1.der2['x2x1'][0] == 1.8134302039235093
     assert z1.der2['x2x2'][0] == 1.1737301954742847
    def test_exp_log(self):
        x1 = Variable(1, name='x1')
        x2 = Variable(1, name='x2')
        x = AutoDiff.exp(x1)
        y = AutoDiff.log(x2)
        z1 = x*y

        assert z1.der2['x1x1'][0] == 0.
        assert z1.der2['x1x2'][0] == 2.7182818284590451
        assert z1.der2['x2x1'][0] == 2.7182818284590451
        assert z1.der2['x2x2'][0] == -2.7182818284590451
 def test_inverse_trigonometric(self):
     x1 = Variable(0.5, name='x1')
     x2 = Variable(0.6, name='x2')
     x = AutoDiff.arcsin(x1)
     y = AutoDiff.arccos(x2)
     z = AutoDiff.arctan(x2)
     z1 = x*y+z
     assert z1.der2['x1x1'][0] == 0.71383219164197809
     assert z1.der2['x1x2'][0] == -1.4433756729740643
     assert z1.der2['x2x1'][0] == -1.4433756729740643
     assert z1.der2['x2x2'][0] == -1.262381242489897    
 def test_trigonometric(self):
     x1 = Variable(1, name='x1')
     x2 = Variable(1, name='x2')
     x = AutoDiff.sin(x1)
     y = AutoDiff.cos(x2)
     z = AutoDiff.tan(x2)
     z1 = x*y+z
     assert z1.der2['x1x1'][0] == -0.45464871341284091
     assert z1.der2['x1x2'][0] == -0.45464871341284091
     assert z1.der2['x2x1'][0] == -0.45464871341284091
     assert z1.der2['x2x2'][0] == 10.215210231562478
    def test_pow(self):
        x1 = Variable(1, name='x1')
        x2 = Variable(1, name='x2')
        x = AutoDiff.sin(x1)
        y = AutoDiff.sin(x2)
        z1 = x**y
        z2 = 2**x
        z3 = x**2

        assert z1.der2['x1x1'][0] == -0.77527835938046719
        assert z1.der2['x1x2'][0] == 0.25644885963975589
        assert z1.der2['x2x1'][0] == 0.25644885963975589
        assert z1.der2['x2x2'][0] == 0.13312782635352052

        assert z2.der2['x1x1'][0] == -0.79381233880392665
        assert z3.der2['x1x1'][0] == -0.83229367309428459
 def test_add_sub(self):
     x1 = Variable(1, name='x1')
     x2 = Variable(1, name='x2')
     x = AutoDiff.sin(x1)
     y = AutoDiff.sin(x2)
     z1 = x+y
     z2 = x-y
     z3 = +x
     z4 = -x
     assert z1.der2 == {'x1x1': np.array([-0.8414709848078965]), 
         'x2x2': np.array([-0.8414709848078965]),
         'x1x2':np.array([0.0]),'x2x1':np.array([0.0])}
     assert z2.der2 == {'x1x1': np.array([-0.8414709848078965]), 
         'x2x2': np.array([0.8414709848078965]),
         'x1x2': np.array([0.0]),'x2x1':np.array([0.0])}
     assert z3.der2 == {'x1x1': np.array([-0.8414709848078965])}
     assert z4.der2 == {'x1x1': np.array([0.8414709848078965])}
    def test_mul_div(self):
        x1 = Variable(1, name='x1')
        x2 = Variable(1, name='x2')
        x = AutoDiff.sin(x1)
        y = AutoDiff.sin(x2)
        z1 = x*y
        z2 = x/y
        z3 = 1/x
        z4 = x/1
        assert z1.der2['x1x1'][0] == -0.70807341827357118
        assert z1.der2['x1x2'][0] == 0.29192658172642888
        assert z1.der2['x2x1'][0] == 0.29192658172642888
        assert z1.der2['x2x2'][0] == -0.70807341827357118

        assert z2.der2['x1x1'][0] == -1.0
        assert z2.der2['x1x2'][0] == -0.41228292743739203
        assert z2.der2['x2x1'][0] == -0.41228292743739203
        assert z2.der2['x2x2'][0] == 1.8245658548747841

        assert z3.der2['x1x1'][0] == 2.1683051321030673
        assert z4.der2['x1x1'][0] == -0.8414709848078965
 def test_sqrt(self):
     x1 = Variable(1, name='x1')
     z1 = AutoDiff.sqrt(x1)
     assert z1.der2['x1x1'][0] == -0.25
 def test_exp(self):
     x1 = Variable(1, name='x1')
     x2 = Variable(1, name='x2')
     x3 = AutoDiff.exp(x1 + x2)
     assert x3.val == np.exp(1+1)
     assert x3.der == {'x1': np.exp(1+1), 'x2': np.exp(1+1)}
 def test_sigmoid(self):
     x1 = Variable(0, name='x1')
     x2 = AutoDiff.sigmoid(x1)
     assert x2.val == 0.5
     assert x2.der == {'x1': 0.25}
Ejemplo n.º 16
0
def f1(values):
	x1 = ad.Variable(values['x1'], name='x1')
	f = 2 * (x1 ** 2) + 5
	return f
Ejemplo n.º 17
0
import AutoDiff.AutoDiff as ad
from AutoDiff.GMRes import gmres_autodiff
import numpy as np

# define variables and vector of vector functions
x1 = ad.Variable(1, name='x1')
x2 = ad.Variable(1, name='x2')
x3 = ad.Variable(1, name='x3')
f1 = 2 * x1 + 3 * x2 + 2 * x3
f2 = 3 * x1 + 2 * x2 + 1 * x3
f3 = 3 * x1 + 3 * x2 + 3 * x3
F = [f1, f2, f3]
b = [1, 2, 3]

# GMRES to get x
x = gmres_autodiff(F, b)
print(x)
Ejemplo n.º 18
0
def f2(values):
    x1 = ad.Variable(values['x1'], name='x1')
    x2 = ad.Variable(values['x2'], name='x2')
    return 2 * (x1**2) + ad.sin(x2)
 def test_log(self):
     x1 = Variable(1, name='x1')
     x2 = Variable(1, name='x2')
     x3 = AutoDiff.log(x1 + x2)
     assert x3.val == np.log(1+1)
     assert x3.der == {'x1': 1/2, 'x2': 1/2}
 def test_sqrt(self):
     x1 = Variable(1, name='x1')
     x2 = AutoDiff.sqrt(x1)
     assert x2.val == 1
     assert x2.der == {'x1': 0.5}
Ejemplo n.º 21
0
 def test_sigmoid(self):
     x1 = Variable(0, name='x1')
     z1 = AutoDiff.sigmoid(x1)
     assert z1.der2['x1x1'][0] == 0