在sympy中定义几个函数(Lambda)

时间:2013-11-02 22:13:05

标签: python sympy

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

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

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

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

我该如何定义? 感谢

1 个答案:

答案 0 :(得分: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) ) 

您的随机程序可能会有所不同,因为有无数的可用内容。注意每次运行创建循环时它都不同,使用随机种子来修复随机(如果需要在运行之间进行相同的生成)。创建的函数在一个过程中是稳定的。