2013-11-02 43 views
0

我想在一个变量上定义几个函数。 首先,我定义的变量x:在sympy中定义几个函数(Lambda)

from sympy import * 
x=var('x') 

我想定义一系列的使用lambda一些功能是这样的:

f0=Lambda(x,x) 
f1=Lambda(x,x**2) 
.... 
fn=.... 

我如何定义呢? 谢谢

+0

不知道你为什么想要做这样的事情。但是,这可能有帮助(不是PYTHONIC) - http://stackoverflow.com/a/4010856/2689986 –

+0

我想用N个变量定义几个随机线性函数。 –

+0

然后你的问题应该清楚地说明随机函数的例子。否则,没有人可以回答你的问题。 – joojaa

回答

1

我花了一段时间才明白你的后。看起来你最有可能在循环之后,但不要说清楚这一点。所以我建议你这样做:

from sympy import * 
x = symbols('x') 

f=[] 
for i in range(1,11): # generate 1 to 10 
    f.append(Lambda(x,x**i)) 

# then you use them like this 
print(f[0](2)) # indexes 0 based 
print(f[1](2)) 
# ,,, up to [9] 

无论如何,你不是很清楚你的问题,应该是什么进展。

编辑:至于这里产生随机函数是一个示例生成多项式与生长顺序和随机的一组下订单的:因为有无限

from random import randint 
from sympy import * 
x = symbols('x') 

f=[] 
for i in range(1,11): 
    fun = x**i 
    for j in range(i): 
     fun += randint(0,1)* x**j 
    f.append(Lambda(x,fun)) 

# then you use them like this 
# note I am using python 2.7 if you use 3.x modify to suit your need 
print(map(str, f)) #show them all 

def call(me): 
    return me(2) 

print(map(call, f)) 

你的随机过程可以是不同可用的随机数。每次运行创建循环时都注意它的不同,如果运行之间需要相同的生成,则使用随机种子来修复随机数。一次创建的函数在一个进程中是稳定的。

+0

感谢您的回复,我想用N个变量定义几个随机线性函数。我需要一种快速生成函数的方法。可以使用%运算符吗? 我的意思是,我可以定义像x = var('x0:%d'%num_var)这样的变量,其中num_var是一个整数。 –

+0

没有你不在字符串上操作,你在对象上操作。在这种情况下,我不是一个变量,就sympy而言它实际上是一个整数。但是,您可以使用对象表示法更紧凑地执行相同的操作并执行任何类型的功能。但你没有问这个,所以不可能回答,不要在评论中扩展问题,只是澄清。你应该修改你的问题或者打开一个新的问题,因为这不在你最初的目标中。请不要使用exec,真的没有理由采取这种速度和风险。除了您可以将列表符号视为索引运算符。 – joojaa

+1

最好使用'symbols'而不是'var'。 – asmeurer