game_qu.math.derivative API documentation

# Module `game_qu.math.derivative`

Expand source code

    from game_qu.math.function import Function

    class Derivative:
        """Essentially a wrapper class for a function that makes working with derivatives easier"""

        derivative = None

        def __init__(self, derivative: Function) -> None:
            """Initializes the object"""

            self.derivative = derivative

        def evaluate(self, x_coordinate) -> float:
            """
                 Returns:
                    float: the evaluating the derivative at 'x_coordinate'"""

            return self.derivative.get_y_coordinate(x_coordinate)

        def set_derivative(self, derivative) -> None:
            """Sets the derivative of the function"""

            self.derivative = derivative

        @staticmethod
        def get_polynomial_derivative(polynomial):
            """
                 Returns:
                    Function: the derivative of the polynomial (does not modify the passed in polynomial)"""

            new_terms = []
            for term in polynomial.get_terms():
                # Using the reverse power rule of indefinite integrals
                new_coefficient = term.get_coefficient() * term.get_degree()
                new_degree = term.get_degree() - 1

                new_term = term.get_polynomial_term_with_values(new_coefficient, new_degree)
                new_terms.append(new_term)

            return polynomial.get_polynomial_with_terms(new_terms)

        @staticmethod
        def evaluate_polynomial_derivative_at_point(polynomial, x_coordinate) -> float:
            """
                 Returns:
                    float: the area of the polynomial within the bounds of start and end"""

            return Derivative.get_polynomial_derivative(polynomial).get_y_coordinate(x_coordinate)

## Classes

`class Derivative (derivative: Function)`

  Essentially a wrapper class for a function that makes working with derivatives easier

  Initializes the object

  Expand source code

      class Derivative:
          """Essentially a wrapper class for a function that makes working with derivatives easier"""

          derivative = None

          def __init__(self, derivative: Function) -> None:
              """Initializes the object"""

              self.derivative = derivative

          def evaluate(self, x_coordinate) -> float:
              """
                   Returns:
                      float: the evaluating the derivative at 'x_coordinate'"""

              return self.derivative.get_y_coordinate(x_coordinate)

          def set_derivative(self, derivative) -> None:
              """Sets the derivative of the function"""

              self.derivative = derivative

          @staticmethod
          def get_polynomial_derivative(polynomial):
              """
                   Returns:
                      Function: the derivative of the polynomial (does not modify the passed in polynomial)"""

              new_terms = []
              for term in polynomial.get_terms():
                  # Using the reverse power rule of indefinite integrals
                  new_coefficient = term.get_coefficient() * term.get_degree()
                  new_degree = term.get_degree() - 1

                  new_term = term.get_polynomial_term_with_values(new_coefficient, new_degree)
                  new_terms.append(new_term)

              return polynomial.get_polynomial_with_terms(new_terms)

          @staticmethod
          def evaluate_polynomial_derivative_at_point(polynomial, x_coordinate) -> float:
              """
                   Returns:
                      float: the area of the polynomial within the bounds of start and end"""

              return Derivative.get_polynomial_derivative(polynomial).get_y_coordinate(x_coordinate)

  ### Class variables

  `var derivative`

  ### Static methods

  `def evaluate_polynomial_derivative_at_point(polynomial, x_coordinate) ‑> float`

    ## Returns

    `float`
      the area of the polynomial within the bounds of start and end
    Expand source code

        @staticmethod
        def evaluate_polynomial_derivative_at_point(polynomial, x_coordinate) -> float:
            """
                 Returns:
                    float: the area of the polynomial within the bounds of start and end"""

            return Derivative.get_polynomial_derivative(polynomial).get_y_coordinate(x_coordinate)

  `def get_polynomial_derivative(polynomial)`

    ## Returns

    `Function`
      the derivative of the polynomial (does not modify the passed in polynomial)
    Expand source code

        @staticmethod
        def get_polynomial_derivative(polynomial):
            """
                 Returns:
                    Function: the derivative of the polynomial (does not modify the passed in polynomial)"""

            new_terms = []
            for term in polynomial.get_terms():
                # Using the reverse power rule of indefinite integrals
                new_coefficient = term.get_coefficient() * term.get_degree()
                new_degree = term.get_degree() - 1

                new_term = term.get_polynomial_term_with_values(new_coefficient, new_degree)
                new_terms.append(new_term)

            return polynomial.get_polynomial_with_terms(new_terms)

  ### Methods

  `def evaluate(self, x_coordinate) ‑> float`

    ## Returns

    `float`
      the evaluating the derivative at 'x_coordinate'
    Expand source code

        def evaluate(self, x_coordinate) -> float:
            """
                 Returns:
                    float: the evaluating the derivative at 'x_coordinate'"""

            return self.derivative.get_y_coordinate(x_coordinate)

  `def set_derivative(self, derivative) ‑> None`

    Sets the derivative of the function

    Expand source code

        def set_derivative(self, derivative) -> None:
            """Sets the derivative of the function"""

            self.derivative = derivative