2017-07-10 7 views
0

私は以下のデータに最適な曲線を適用しようとしています。私はデータがp1=p/dist^2の曲線に従うことを期待しています。ここでpは私の唯一のパラメータです。私は、私が期待していた曲線をかなり得ていない、どんな考えが助けになるか?指数scipy.optimize.curve_fitの警告を最適化

ありがとう、私はこの質問に答えるために何か他のものを提供する必要がある場合は私に教えてください!

dist = (1,2,3,3) 
ypos = np.arange(len(dist)) 
power1 = [0.33, 0.017, 0.0011, 0] 
power2 = [05.87, 3.34, 1.65, .035] 

def func(p,dist): 
    return p/(dist**2) 
popt, pcov = optimize.curve_fit(func, dist, array1,p0=[5]) 
print(popt) 
+0

データへのリンクを追加してください。 –

+1

私の最初の投稿にデータが追加されました。 –

答えて

0

私はあなたがポストされたデータの散布図を作成するとき、それはパルスまたはピークの方程式が必要とされるであろう以上のように見える、と私はあなたのコードを持っている数式を使用して良いフィット感を得ることができませんでした。ここに私の散布図コードと画像があります。

import numpy as np 
#import matplotlib 
import matplotlib.pyplot as plt 

frequency_a = np.array([1.0, 2.6, 5.1, 7.6, 1.01, 1.26, 1.51, 1.76, 2.01, 2.26]) 
dB_a = np.array([0.000, 0.001, 0.045, 0.099, 0.413, 1.004, 2.277, 1.529, 1.031, 0.919]) 


plt.plot(frequency_a, dB_a, 'o') # plot the raw data 
plt.ylim(-0.5, 2.0) 
plt.xlim(0.0, 8.0) 
plt.show() 

scatterplot

+0

さて、それは素晴らしいポイントです!それに基づいてトレンドラインをどのように追加することができるかについてのアドバイスはありますか?私はこれまでにPythonでベストフィットをしたことは一度もありませんし、コンセプトを理解していますが、コーディング自体はかなり失われています。 –

+0

私は散布図に直線的な傾向は見られないので、ここでの作成方法についてのアドバイスはできません。 –

+0

私は1 /(x^2)の関係を探しています。したがって、たとえばa /(x^2)ここでaは私の唯一のパラメータです。 –

関連する問題