Я полагаю, что именно вы задали аналогичный вопрос на MATLAB Central на днях. Вы не разместили свои данные там, поэтому я не мог дать хороший ответ.
Оценка второй производной - трудная вещь. Это некорректная проблема. Дифференцирование само по себе является усилителем шума, поэтому оценка второй производной в два раза хуже. Это просто нелегко, конечно, не очень хорошо.
Используя этот набор точек, я решил оценить сплайн-модель, используя мой SLM toolbox .
x = [2271.38, 2555.30, 2697.26, 2768.24, 2839.22, 2910.20, 2981.18, 3123.14, 3407.06];
f = [577.4063, 311.3341, 193.0833, 141.3048, 95.1501, 58.8130 32.4931, 6.9511, 0.1481];
Прежде всего, нанесите данные. Что я могу узнать из этого сюжета? Могу ли я сделать какие-либо выводы?
Простой график говорит мне вместе с вашими комментариями, что я ожидаю, что эта функция будет монотонной убывающей функцией. Кажется, что он асимптотически линейный на каждом конце, как гиперболический сегмент, с положительной кривизной во всей области.
Так что теперь я бы использовал эту информацию для построения модели ваших данных, используя мой инструментарий SLM.
slm = slmengine(x,f,'plot','on','decreasing','on','knots',20, ...
'concaveup','on','endconditions','natural');
slmengine предназначен для получения информации от вас, в форме предписаний для формы кривой. Вы обнаружите, что, предоставляя такую информацию, она значительно упорядочивает форму результата, чтобы соответствовать вашим знаниям о процессе. Здесь я только что сделал несколько предположений о форме кривой из ваших комментариев.
В приведенном выше звонке я поручил SLM:
- сделать график результата, когда закончите
- создать монотонно убывающую функцию x
- используйте 20 одинаково расположенных узлов
- заставляет кривую иметь всюду положительную вторую производную
- установить вторые производные в конце равными нулю
График в том виде, в котором он был сгенерирован, сам по себе является графическим интерфейсом, позволяющим отображать функцию и данные, а также отображать производные результата. Вертикальные зеленые линии - это расположение узлов.
Здесь мы видим, что подгонка кривой является разумным приближением к тому, что вы ищете.
Как насчет второго деривата? Конечно, SLM - это кусочно-кубический инструмент. Поэтому вторые производные являются только кусочно-линейными. Это проблема? Вы попросите меня предоставить инструмент для сплайнов более высокого порядка? Жаль, но нет, я не буду. Эти производные более высокого порядка слишком слабо оценены, чтобы запрашивать очень гладкий результат. На самом деле, я был бы вполне доволен этим прогнозом. Обратите внимание, что глюки во второй производной были последовательными. Если бы я использовал больше узлов или меньше, они все еще были там. Это хороший способ узнать, является ли фигура, которую вы видите, особенностью кривой или просто артефактом размещения узлов.
Смотрите, что ограничения, которые я наложил на форму кривой, привели к подгонке, которая была вполне разумной, несмотря на то, что я использовал гораздо больше узлов, чем у меня было точек данных. У ОДС не возникло проблем с оценкой.
Если я хочу попытаться получить более плавную оценку второй производной, просто используйте больше узлов. УУЗР относительно быстрый. Таким образом, с 50 узлами мы получаем очень похожий результат для второй производной кривой.
Вы можете найти SLM (здесь) на MATLAB Central. Требуется набор инструментов оптимизации.