Как написать функцию на python, учитывая список терминов и значение x производной, которая возвращает значение производной в этой точке

#function #loops #filter #tuples #derivative

#функция #циклы #Фильтр #кортежи #производная

Вопрос:

Каждый термин представляет собой один кортеж, например, 2x ^ 3 7x равно (2,3), (7,1) Производная равна (6,2), (7,0)

Когда есть константа, константа должна быть удалена. Например, (2,4), (13,0) вернут только (2,4) .

Вот код для поиска этой производной и отфильтровывания любых констант, таких как (13,0)

 def find_derivative(function_terms):
    return [(term[0] * term[1], term[1] - 1)
           for i, term in enumerate(function_terms)
               if term[0] * term[1] != 0]
 

Хорошо, теперь, чтобы вернуть значение производной в заданной точке, когда указано значение x, я написал

 def derivative_at(function_terms, x):
    filtered = list(filter(find_derivative, function_terms))
    

    new_value = filtered[0]* x, * [1]
    return new_value

find_derivative(three_x_squared_minus_eleven) # [(6, 1)]
derivative_at(three_x_squared_minus_eleven, 2) # 12
 

Вот где я получаю ошибку типа

 TypeErrorTraceback (most recent call last)
<ipython-input-12-5fd5c2308a87> in <module>
      1 find_derivative(three_x_squared_minus_eleven) # [(6, 1)]
----> 2 derivative_at(three_x_squared_minus_eleven, 2) # 12

<ipython-input-11-bc3316259675> in derivative_at(terms, x)
      9 def derivative_at(terms, x):
     10 
---> 11     filtered = list(map(find_derivative, terms))
     12     return filtered
     13 

<ipython-input-4-48549a955063> in find_derivative(function_terms)
      3 def find_derivative(function_terms):
      4     return [(term[0] * term[1], term[1] - 1)
----> 5            for i, term in enumerate(function_terms)
      6                if term[0] * term[1] != 0]

<ipython-input-4-48549a955063> in <listcomp>(.0)
      4     return [(term[0] * term[1], term[1] - 1)
      5            for i, term in enumerate(function_terms)
----> 6                if term[0] * term[1] != 0]

TypeError: 'int' object is not subscriptable
 

Ответ №1:

Я слишком усложнял. Функция find_derivative(), которая используется для фильтрации любых констант, применяется в нижней части кода:

    find_derivative(three_x_squared_minus_eleven)
 

Этот код отфильтровывает любые константы в терминах.

После этого я использовал комбинацию двух пользовательских функций:

 def term_output(term, x):
    a =  term[0]
    b =  term[1] 
    x = x
    result =  a * x * b
    return result
    

def derivative_at(list_of_terms, x):
    outputs = list(map(lambda term: term_output(term, x), list_of_terms))
    return sum(outputs)

find_derivative(three_x_squared_minus_eleven) # ([6,1])
derivative_at(three_x_squared_minus_eleven, 2) # 12
 

Derivative_at() передается отфильтрованный аргумент three_x_squared_minus_eleven и возвращает наш ответ, 12 .