使用'dummy'变量创建数学函数,以便稍后进行评估

时间:2016-02-05 02:11:39

标签: python

我正在尝试在python中创建一个函数,它将添加一堆数学术语,其中包括一些任意变量名称,在构造完整的东西之后进行评估。例如,

def transform(terms, xterm):
    function=.5
    step=terms
    odd=1
    while step>0:
        function+=(2/odd*np.pi)*np.sin(odd*np.pi*xterm)
        odd+=2
        step-=1
    return function

test=transform(10,somexvariable) 
print test   

这是我在力学课上必须完成的特定函数的傅立叶级数。

基本上我想,对于术语数量(比如5),创建一个如下所示的变量:

function = .5 + (2/odd*np.pi)*np.sin(odd*np.pi*xvariable) +....... 

在我想要的许多术语中,变量'odd'是唯一改变的数字。

这个问题的关键和难点是插入一些名为'xvariable'的虚拟变量,以便稍后我可以创建一个这样的数组:

x2 = np.arange(0,10,.05)
y = transform(2,x2)

结果将是我用'transform'创建的函数中计算的那些x值的数组。

我确信我会以错误的方式解决这个问题......但我似乎无法弄清楚这项工作的必要步骤。

请帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

我相信你所寻找的是functools.partial。它允许您创建一个预先填充的一些参数的函数。

from functools import partial

def sum_powers(x, terms):
    result = 0
    for term in terms:
        result += term ** x
    return result

sum_squares = partial(sum_powers, x=2)
sum_squares(terms=[1, 2, 3])
# 14

sum_cubes = partial(sum_powers, x=3)
sum_cubes(terms=[1, 2, 3])
# 36