0

たとえば、1 つの変数に対して複数の関数を定義しようとしています。最初に 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) ) 

無数のランダムが利用できるため、ランダム手順は異なる場合があります。作成ループを実行するたびに異なることに注意してください。実行間で同じ世代が必要な場合は、ランダムシードを使用してランダムを修正してください。一度作成された機能は、1 つのプロセスで安定します。

于 2013-11-02T22:22:59.403 に答える