Excel ソルバーを使用すると、この方程式の解 ( x と y の最適値) を簡単に見つけることができます。
(x*14.80461) + (y * -4.9233) + (10*0.4803) ≒ 0
ただし、Pythonでこれを行う方法がわかりません。fsolve() や leastsq() などの既存の scipy 最適化ライブラリ関数は、1 つの変数のみで動作するようです.... (私はそれらの使用方法を知らないだけかもしれません)...
助言がありますか?
ありがとう!
>>> def f(x):
... return x[0]*14.80461 + x[1]*(-4.9233) + x[2]*(10*0.4803)
>>> def vf(x):
... return [f(x), 0, 0]
>> xx = fsolve(vf, x0=[0,0,1])
>>>
>>> f(xx)
8.8817841970012523e-16
解は一意ではないため、未知の初期値が異なると、異なる (有効な) 解が得られます。
編集:なぜこれが機能するのか。まあ、それは汚いハックです。それだけで、その親戚は連立方程式fsolve
を扱っています。ここで行ったことはf(x)
、3 つの変数 (3 つの要素がある) に対して 3 つの方程式 (3 つの要素のリストを返す)のシステムを定義したことx
です。fsolve
ニュートン型アルゴリズムを使用して解に収束するようになりました。
明らかに、このシステムは未定義です。2 つの変数、たとえば と find の任意の値を指定x[1]
しx[2]
てx[0]
、唯一の重要な方程式を満たすことができます。これは、いくつかの初期推定を指定することで明示的に確認でき、さまざまな出力を確認できます。これらはすべて、特定の許容範囲x0
を満たしています。f(x)=0