2013-02-15 2 views
2

Есть ли другой способ, кроме использования лямбда-функции для интеграции функции в python 2.7 поверх, скажем, второй из двух переменных? Например, я хотел бы интегрировать этот пример функции по х:Интеграция функции над переменной, отличной от первой, ища альтернативу лямбда

import numpy as np 
from scipy.integrate import quad 

def sqrfn(a,x): 
    return a*np.square(x) 

Это легко достигается с помощью:

quad(lambda x: sqrfn(2,x),0,10) 

мне интересно, если есть другой способ сделать это, например, путем используя что-то подобное, что я думаю, что гораздо более интуитивным:

quad(sqrfn,0,10,args(a=2)) 

Кто есть альтернативное решение? (Да, я мог бы определить функцию как sqrfn(x,a) и вместо этого использовать quad(sqrfn,0,10,args(2,)), но это не главное).

ответ

1

Вы можете использовать functools.partial() для этого:

In [10]: f = functools.partial(sqrfn, 2) 

Это делает f(x) эквивалентно sqrfn(2, x):

In [11]: map(f, range(5)) 
Out[11]: [0, 2, 8, 18, 32] 

Ваш пример бы тогда:

quad(functools.partial(sqrfn, 2), 0, 10) 
+0

Что чюо uld происходит с этим методом, если у меня есть n переменная функция, и я бы хотел исправить все, кроме k'th переменной? – Forzaa

0
import functools 
quad(functools.partial(sqrfn, 2), 0, 10) 
Смежные вопросы