2014-02-16 1 views
0

Пусть у меня есть следующие функции g:Как скомпоновать функцию и полином с оператором деления?

import numpy as np 
from numpy.polynomial import Polynomial as P 

def g(x): 
    return np.log(x) 

И я следующее NumPy Polynomial q:

q = P([0, 1]) 

Я хочу поставить их вместе, как так:

fancy = g/q 
# TypeError: unsupported operand type(s) for /: 'Polynomial' and 'function' 

Так что я могу назвать fancy(x), так что это эквивалентно высказыванию:

g(x)/q(x) 

Это должно быть тривиально просто сказать:

def fancy(x): 
    return g(x)/q(x) 

Но нет, мне нужно сам вызываемую функцию, потому что g получает переопределены на каждой итерации цикла.

ответ

0
fancy = lambda x : g(x)/q(x) 

Должно предоставить вам то, что вы хотите. lambda выражения - один из способов, которыми python поддерживает создание функционального объекта «на лету». Я говорю «один», потому что вы можете использовать функцию более одного раза, так как она делает почти то же самое, что и назначение лямбда-выражения, определяет объект функции и присваивает ему ссылку.

+0

Хорошо работает, но не совсем то, что мне нужно. Вместо этого новый «причудливый» должен был быть переопределен на основе предыдущей «фантазии». Это создает бесконечную рекурсию :( – Kit

+0

@Kit, What !? Пожалуйста, обновите свой вопрос неудавшейся попыткой. – StoryTeller

Смежные вопросы