Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def poly_dev(poly, dev):
- """
- :param poly: a polynomial
- :param dev: derivative desired, e.g., 2nd
- """
- c = 0 # correction
- r = dev # to remove
- while dev > 0:
- for i in range(1, len(poly)-c):
- poly[i-1] = (len(poly)-(i+c))*poly[i-1]
- dev -= 1 # I suspect this
- c += 1 # this can be simplified
- return poly[:-r]
- >>> poly = [3, 5, 2, 2]
- >>> print(poly_dev(poly, 2))
- [18, 10]
- >>> print(poly)
- [18, 10, 2, 2]
- def poly_dev(poly, dev):
- if dev == 0:
- return poly[:]
- if dev > len(poly):
- return list()
- if dev < 0:
- raise ValueError("negative derivative")
- p = 1
- for k in range(2, dev+1):
- p *= k
- poly = poly[:-dev]
- n = len(poly)-1
- for i in range(len(poly)):
- poly[n-i] *= p
- p = p * (i+dev+1) // (i+1)
- return poly
- import functools
- import operator
- def product(start, end):
- return functools.reduce(operator.mul, range(start, end + 1), 1)
- def poly_derivative(poly, n):
- if n < 0:
- raise ValueError("The nth order derivative must be non-negative")
- return [x * product(idx + 1, idx + n) for (idx, x) in enumerate(poly[n:])]
- def poly_deriv(poly, nth=1):
- …
- def poly_deriv(poly, nth=1):
- degree = len(poly) - 1
- if degree - nth < 0:
- return [0] # or an empty list? Your decision.
- poly = poly[: -nth]
- for i in range(len(poly)):
- for exponent in range(degree - i, degree - i - nth, -1):
- poly[i] = exponent * poly[i]
- return poly
Add Comment
Please, Sign In to add comment