def test_jacobian(): ad1 = ad.AD_Object(1,'x', 2) ad2 = ad.AD_Object(1, {'x':'x', 'y':'y'},{'x':4, 'y':5}) ad3 = ad.AD_Object(1, {'x':'x', 'y':'y'},{'x':6, 'y':7})\ assert ad.jacobian(ad1, ['x']) == [2] res = ad.jacobian([ad1, ad2, ad3], ['x','y']) print(np.sum(res - np.array([[2, 0],[4,5],[6,7]]))) assert np.sum(res - np.array([[2, 0],[4,5],[6,7]])) == 0 with pytest.raises(TypeError): ad.jacobian(res, 'x')
def test_mul3(): x = ad.AD_Object(2, "x", 1) y = ad.AD_Object(3, "y", 1) f = x*y assert (f.derivative('x'), f.derivative('y'), f.val) == (3, 2, 6)
def test_sub3(): x = ad.AD_Object(2, "x", 1) y = ad.AD_Object(3, "y", 1) f = 2*x**2 - y assert (f.derivative('x'), f.derivative('y'), f.val) == (8, 1, 5)
def test_repr_AD_Object(): ad1 = repr(ad.AD_Object(1, 'x')) val = 1 der = 1 assert ad1 == "AD Object: Value = %.3f, Derivative: d(x)= %.3f ; "%(val, der)
def test_AD_object_ge2(): ad1 = ad.AD_Object(1,'x',1) with pytest.raises(AssertionError): ad1 >= 1
def test_AD_object_ge(): ad1 = ad.AD_Object(1,'x',1) ad2 = ad.AD_Object(2,'x',1) assert(ad2 >= ad1)
def test_AD_object_le(): ad1 = ad.AD_Object(1,'x',1) ad2 = ad.AD_Object(2,'x',1) assert(ad1 <= ad2)
def test_AD_object_eq4(): ad1 = ad.AD_Object(1, 'x', 2) ad2 = ad.AD_Object(1, 'x', 4) assert((ad1 == ad2) == False)
def test_AD_object_derivative(): with pytest.raises(AssertionError): ad1 = ad.AD_Object(1,'x') ad1.derivative(1)
def test_AD_object_eq3(): ad1 = ad.AD_Object(1, 'x', 1) ad2 = ad.AD_Object(1, 'y', 1) assert((ad1 == ad2) == False)
def test_AD_object_input2(): with pytest.raises(TypeError): ad1 = ad.AD_Object(value = 1, label = 'x', der_initial = '1')
def test_AD_object_input1(): x = 1 with pytest.raises(TypeError): ad1 = ad.AD_Object(value = 1, label = x, der_initial= 1)
def test_input_AD_Object(): with pytest.raises(AssertionError): ad.AD_Object(value = '1', label = 'x')
def test_truediv3(): x = ad.AD_Object(2, "x", 1) y = ad.AD_Object(1, "y", 1) f = x/y assert (f.derivative('x'), f.derivative('y'), f.val) == (1, -2, 2)
def test_AD_object_ne(): ad1 = ad.AD_Object(1,'x',1) ad1 == ad1 assert((ad1 != ad1) == False)
def test_pow3(): x = ad.AD_Object(2, "x", 1) y = ad.AD_Object(1, "y", 1) f = x**y assert (f.derivative('x'), f.derivative('y'), f.val) == (1, 2*math.log(2), 2)
def test_sqrt(): ad0 = ad.AD_eval('sqrt(x)','x', 4) ad1 = ad.AD_Object(4, 'x').sqrt() assert (ad0.derivative('x'), ad0.val) == (1/4,2) assert (ad1.der['x'], ad1.val) == (1/4,2)