2013-11-02 107 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