5

Excel ソルバーを使用すると、この方程式の解 ( x と y の最適値) を簡単に見つけることができます。

(x*14.80461) + (y * -4.9233) + (10*0.4803) ≒ 0

ただし、Pythonでこれを行う方法がわかりません。fsolve() や leastsq() などの既存の scipy 最適化ライブラリ関数は、1 つの変数のみで動作するようです.... (私はそれらの使用方法を知らないだけかもしれません)...

助言がありますか?

ありがとう!

4

1 に答える 1

5
>>> 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

于 2013-01-19T16:45:46.347 に答える