0
scipy.optimize.curve_fit으로 데이터를 커브로 맞추려고합니다. 웬일인지 그것은 나의 방정식을 좋아하지 않는다. 그럴듯한 숫자를 사용하여 방정식을 그렸다면 올바르게 보입니다. 그래서 나는 내 방정식을 믿는다. 간단한 방정식에 맞추려고하면 일반적으로 내 코드를 신뢰할 수 있습니다. 왜 작동하지 않는지에 대한 조언이 있습니까? 구체적인 오류 반환 값은 "잔여 물은 초기 점에서 유한하지 않습니다."입니다. 합리적인 아무것도 P0를 변경하면 나누기 0으로 오류를 일으키는 원인이 정확히 제로의 X 값을 포함 또한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