Guest User

Untitled

a guest
Jul 15th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. def poly_dev(poly, dev):
  2. """
  3. :param poly: a polynomial
  4. :param dev: derivative desired, e.g., 2nd
  5. """
  6.  
  7. c = 0 # correction
  8. r = dev # to remove
  9. while dev > 0:
  10. for i in range(1, len(poly)-c):
  11. poly[i-1] = (len(poly)-(i+c))*poly[i-1]
  12. dev -= 1 # I suspect this
  13. c += 1 # this can be simplified
  14. return poly[:-r]
  15.  
  16. >>> poly = [3, 5, 2, 2]
  17. >>> print(poly_dev(poly, 2))
  18. [18, 10]
  19. >>> print(poly)
  20. [18, 10, 2, 2]
  21.  
  22. def poly_dev(poly, dev):
  23. if dev == 0:
  24. return poly[:]
  25. if dev > len(poly):
  26. return list()
  27. if dev < 0:
  28. raise ValueError("negative derivative")
  29. p = 1
  30. for k in range(2, dev+1):
  31. p *= k
  32. poly = poly[:-dev]
  33. n = len(poly)-1
  34. for i in range(len(poly)):
  35. poly[n-i] *= p
  36. p = p * (i+dev+1) // (i+1)
  37. return poly
  38.  
  39. import functools
  40. import operator
  41.  
  42. def product(start, end):
  43. return functools.reduce(operator.mul, range(start, end + 1), 1)
  44.  
  45. def poly_derivative(poly, n):
  46. if n < 0:
  47. raise ValueError("The nth order derivative must be non-negative")
  48. return [x * product(idx + 1, idx + n) for (idx, x) in enumerate(poly[n:])]
  49.  
  50. def poly_deriv(poly, nth=1):
  51.  
  52. def poly_deriv(poly, nth=1):
  53. degree = len(poly) - 1
  54. if degree - nth < 0:
  55. return [0] # or an empty list? Your decision.
  56. poly = poly[: -nth]
  57. for i in range(len(poly)):
  58. for exponent in range(degree - i, degree - i - nth, -1):
  59. poly[i] = exponent * poly[i]
  60. return poly
Add Comment
Please, Sign In to add comment