Я использую Mathematica 7.размывание работы с Интерполированными функциями в системе Mathematica
У меня есть интерполированное функцию, вот пример:
pressures =
WeatherData["Chicago", "Pressure", {2010, 8}] //
DeleteCases[#, {_, _Missing}] & //
Map[{AbsoluteTime[#[[1]]], #[[2]]} &, #] & // Interpolation;
Я хотел бы вычислить его производный, которая является прямой вперед:
dpressures = D[pressures[x], x]
Теперь, если вы построить этот Funciton
Plot[3600*dpressures, {x, AbsoluteTime[{2010, 8, 2}], AbsoluteTime[{2010, 8, 30}]}]
(извините, не знаю, как опубликовать изображение из Mathematica, и у вас нет времени разобраться.) Вы найдете, что это очень шумно. Поэтому я хотел бы сгладить это. Моя первая мысль была использовать свертку, и интегрировать его с гауссовым ядром, что-то вроде следующего:
a = Convolve[PDF[NormalDistribution[0, 5], x], 3600*dpressures, x, y]
Возвращает
360 Sqrt[2/\[Pi]] Convolve[E^(-(x^2/50)), InterpolatingFunction[{{3.48961266 10^9, 3.49228746 10^9}},<>], ][x], x, y]
который выглядит разумным мне. К сожалению, я считаю, что я допустил ошибку где-то, потому что результат, который я возвращаю, кажется, не может быть оценен. То есть:
a /. y -> AbsoluteTime[{2010, 8, 2}]
Возвращает
360 Sqrt[2/\[Pi]] Convolve[E^(-(x^2/50)), InterpolatingFunction[{{3.48961266 10^9, 3.49228746 10^9}},<>][x], x, 3489696000]]
Что только не то, что я искал я ожидаю число между -1 и 1.