Наименьшие квадраты Python естественные шлицы

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

Существует пакет в scipy, который делает то, что я хочу для неестественных шлицов.

import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate, randn

x = np.arange(0,5,1.0/6)
xs = np.arange(0,5,1.0/500)

y = np.sin(x+1) + .2*np.random.rand(len(x)) -.1

knots = np.array([1,2,3,4])
tck = interpolate.splrep(x,y,s=0,k=3,t=knots,task=-1)
ys = interpolate.splev(xs,tck,der=0)

plt.figure()
plt.plot(xs,ys,x,y,'x')
8
задан Eldila 14 March 2010 в 05:09
поделиться

1 ответ

Файл spline.py внутри этого tar-файла с этой страницы по умолчанию соответствует естественному сплайну . Также на этой странице есть код, который в основном утверждает то, что вы хотите. Пакет pyD3D также имеет естественную сплайн-функцию в своем модуле pyDataUtils . Последний вариант мне кажется наиболее многообещающим. Однако, похоже, у него нет возможности устанавливать свои собственные узлы. Может быть, если вы посмотрите на источник, вы сможете найти способ исправить это.

Кроме того, я нашел это сообщение в списке рассылки Scipy, в котором говорится, что использование s = 0.0 (как в данном коде) делает сплайны, подогнанные с помощью описанной выше процедуры, естественным образом в соответствии с составителем сообщения. Я нашел эту функцию splmake , у которой есть возможность выполнять естественную подгонку сплайна, но, посмотрев на исходный код, я обнаружил, что она еще не реализована.

6
ответ дан 5 December 2019 в 22:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: