私と同じ間違いをしている人を探してみましたが、喜びがありませんでした! 初めての投稿でもありますので、説明や指示が下手でしたら申し訳ありません。アドバイス歓迎。
私が解決しようとしている問題は、いくつかの既知の基準点までの距離を測定することによって、ある種の受信機の位置を見つけることです。これは基本的な三辺測量であり、これを行うために最小二乗法を使用しています。
scipy.optimize lesatsq 関数を使用してこれを行うことに成功したので、フィッティング関数が機能すると確信しています。ただし、lmfit Python パッケージが提供する追加機能のいくつかを使用できるようにしたいと考えており、それを翻訳するのに苦労しています。完全な試行コードはこちら: http://pastebin.com/4xbfkaCm
lmfit 最小化関数は、次のように (residualfunct と呼ばれる) フィッティング関数への呼び出しを設定します。stationarray はステーションの位置と範囲を含む numpy 配列であり、params はフィッティング関数で使用されるパラメーターの辞書です。
position = minimize(residualfunct, params, args=(stationarray))
私のフィッティング関数は次のように定義されます
def residualfunct(params, stationarray):
X = params['solutionX'].value
Y = params['solutionY'].value
Z = params['solutionZ'].value
result = numpy.array([s[3] - linalg.norm(array((X,Y,Z))-array((s[0],s[1],s[2]))) for s in stationarray])
print result
return result
このコードを実行すると、TypeError が発生します。
Residualfunct() は、正確に 2 つの引数 (5 つ指定) を取ります。
この呼び出しは最小化関数によって行われるため、これをどのように制御できるかわかりません。np.array を引数として渡しているので発生しているとしか思えませんが、これは仕方のないことのようです。誰かが私が間違っていることを見ることができますか?
ありがとう