0
私はscipy.optimize.curve_fitで自分のデータをカーブフィッティングしようとしています。何らかの理由で私の方程式が好きではありません。妥当な数を使って方程式をプロットすると、正しく見えます。だから私は私の方程式を信頼する。私が単純な方程式に収まるようにしようとすると、それはうまくいくので、私は一般的に自分のコードを信頼します。それがうまくいかない理由に関する助言?具体的なエラー戻り値は「残差は初期点で有限ではありません」です。妥当なものにp0を変更することはまた役に立ちません。scipy.optimize.curve_fitを使用してPythonにフィットする曲線
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np
Y=np.array([0.00001,1.421828697,2.553970883,3.340262844,3.931459808,
4.640896164,5.084293887,5.379892368,5.557251457,5.705050698,
5.823290091,5.911969636,5.971089332,6.059768876,6.118888573,6.178008269,
6.266687814])
X=np.array([0,2500,5000,7500,10000,15000,20000,25000,
30000,35000,40000,45000,50000,55000,60000,65000,70000])
plt.plot(X,Y,'g^')
def func(X,J,g):
u=6.720*10**-5
k=1.380*(10**-16)
T=2
N=1
x=g*J*u*(X)/(k*T)
return N*g*J*(((2*J+1)/(2*J))*(1/(np.tanh((2*J+1)*x/(2*J))))-(1/(2*J))*
(1/(np.tanh(x/(2*J)))))
plt.figure(1)
popt, pcov = curve_fit(func, X,Y,p0=[3.5,2],bounds=([0.25,0.001],[10,4]))
plt.plot(X, func(X, *popt), 'r--', label='fit-with-bounds')
print(" J is %s " %(popt[0]),"\n","g is %s" %(popt[1]))
エラーについては何が不明ですか?別の初期点を試してみてください。 – Julien
それは境界を指していますか?最初の点が何であるかわからない。 – EVS
ドキュメントを読むのはどうですか?初期点は 'p0'であり、指定されていなければ1に設定されます。 – Julien