def linearize(p, x):
return p[0] * x**p[1]
def error(p, x, y):
return (np.log10(y) - np.log10(linearize(p, x)))
from scipy import optimize
args = freq_log[1:9063], np.abs(spec_log[1:9063])
qout, success = optimize.leastsq(error,
[1e5,-0.8],
args=args,
maxfev=3000)
fig,ax1=plt.subplots(figsize=(5,5))
spec = ax1.plot(freq_log,np.abs(spec_log), 'o', alpha=0.3)
approx = ax1.plot(freq_log[1:], linearize(qout, freq_log[1:]), linewidth=3)
는
내가 코드를 복제하려고, 나는이 사건에서와 선형화 무엇인지 이해하려고 노력하고, 그것은 무엇이 인수 및 반환은 다음과 같은 오류를 해결하기 위해 무엇을이 경우 선형화는 무엇을합니까?
현재는 반환 런타임 오류와 ValueError를
RuntimeWarning: divide by zero encountered in power return p[0] * x**p[1]
RuntimeWarning: invalid value encountered in power return p[0] * x**p[1]
ValueError: object too deep for desired array
내 주요 관심사는 그 누구도 날이 오류를 일으키는 방법과 그것을 해결하기 위해 무엇 이해하는 데 도움이, 처음 네 줄입니까?
전체 코드는 그럼에도 불구하고, 그것이 알고 가치가 https://github.com/seg/tutorials-2017/blob/master/1710_Colored_inversion/Colored_inversion_notebook.ipynb
감사합니다. 선형화를위한 p [0]과 p [1]이 무엇인지 간략하게 설명해 주시겠습니까? 이 경우 0으로 나누기를 일으키는 것은 따르지 않습니다. – user3736201
x 값이어야합니다. x 값이 0이 아닌지 확인하는 것이 좋습니다. 아마도 매우 작은 숫자로 대체하고 오류가 지속되는지 확인하십시오. 또한, 나는 조금 주위에 냄새가났다. 그리고 그 오류는 이전 버전의 scipy와 numpy로 인한 것일 수도있다. 그래서 당신도 같은 업데이 트하는 것이 좋습니다. –
아. 당신은 정확합니다, 코드의 나머지 부분과 독립적으로 섹션을 실행 해 보았지만 정상적으로 작동합니다. 그러나, 나는 x가 무엇으로 정의되어 있는지 모른다. 나는 특별히 x를 설정하지 않았다. 이것은 원형 질문 일 수 있지만이 경우에 정의 된 x는 무엇입니까? 그 정보는 문제를 완전히 해결하는 데 도움이 될 것입니다. – user3736201