9

修正の方法として、さまざまな最適化手法をコーディングしようとしています。SymPyを使用して、ポイントの座標が配列に格納されている特定のポイントで任意の数の変数を持つ関数を評価できるようにしたいと思います。

f(x,y) = 3*x**2 - 2*x*y + y**2 + 4*x + 3*yたとえば、その時点で評価したいと思いb = [1,2]ます。しかし、私はそれを行う一般的な方法が本当に欲しいです。それsympy.evalf(f, subs = {foo})は、評価されるポイントとして任意の数の変数と適切な長さの配列を持つ関数を処理できるので、あまり役に立ちません。

4

2 に答える 2

4

関数ではなく、SymPy式ツリーを使用しています。あなたができるどんな表現でも:

>>> vars = sorted(expression.free_symbols)
>>> evaluated = expression.subs(*zip(vars, your_values))
于 2013-03-18T14:43:13.687 に答える
1

また、これがより簡単になることを期待しますが、ここに良い回避策があります:

シンボル名(、、など)がわかっている場合は'x'、次を使用してオンザフライで'y'作成できます。dictzip

fvars = sympy.symbols('x, y') #these probably already exist, use: fvars = [x,y]

b = [1,2]
sympy.evalf(f, subs = dict(zip(fvars,b)))
于 2013-03-18T14:43:28.323 に答える