Python кубический сплайн странно интерполируется - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь интерполировать, используя кубический сплайн, но интерполяция сильно колеблется вокруг точек данных.Я не знаю, как это исправить.Любой совет будет принят с благодарностью.

enter image description here

TY = [90.3601709789,40.5189212844,20.3763456417,10.8899070251,6.19675122846,5.23402053792,6.05144428822,9.64276229024,24.1886072903,41.5725945652,171.923304843]
TX = [0.93984962406,0.90225563910,0.84586466165,0.75187969925,0.56390977444,0.37593984962,0.18796992481,0.07518796992,0.01879699248,0.00939849624,0.00187969925]

ipos = TX[0:6]
jpos = TY[0:6]

minpos = min(jpos)
maxpos = max(jpos)

ineg = TX[5:11]
jneg = TY[5:11]

minneg = min(jneg)
maxneg = max(jneg)

ypos1 = interp1d(jpos,ipos)
ypos2 = interp1d(jpos,ipos, kind='cubic')
xpos = np.linspace(minpos,maxpos,10000,endpoint=True)

yneg1 = interp1d(jneg,ineg)
yneg2 = interp1d(jneg,ineg, kind='cubic')
xneg = np.linspace(minneg,maxneg,10000,endpoint=True)

plt.figure('T')
plt.xscale('log')
plt.plot(TX,TY)
plt.plot(xpos,ypos2(xpos))
plt.plot(xneg,yneg2(xneg))

Положительные и отрицательные стороны обусловлены тем, что данные изменяют направление в средней точке.

enter image description here

1 Ответ

0 голосов
/ 08 июня 2018

Кубические сплайны, как известно, склонны к колебаниям из-за требования непрерывной второй производной.Чтобы избежать этого, одним из способов будет использовать непрерывные сплайны C1.В земле скучной, посмотрите на PchpIntetpolator и / или Akima1DInterpolator

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...