Вычисление производной тринома с использованием функции в качестве параметра - PullRequest
0 голосов
/ 11 ноября 2018

Мне нужно вычислить производную триномиальной функции в другой функции, используя первую в качестве параметра. Это мой код:

def derivative(func):
    num=func(a,b,c)
    third=func(0,0,c)
    first=func(a,0,0)
    return (num-third)/x+first/x

 def make_quadratic(a, b, c):
    return lambda x: x*x*a+b*x+c

Полагаю, что с помощью функции make_quadratic мне пришлось добавить еще 3 параметра (a,b,c) в func. То, что я пытаюсь сделать, это удалить c, разделить с x, а затем добавить ax, чтобы результирующая производная была 2ax + b, однако я не могу запустить код, так как по какой-то причине a, b, c не определены, хотя я даю их значения, когда я вызываю функцию.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Вы можете вычислить производную любой функции, используя sympy .

Для вашей функции вы можете использовать:

import sympy

def get_derivative(func, x):
    return sympy.diff(func, x)

def make_quadratic(a, b, c):
    x = sympy.symbols('x')
    func = a * x**2 + b * x + c
    return func, x

func, x = make_quadratic(1, 2, 3)
print(get_derivative(func, x))

Что возвращает 2*x + 2

0 голосов
/ 11 ноября 2018

Напишите себе класс, подобный следующему:

class TrigonomialFunction:
    def __init__(self, a, b, c):
        self.a, self.b, self.c = a, b, c

    def calculate(self, x):
        return self.a * x ** 2 + self.b * x + self.c

    def derivate(self):
        return TrigonomialFunction(0, 2 ** self.a, self.b)

    def __str__(self):
        return "f(x) = %s x**2 + %s * x + %s" % (self.a, self.b, self.c)

Который затем может привыкнуть следующим образом:

f = TrigonomialFunction(2, 3, -5)
print(f) # will return f(x) = 2 x**2 + 3 * x + -5
print(f.calculate(1)) # returns 0
print(f.calculate(-1)) # returns -6

derivateOfF = f.derivate()
print(derivateOfF) # returns f(x) = 0 x**2 + 4 * x + 3 which can be simplified to f(x) = 4*x + 3
print(derivateOfF.calculate(0)) # returns 3

derivateOfderivateOfF = derivateOfF.derivate()
print(derivateOfderivateOfF) # guess ;)
...