Example #1
0
 def test_deviv_integ(self):
     " p.deriv() p.integ() "
     self.assert_close(self.exp_x.integ().deriv(), self.exp_x)
     self.assert_close(self.exp_x.integ(n=2).deriv(n=2), self.exp_x)
     self.assert_close(self.exp_x.integ(n=0), self.exp_x)
     self.assert_close(self.exp_x.deriv(n=0), self.exp_x)
     self.assert_close(self.x.deriv(self.order + 2), PowerSeries([0]))
     self.assert_close(self.exp_x.deriv(),
                       PowerSeries(self.exp_x, order=self.order - 1))
     self.assert_close(self.exp_x.integ(x0=0),
                       exp(PowerSeries(self.x, order=self.order + 1)) - 1)
Example #2
0
    def test_arith(self):
        " x+y x-y x*y x/y x**2 "
        x = self.x
        y = self.exp_x
        self.assert_close(x * x, self.x2)
        self.assert_close(y / y, self.one)
        self.assert_close((y * y) / y, y)
        self.assert_close((x * y) / y, x)
        self.assert_close(y - y, self.zero)
        self.assert_close((x + y) - x, y)
        self.assert_close(x + y - x - y, self.zero)
        self.assert_close(x**2, self.x2)
        self.assert_close(y * y * y, y**3)
        self.assert_close(2**x, self.exp_x**log(2.))
        self.assert_close(y + y, 2 * y)
        self.assert_close(y + y, y * 2)
        self.assert_close(x + 2, PowerSeries([2, 1], order=self.order))
        self.assert_close(2 + x, PowerSeries([2, 1], order=self.order))
        self.assert_close(x - 2, PowerSeries([-2, 1], order=self.order))
        self.assert_close(2 - x, PowerSeries([2, -1], order=self.order))
        self.assert_close(2 * (y / 2), y)
        self.assert_close(y * (2 / y), 2 * self.one)
        self.assertEqual(y**0, 1.)
        self.assert_close(y**(-2), 1 / y / y)

        # check division where c[0] = 0
        self.assert_close(x / x, PowerSeries([1], order=self.order - 1))
        self.assert_close((x + x**2) / x,
                          PowerSeries([1, 1], order=self.order - 1))
        self.assert_close((x * x) / self.x2,
                          PowerSeries([1], order=self.order - 2))

        # check error checks
        with self.assertRaises(ZeroDivisionError):
            self.x / self.zero
Example #3
0
 def setUp(self):
     self.order = 10
     self.x = PowerSeries([0.,1.], order=self.order)
     self.x2 = PowerSeries([0., 0., 1.], order=self.order)
     self.z = PowerSeries([0+0j, 1.+0j], order=self.order)
     self.one = PowerSeries([1.], order=self.order)
     self.zero = PowerSeries([0.], order=self.order)
     coef = 1. / np.cumprod([1.] + (1. + np.arange(0., self.order+1.)).tolist())
     self.exp_x = PowerSeries(coef, order=self.order)
     osc_coef = coef * (1j)**np.arange(len(coef))
     self.cos_x = PowerSeries([xi.real for xi in osc_coef], order=self.order)
     self.sin_x = PowerSeries([xi.imag for xi in osc_coef], order=self.order)
Example #4
0
 def test_constructor(self):
     " PowerSeries(c, order) "
     x = PowerSeries(1. + np.arange(2 * self.order), order=self.order)
     self.assertEqual(len(x.c), self.order + 1)
     np.testing.assert_allclose(x.c, 1. + np.arange(self.order + 1))
     x = PowerSeries(order=self.order)
     y = PowerSeries(numpy.zeros(self.order + 1, object), order=self.order)
     self.assertEqual(len(x.c), len(y.c))
     for xi, yi in zip(x.c, y.c):
         self.assertEqual(xi, yi)
     for i in range(self.order + 1):
         self.assertEqual(x.c[i], y.c[i])
     y = PowerSeries(self.exp_x)
     for i in range(self.order + 1):
         y.c[i] *= 2
     self.assert_close(y, 2 * self.exp_x)
     self.assert_close(PowerSeries(), PowerSeries([0.]))
     with self.assertRaises(ValueError):
         PowerSeries([])
     with self.assertRaises(ValueError):
         PowerSeries(order=-1)
     with self.assertRaises(ValueError):
         PowerSeries([1, 2], order=-1)