コード例 #1
0
    def test_line_derivative(self):
        # using AlmostEqual for floating point error
        gamma = ComplexLine(0, 1)
        self.assertAlmostEqual(gamma.derivative(0), 1)
        self.assertAlmostEqual(gamma.derivative(0.5), 1)
        self.assertAlmostEqual(gamma.derivative(0.75), 1)
        self.assertAlmostEqual(gamma.derivative(0), 1)

        gamma = ComplexLine(-1.j, 1.j)
        self.assertAlmostEqual(gamma.derivative(0), 2.j)
        self.assertAlmostEqual(gamma.derivative(0.5), 2.j)
        self.assertAlmostEqual(gamma.derivative(0.75), 2.j)
        self.assertAlmostEqual(gamma.derivative(1), 2.j)
コード例 #2
0
    def test_line_derivative(self):
        # using AlmostEqual for floating point error
        gamma = ComplexLine(0, 1)
        self.assertAlmostEqual(gamma.derivative(0), 1)
        self.assertAlmostEqual(gamma.derivative(0.5), 1)
        self.assertAlmostEqual(gamma.derivative(0.75), 1)
        self.assertAlmostEqual(gamma.derivative(0), 1)

        gamma = ComplexLine(-1.j, 1.j)
        self.assertAlmostEqual(gamma.derivative(0), 2.j)
        self.assertAlmostEqual(gamma.derivative(0.5), 2.j)
        self.assertAlmostEqual(gamma.derivative(0.75), 2.j)
        self.assertAlmostEqual(gamma.derivative(1), 2.j)
コード例 #3
0
    def test_simple_composite(self):
        gammax1 = ComplexLine(4, 1)
        gamma1 = RiemannSurfacePathSmale(self.X1, gammax1, [-2, 2])
        gammax2 = ComplexArc(1, 0, 0, pi)
        gamma2 = RiemannSurfacePathSmale(self.X1, gammax2, [-1, 1])
        gamma = gamma1 + gamma2
        nu = lambda x, y: y
        nu_gamma = gamma.parameterize(nu)

        val = nu_gamma(0.0)
        test = gammax1.derivative(0.0) * (-2)
        self.assertAlmostEqual(val, test)

        val = nu_gamma(0.25)
        test = gammax1.derivative(0.5) * (-sqrt(2.5))
        self.assertAlmostEqual(val, test)

        eps = 1e-12
        val = nu_gamma(0.5 - eps)
        test = gammax1.derivative(1.0 - eps / 2) * (-1)
        self.assertAlmostEqual(val, test)

        val = nu_gamma(0.5)
        test = gammax2.derivative(0.0) * (-1)
        self.assertAlmostEqual(val, test)

        val = nu_gamma(0.5 + eps)
        test = gammax2.derivative(eps / 2) * (-1)
        self.assertAlmostEqual(val, test)

        val = nu_gamma(0.75)
        test = gammax2.derivative(0.5) * (-sqrt(1.j))
        self.assertAlmostEqual(val, test)

        val = nu_gamma(1.0)
        test = gammax2.derivative(1.0) * (-1.j)
        self.assertAlmostEqual(val, test)
コード例 #4
0
    def test_simple_composite(self):
        gammax1 = ComplexLine(4,1)
        gamma1 = RiemannSurfacePathSmale(self.X1, gammax1, [-2,2])
        gammax2 = ComplexArc(1,0,0,pi)
        gamma2 = RiemannSurfacePathSmale(self.X1, gammax2, [-1,1])
        gamma = gamma1 + gamma2
        nu = lambda x,y: y
        nu_gamma = gamma.parameterize(nu)

        val = nu_gamma(0.0)
        test = gammax1.derivative(0.0)*(-2)
        self.assertAlmostEqual(val, test)

        val = nu_gamma(0.25)
        test = gammax1.derivative(0.5)*(-sqrt(2.5))
        self.assertAlmostEqual(val, test)

        eps = 1e-12
        val = nu_gamma(0.5-eps)
        test = gammax1.derivative(1.0-eps/2)*(-1)
        self.assertAlmostEqual(val, test)

        val = nu_gamma(0.5)
        test = gammax2.derivative(0.0)*(-1)
        self.assertAlmostEqual(val, test)

        val = nu_gamma(0.5+eps)
        test = gammax2.derivative(eps/2)*(-1)
        self.assertAlmostEqual(val, test)

        val = nu_gamma(0.75)
        test = gammax2.derivative(0.5)*(-sqrt(1.j))
        self.assertAlmostEqual(val, test)

        val = nu_gamma(1.0)
        test = gammax2.derivative(1.0)*(-1.j)
        self.assertAlmostEqual(val, test)