1

私は最適化に取り組んでおり、より多くの変数を sub() できる関数をコーディングしたいと考えています。このために、n 個の変数を持つ am 関数を生成しました。たとえば、3 つの関数と 2 つの変数があるとします。

num_var=2
x=symbols('x0:num_var')

私はこの関数を生成しました:

f=[5*x0 + 4*x1 + 6, -4*x0 - 5*x1 - 6, -8*x0 - 10]

そして、私は次のようなポイントを持っています:

point=[-2.8,1.74]

各関数で sub() したい場合、これを行う最も速い方法は何ですか?

f[0].subs([(x[0],point[0]),(x[1],point[1])])

(これにより、最初の関数の評価が適切になります)そして、リストに3つの関数評価が表示されます。

fun_eval=[some number,some number, ... (in size of number of functions)] 

問題は、多数の関数で多数の変数の評価を行うコードをどのように記述できるかということです。

4

2 に答える 2

0

http://docs.sympy.org/latest/tutorial/basic_operations.html#lambdifyを参照してください。多数の点で関数を効率的に評価したい場合は、 を使用する必要がありますlambdify

>>> func = lambdify(x, f)
>>> func(*point)
[-1.04, -3.5, 12.399999999999999]

デフォルトでは、サブルーチンを使用しますが、numpyインストールしている場合は、 に渡すことで、はるかに高速な評価に使用できmodule="numpy"ますlambdify

ちなみに、あなたsymbols('x0:num_var')は実際にnum_var変数を使用していません。を使用する必要がありますsymbols('x0:%d' % num_var)

于 2013-11-07T04:47:51.830 に答える