1

次の一連の方程式があり、X と Y について同時に解きたいと考えています。numpy を使用してこれらを線形方程式系として解くことができるとアドバイスされています。それが最善の選択肢ですか、それとももっと良い方法がありますか?

a = (((f * X) + (f2 * X3 )) / (1 + (f * X) + (f2 * X3 ))) * i
b = ((f2 * X3) / (1 + (f * X) + (f2 * X3))) * i
c = ((f * X) / (1 + (j * X) + (k * Y))) * i
d = ((k * Y) / (1 + (j * X) + (k * Y))) * i
f = 0.0001
i = 0.001
j = 0.0001
k = 0.001
e = 0 = X + a + b + c
g = 0.0001 = Y + d
h = 私 - a
4

1 に答える 1

2

ジョーが指摘したように、これは実際には非線形方程式のシステムです。numpy だけで提供されるよりも多くの火力が必要になります。

非線形方程式の解は扱いにくく、典型的なアプローチは目的関数を定義することです

F( z ) = sum( e[n]^2, n=1...13 )

ここで、zは 13 個の変数のそれぞれの値を含むベクトルでa,b,c,d,e,f,g,h,i,X,Yありe[n]、13 個の方程式のそれぞれに違反する量です。例えば

e[3] = (d - ((k * Y) / (1 + (j * X) + (k * Y))) * i  )

その目的関数が得られたら、非線形ソルバーを適用し て F( z )=0となるzを見つけようとすることができます。もちろん、それは方程式の解に対応します。

一般的に使用されるソルバーには次のものがあります。

ソルバーを実行する前に、最初に方程式のセットを変更してできるだけ多くの変数を削除すると、それらすべてがはるかにうまく機能することに注意してください (たとえば、k見つかった場所を代入するなど)。削減された次元は大きな違いを生みます。

于 2012-04-16T18:45:09.680 に答える