입방 스플라인 보간을하려고하는데 어떤 이유로 그 중간에 보간이 해제됩니다. 매우 신비 롭고 온라인에서도 비슷한 사건에 대한 언급을 찾을 수 없습니다.큐빅 스플라인 보간이 중간에서 벗어났습니다
이것은 내 논문을위한 것입니다. 그래서 일부 레이블 등을 의도적으로 애매하게 유지하기 위해 제외 시켰습니다. 그러나 모든 관련 코드는 다음과 같습니다. 문맥에서 이것은 천문학 관련 플롯입니다.
그리고 당신이 궁금해하는 경우
, 이들은 sum_all의 값은 다음과 같습니다from scipy.interpolate import CubicSpline
import numpy as np
import matplotlib.pyplot as plt
W = np.array([0.435,0.606,0.814,1.05,1.25,1.40,1.60])
sum_all = np.array([sum435,sum606,sum814,sum105,sum125,sum140,sum160])
sum_can = np.array([sumc435,sumc606,sumc814,sumc105,sumc125,sumc140,sumc160])
fall = CubicSpline(W,sum_all)
newallx=np.arange(0.435,1.6,0.001)
newally=fall(newallx)
fcan = CubicSpline(W,sum_can)
newcanx=np.arange(0.435,1.6,0.001)
newcany=fcan(newcanx)
#----plot
plt.plot(newallx,newally)
plt.plot(newcanx,newcany)
plt.plot(W,sum_all,marker='o',color='r',linestyle='')
plt.plot(W,sum_can,marker='o',color='b',linestyle='')
plt.yscale("log")
plt.ylabel("Flux S$_v$ [erg s$^-$$^1$ cm$^-$$^2$ Hz$^-$$^1$]")
plt.xlabel("Wavelength [n$\lambda$]")
plt.show()
내가 그에게서 얻을 줄거리는 보간에 명확한 차이와 함께, 다음과 같이 나온다 및 sum_can 배열 (나는 그것이 중요하지 않습니다 생각하지만, 당신이 원하는 경우에 대비 숫자가 스스로를 플롯) :
sum_all:
[ 3.87282732e+32 8.79993191e+32 1.74866333e+33 1.59946687e+33
9.08556547e+33 6.70458731e+33 9.84832359e+33]
can_all:
[ 2.98381061e+28 1.26194810e+28 3.30328780e+28 2.90254609e+29
3.65117723e+29 3.46256846e+29 3.64483736e+29]
격차는 [0.606,1 사이에 발생 .26194810e + 28] 및 [0.814.3.30328780e + 28]. 간격을 0.001에서 더 높은 값으로 변경하면 플롯이 실제로 중단되지 않고 y 축의 0 아래로 단지 넘어갑니다 (그러나 플롯은 연속입니다). 그런데 왜 그렇게합니까? 확실히 보간법이 아닙니다. 우리의 눈으로 바라 보는 것만으로도 분명히 두 지점 사이의 잘 보간 된 연결이 아닙니다.
모든 도움말이나 의견은 극명하게 평가 될 것입니다. 미리 감사드립니다.
나는 PGM 언어를 이해하지 않습니다하지만 난 당신이 4 개 컨트롤 포인트와't이^3'로 가장 높은 순서 다항식 부분이 하나의 큐빅 스플라인을 사용하는 가정 있도록 2 범프 한계를 최대 및 1 inflex 포인트. 귀하의 데이터 세트는 각각 더 많은 것을 가지므로 고차원 SPLINE을 사용하거나 (너무 진동하는 경향이 있습니다) [조각 별 보간] (http://stackoverflow.com/a/30438865/2521214)을 사용하십시오. – Spektre
@Spektre'scipy.interpolate.CubicSpline'은 ** piecewise ** 스플라인 보간을 수행합니다. 즉, 스플라인 수가 보간 할 점 수보다 1 작습니다. 따라서 한 쌍의 포인트 당 1 포인트의 굴곡을 가질 수 있습니다. – ImportanceOfBeingErnest
@ImportanceOfBeingErnest는 당신이 그것을 가지고있는 것처럼 보입니다 (+1) 나는 로그 스케일을 발견하지 못했습니다 .... – Spektre