예제 #1
0
 def test_mul_epb(self):
     x = UTPS(numpy.array([1.,2.,3.]), P = 1)
     y = UTPS(numpy.array([5.,7.,11.]), P = 1)
     z = mul(x,y)
     
     zbar = UTPS(numpy.random.rand(3), P = 1)
     xbar = UTPS(numpy.zeros(3), P = 1)
     ybar = UTPS(numpy.zeros(3), P = 1)
     
     epb_mul(x,y,z, zbar, xbar, ybar)
     
     assert_array_almost_equal( (zbar*x).data, ybar.data)
     assert_array_almost_equal( (zbar*y).data, xbar.data)
예제 #2
0
 def test_compare_pushforward_pullback_derivatives(self):
     x = UTPS(numpy.array([7.,1.,0.]), P = 1)
     y = UTPS(numpy.array([13.,0.,0.]), P = 1)
     v1 = mul(x,y)
     v2 = mul(x,v1)
     
     v2bar = UTPS([1.,0.,0.], P = 1)
     v1bar = UTPS(numpy.zeros(3), P = 1)
     xbar = UTPS(numpy.zeros(3), P = 1)
     ybar = UTPS(numpy.zeros(3), P = 1)
     
     epb_mul(x,v1,v2, v2bar, xbar, v1bar)
     epb_mul(x,y,v1, v1bar, xbar, ybar)
     
     assert_array_almost_equal(xbar.data[0], v2.data[1])
     assert_array_almost_equal(xbar.data[1], 2*v2.data[2])