Я делаю кубический сплайн-интерполяции, используя scipy.interpolate.splrep следующим образом:Попадая коэффициенты кубического сплайна из scipy.interpolate.splrep
import numpy as np
import scipy.interpolate
x = np.linspace(0, 10, 10)
y = np.sin(x)
tck = scipy.interpolate.splrep(x, y, task=0, s=0)
F = scipy.interpolate.PPoly.from_spline(tck)
печатаю т и с:
print F.x
array([ 0. , 0. , 0. , 0. ,
2.22222222, 3.33333333, 4.44444444, 5.55555556,
6.66666667, 7.77777778, 10. , 10. ,
10. , 10. ])
print F.c
array([[ -1.82100357e-02, -1.82100357e-02, -1.82100357e-02,
-1.82100357e-02, 1.72952212e-01, 1.26008293e-01,
-4.93704109e-02, -1.71230879e-01, -1.08680287e-01,
1.00658224e-01, 1.00658224e-01, 1.00658224e-01,
1.00658224e-01],
[ -3.43151441e-01, -3.43151441e-01, -3.43151441e-01,
-3.43151441e-01, -4.64551679e-01, 1.11955696e-01,
5.31983340e-01, 3.67415303e-01, -2.03354294e-01,
-5.65621916e-01, 1.05432909e-01, 1.05432909e-01,
1.05432909e-01],
[ 1.21033389e+00, 1.21033389e+00, 1.21033389e+00,
1.21033389e+00, -5.84561936e-01, -9.76335250e-01,
-2.60847433e-01, 7.38484392e-01, 9.20774403e-01,
6.63563923e-02, -9.56285846e-01, -9.56285846e-01,
-9.56285846e-01],
[ -4.94881722e-18, -4.94881722e-18, -4.94881722e-18,
-4.94881722e-18, 7.95220057e-01, -1.90567963e-01,
-9.64317117e-01, -6.65101515e-01, 3.74151231e-01,
9.97097891e-01, -5.44021111e-01, -5.44021111e-01,
-5.44021111e-01]])
так я поставляюсь й массив как:
array([ 0. , 1.11111111, 2.22222222, 3.33333333,
4.44444444, 5.55555556, 6.66666667, 7.77777778,
8.88888889, 10. ])
Q.1: The Fx (узлы) не является таким же, как оригинальным массив х и имеет Дублировать e (возможно, чтобы заставить первую производную до нуля?). Также некоторые значения в x (1.11111111, 8.88888889) отсутствуют в F.x. Есть идеи?
Q.2 Форма F.c является (4, 13). Я понимаю, что 4 исходит из того, что это кубический сплайн. Но я не знаю, как выбрать коэффициенты для каждого из 9 разделов, которые я хочу (от x = 0 до x = 1.11111, x = 1.111111 до x = 2.222222 и т. Д.). Любая помощь в извлечении коэффициентов для разных сегментов была бы оценена.
я сделал следующее: TCK = scipy.interpolate.splrep (X, Y, S = 0, т = х). Тем не менее, я получаю ошибку на этом как: tck = scipy.interpolate.splrep (x, Y, s = 0, t = x) Файл «/Library/Python/2.7/site-packages/scipy/interpolate/fitpack.py ", строка 515, в splrep raise _iermess [ier] [1] (_ iermess [ier] [0]) ValueError: Ошибка при входных данных – user3440489
Извините, но я не вижу никаких намеков на« выбор »узлов там. Любая ссылка на это будет полезна. – user3440489
Измененный ответ, чтобы получить дополнительную информацию о массиве 't' и добавлен пример. Удачи! –