2016-12-06 32 views
0

x値とy値に依存するz値を計算するPythonコードがあります。私は7つのx値と7つのy値と49のz値を持っています。Pythonで多項式面にフィット

ここで、次数2の多項式面をz = f(x、y)の形でフィットさせたいと思います。この目的を達成するMatlabコマンドを見つけました。 (https://www.mathworks.com/help/curvefit/fit.html

load franke 
sf = fit([x, y],z,'poly23') 
plot(sf,[x,y],z) 

しかし、私は、Pythonと私の2次関数のパラメータを計算したいと思います。私は、次のフィット機能をscipyのダウンロードcurve_fit機能を使用しようとしました:

def func(a, b, c, d ,e ,f ,g ,h ,i ,j, x, y): 
     return a + b * x**0 * y**0 + c * x**0 * y**1 + d * x**0 * y**2 
       + e * x**1 * y**0 + f * x**1 * y**1 + g * x**1 * y**2 
       + h * x**2 * y**0 + i * x**2 * y**1 + j * x**2 * y**2 

guess = (1,1,1,1,1,1,1,1,1,1) 
params, pcov = optimize.curve_fit(func, x, y, guess) 

しかし、この時点で私は混乱していますと、これは私のフィット関数のパラメータを取得するための正しいアプローチであれば、私は、わかりません。この問題の別の解決方法がありますか?どうもありがとう!

答えて

1

これはまさにこれを行うPython tkinter GUIアプリケーションを作成しました。matplotlibを使ってサーフェスプロットを描画し、フィット結果とグラフをPDFに保存できます。それはあなたの質問に示す同じ式であるような3D多項式「完全2次」を試してみてください

https://github.com/zunzun/tkInterFit/

:コードがでgithubの上にあります。