scipy nsolve 関数で解かれる一連の方程式に後で組み込まれる関数を生成したいとします。次のような関数を作成したい:
xi + xi+1 + xi+3 = 1
変数の数はコンポーネントの数に依存します。たとえば、2 つのコンポーネントがある場合:
f = lambda x: x[0] + x[1] - 1
3 の場合:
f = lambda x: x[0] + x[1] + x[2] - 1
呼び出される関数の引数内でコンポーネントを配列として指定します。
def my_func(components):
for component in components:
.....
.....
return f
私はこれを行う方法を見つけることができません。この関数と他の関数を nsolve と一緒に解決する必要があるため、このようにする必要があります。
x0 = scipy.optimize.fsolve(f, [0, 0, 0, 0 ....])
どんな助けでもいただければ幸いです
ありがとう!
これを行う最善の方法がわからないので、私がやろうとしていることを完全に説明します。
-後で解決するために、この2つの関数を生成しようとしています:
したがって、この 2 つの方程式を返す関数 teste([コンポーネントのリスト]) を作成したいと思います (Psat(T) はコンポーネントに応じて呼び出すことができる関数であり、P は定数です (値 = 760))。
例:
teste(['Benzene','Toluene'])
戻ります:
xベンゼン + xトルエン = 1
xBenzene Psat('Benzene') + xToluene Psat('Toluene') = 760
呼び出す場合:
teste(['Benzene','Toluene','Cumene'])
次のように返されます。
xベンゼン + xトルエン + xクメン = 1
xBenzene Psat('Benzene') + xToluene Psat('Toluene') + xCumene*Psat('Cumene') = 760
これらの x 値はすべて、私が計算して合計できるリストに変換できるものではありません。それらは、システム内にあるコンポーネントの数の関数として作成される変数です...
これがこれを行うための最良の方法を見つけるのに役立つことを願っています