quartic_polynomial.py 945 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. """
  2. Quartic Polynomial
  3. """
  4. import numpy as np
  5. class QuarticPolynomial:
  6. def __init__(self, x0, v0, a0, v1, a1, T):
  7. A = np.array([[3 * T ** 2, 4 * T ** 3],
  8. [6 * T, 12 * T ** 2]])
  9. b = np.array([v1 - v0 - a0 * T,
  10. a1 - a0])
  11. X = np.linalg.solve(A, b)
  12. self.a0 = x0
  13. self.a1 = v0
  14. self.a2 = a0 / 2.0
  15. self.a3 = X[0]
  16. self.a4 = X[1]
  17. def calc_xt(self, t):
  18. xt = self.a0 + self.a1 * t + self.a2 * t ** 2 + \
  19. self.a3 * t ** 3 + self.a4 * t ** 4
  20. return xt
  21. def calc_dxt(self, t):
  22. xt = self.a1 + 2 * self.a2 * t + \
  23. 3 * self.a3 * t ** 2 + 4 * self.a4 * t ** 3
  24. return xt
  25. def calc_ddxt(self, t):
  26. xt = 2 * self.a2 + 6 * self.a3 * t + 12 * self.a4 * t ** 2
  27. return xt
  28. def calc_dddxt(self, t):
  29. xt = 6 * self.a3 + 24 * self.a4 * t
  30. return xt