Здравствуйте! Вопрос касается трикубической интерполяции (на регулярной сетке). Возможно, кто-то уже разбирался с этим и подскажет мне оптимальное решение. Я так понимаю, что существует два варианта - посчитать все константы полинома и запомнить их (Lekien and Marsden, Tricubic Interpolation in Three Dimensions, 2005) или хранить только значения в вершинах и интерполировать значения «на лету» (http://en.wikipedia.org/wiki/Tricubic_interpolation). Для случая, когда надо получить только значение (интерполированное) функции, второй вариант вроде более привлекателен в смысле быстродействия (затраты памяти очевидно у второго метода всегда в 64 раза меньше). Вопрос первый, в быстродействии возникает, если надо не только значение, но и производные функции (опять же из интерполированного полинома). Для случая честных значений констант полинома это весит около 1.5К умножений/суммирований. А кто делал по (второму) варианту со скалярными произведениями? Целесообразно ли персчитать дискретные точки в явный полином (через численные градиенты)? Второй вопрос в точности, если исходная функция аналитическая и доступны ее производные. Предполагается, что функция достаточно гладкая для выбранного шага решетки, т.е. практически не более 1 перемены знака на кубик решетки. Сильно ли пострадает точность интерполяции при замене всех аналитических производных на интерполяцию по вершинам? Меня, конкретно, интересует применимость посчитаны градиентов для квазиньютоновских методов безусловной оптимизации. П.С. Скорость построения самой решетки, да и в принципе ее размер в памяти для моей задачи не существенны. Важна скорость вычисления значений и градиентов. Ну и точность тоже. Спасибо!
|