我试图在一个变量上定义几个函数。首先我定义了 x 变量:
from sympy import *
x=var('x')
我想使用 Lambda 定义一系列函数,如下所示:
f0=Lambda(x,x)
f1=Lambda(x,x**2)
....
fn=....
我该如何定义这个?谢谢
我花了一段时间才明白你的追求。似乎你最有可能在循环之后,但不要清楚地表达这一点。所以我建议你这样做:
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) )
您的随机程序可能会有所不同,因为有无限数量的随机可用。请注意,每次运行创建循环时它都不同,如果需要,请使用随机种子来修复随机运行之间的同一代。一旦创建的功能在一个过程中是稳定的。