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