game_qu.math.indefinite_integral API documentation

# Module `game_qu.math.indefinite_integral`

Expand source code

    from game_qu.math.function import Function
    import sys

    class IndefiniteIntegral:
        """Essentially a wrapper class for a function that makes finding the bounded value from the integral easy"""

        indefinite_integral = None

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

            self.indefinite_integral = indefinite_integral

        def evaluate(self, start, end) -> float:
            """
                 Returns:
                    float: the value gotten from using the bounds for the indefinite integral"""

            return self.indefinite_integral.get_y_coordinate(end) - self.indefinite_integral.get_y_coordinate(start)

        def set_indefinite_integral(self, indefinite_integral) -> None:
            """Sets the indefinite integral of the function"""

            self.indefinite_integral = indefinite_integral

        @staticmethod
        def get_polynomial_indefinite_integral(polynomial):
            """
                 Returns:
                    Function: the indefinite integral 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() * 1/(term.get_degree() + 1)
                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_area(polynomial, start, end) -> float:
            """
                 Returns:
                    float: the area of the polynomial within the bounds of start and end"""

            integral_function = IndefiniteIntegral.get_polynomial_indefinite_integral(polynomial)
            return IndefiniteIntegral(integral_function).evaluate(start, end)

## Classes

`class IndefiniteIntegral (indefinite_integral: Function)`

  Essentially a wrapper class for a function that makes finding the bounded value from the integral easy

  Initializes the object

  Expand source code

      class IndefiniteIntegral:
          """Essentially a wrapper class for a function that makes finding the bounded value from the integral easy"""

          indefinite_integral = None

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

              self.indefinite_integral = indefinite_integral

          def evaluate(self, start, end) -> float:
              """
                   Returns:
                      float: the value gotten from using the bounds for the indefinite integral"""

              return self.indefinite_integral.get_y_coordinate(end) - self.indefinite_integral.get_y_coordinate(start)

          def set_indefinite_integral(self, indefinite_integral) -> None:
              """Sets the indefinite integral of the function"""

              self.indefinite_integral = indefinite_integral

          @staticmethod
          def get_polynomial_indefinite_integral(polynomial):
              """
                   Returns:
                      Function: the indefinite integral 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() * 1/(term.get_degree() + 1)
                  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_area(polynomial, start, end) -> float:
              """
                   Returns:
                      float: the area of the polynomial within the bounds of start and end"""

              integral_function = IndefiniteIntegral.get_polynomial_indefinite_integral(polynomial)
              return IndefiniteIntegral(integral_function).evaluate(start, end)

  ### Class variables

  `var indefinite_integral`

  ### Static methods

  `def evaluate_polynomial_area(polynomial, start, end) ‑> float`

    ## Returns

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

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

            integral_function = IndefiniteIntegral.get_polynomial_indefinite_integral(polynomial)
            return IndefiniteIntegral(integral_function).evaluate(start, end)

  `def get_polynomial_indefinite_integral(polynomial)`

    ## Returns

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

        @staticmethod
        def get_polynomial_indefinite_integral(polynomial):
            """
                 Returns:
                    Function: the indefinite integral 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() * 1/(term.get_degree() + 1)
                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, start, end) ‑> float`

    ## Returns

    `float`
      the value gotten from using the bounds for the indefinite integral
    Expand source code

        def evaluate(self, start, end) -> float:
            """
                 Returns:
                    float: the value gotten from using the bounds for the indefinite integral"""

            return self.indefinite_integral.get_y_coordinate(end) - self.indefinite_integral.get_y_coordinate(start)

  `def set_indefinite_integral(self, indefinite_integral) ‑> None`

    Sets the indefinite integral of the function

    Expand source code

        def set_indefinite_integral(self, indefinite_integral) -> None:
            """Sets the indefinite integral of the function"""

            self.indefinite_integral = indefinite_integral