def test_division(): b = LagrangeBasis(range(10)) p1 = b.X**2 p2 = b.X**2-1 q, r = divmod(p1,p2) assert equal_by_values(q,b.one) assert equal_by_values(r,b.one)
def check_coefficient_addition(b, l1, l2): p1 = Polynomial(l1,b) p2 = Polynomial(l2,b) n = max(len(l1),len(l2)) c = np.zeros(n) c[:len(l1)] += l1 c[:len(l2)] += l2 p = Polynomial(c,b) assert equal_by_values(p1+p2, p)
def test_power(): b = LagrangeBasis() p = Polynomial([0,1],b) for i in range(16): assert equal_by_values(p**i, reduce(lambda x, y: x*y, [p]*i, b.one))
def test_interpolating(): xs = np.linspace(-1,1,5) p1 = Polynomial([1,2,3,1],LagrangeBasis()) p2 = Polynomial(p1(xs),LagrangeBasis(xs)) assert equal_by_values(p1,p2)
def check_product_rule(p1, p2): assert equal_by_values((p1*p2).derivative(), p1*p2.derivative()+p1.derivative()*p2)
def check_derivative_linearity(p1, p2): f = 7.3 assert equal_by_values((f*p1).derivative(),f*p1.derivative()) assert equal_by_values((p1+p2).derivative(),p1.derivative()+p2.derivative())