2017-06-14 3 views
0

私はscipyの解析モデルに適合する必要のあるデータセット(xとy)を持っています。指数フィッティングの式scipyのディケイモデル

enter image description here

I(例えば指数関数)標準フィッティング方程式に単純に追加用語を含む、MATLAB曲線フィッティングツールボックスや他のいくつかのツールを使用して試みました。

私の実際の唯一の制約は、フィッティングする必要のあるパラメータの数を制限したいということです.4が理想的ですが、6が機能し、線形の上にあるデータセットに適合するモデルに多少敏感ですカーブの最初の部分。これが私が得ることができた多項式近似解を好きではない理由です。ここで

referencs用のデータは、

Y = np.array([7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.50E-01 , 7.49E-01 , 7.49E-01 , 7.49E-01 , 7.49E-01 , 7.49E-01 , 7.48E-01 , 7.48E-01 , 7.48E-01 , 7.47E-01 , 7.47E-01 , 7.46E-01 , 7.46E-01 , 7.45E-01 , 7.44E-01 , 7.44E-01 , 7.43E-01 , 7.42E-01 , 7.41E-01 , 7.40E-01 , 7.39E-01 , 7.38E-01 , 7.37E-01 , 7.36E-01 , 7.35E-01 , 7.34E-01 , 7.32E-01 , 7.31E-01 , 7.30E-01 , 7.28E-01 , 7.27E-01 , 7.25E-01 , 7.24E-01 , 7.22E-01 , 7.21E-01 , 7.19E-01 , 7.17E-01 , 7.16E-01 , 7.14E-01 , 7.12E-01 , 7.10E-01 , 7.08E-01 , 7.06E-01 , 7.04E-01 , 7.02E-01 , 7.00E-01 , 6.98E-01 , 6.96E-01 , 6.94E-01 , 6.92E-01 , 6.90E-01 , 6.88E-01 , 6.86E-01 , 6.83E-01 , 6.81E-01 , 6.79E-01 , 6.77E-01 , 6.75E-01 , 6.72E-01 , 6.70E-01 , 6.68E-01 , 6.65E-01 , 6.63E-01 , 6.61E-01 , 6.58E-01 , 6.56E-01 , 6.54E-01 , 6.51E-01 , 6.49E-01 , 6.46E-01 , 6.44E-01 , 6.42E-01 , 6.39E-01 , 6.37E-01 , 6.34E-01 , 6.32E-01 , 6.30E-01 , 6.27E-01 , 6.25E-01 , 6.22E-01 , 6.20E-01 , 6.17E-01 , 6.15E-01 , 6.12E-01 , 6.10E-01 , 6.08E-01 , 6.05E-01 , 6.03E-01 , 6.00E-01 , 5.98E-01 , 5.95E-01 , 5.93E-01 , 5.91E-01 , 5.88E-01 , 5.86E-01 , 5.83E-01 , 5.81E-01 , 5.79E-01 , 5.76E-01 , 5.74E-01 , 5.71E-01 , 5.69E-01 , 5.67E-01 , 5.64E-01 , 5.62E-01 , 5.60E-01 , 5.57E-01 , 5.55E-01 , 5.53E-01 , 5.50E-01 , 5.48E-01 , 5.46E-01 , 5.43E-01 , 5.41E-01 , 5.39E-01 , 5.36E-01 , 5.34E-01 , 5.32E-01 , 5.29E-01 , 5.27E-01 , 5.25E-01]) 
X = np.arange(len(Y)) 

最後に、私はsymfitを使用していますが、それは私の問題を解決するのに役立ちます場合、私はscipy.optimize.curve_fitまたは他の方法を使用することに開いています。

+0

データは、図 – Stelios

+0

@Stelios、はい、それは修正されましたに対応していません。申し訳ありませんが、私のインターネットが亡くなったので、ホットスポットを設定しなければなりませんでした。 –

答えて

2

3つのパラメータの関数fを使用してデータを適合させようとしています。この関数はx=0で定義されていないことに注意してください。しかし、scipyは他のすべてのポイントに対して合理的な適合を提供することができます。 x=0に有効な関数を取得するには、のxx+very_small_numberのように置き換えてください。

from scipy.optimize import curve_fit 

def f(x, a, b, c): 
    return a + b * (1 - np.exp(-c/x)) 

sol = curve_fit(f, X, Y, p0 = (.75,.75,200,)) 

plt.plot(X, Y, 'o', label = 'data') 
plt.plot(X, [f(x,*sol[0]) for x in X], lw = 3, label = 'fit') 

enter image description here

関連する問題