0

我试图在一个变量上定义几个函数。首先我定义了 x 变量:

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

我想使用 Lambda 定义一系列函数,如下所示:

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

我该如何定义这个?谢谢

4

1 回答 1

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) ) 

您的随机程序可能会有所不同,因为有无限数量的随机可用。请注意,每次运行创建循环时它都不同,如果需要,请使用随机种子来修复随机运行之间的同一代。一旦创建的功能在一个过程中是稳定的。

于 2013-11-02T22:22:59.403 回答