Интерполяция Python: точность методов? - PullRequest
0 голосов
/ 11 февраля 2019

Интерполяция Python имеет 3 поддерживаемых метода:

Поддерживаются «линейный» и «ближайший», а также « splinef2d ».«Splinef2d» поддерживается только для двумерных данных.

В Викиверситете это объясняется как полиномиальная интерполяция, и я думаю, что она должна быть более точной, чем линейная ...

Итак, 2 вопроса здесь:

  1. что такое splinef2d?Это ссылка из Викиверситета?
  2. Какой из трех доступных методов более точен при интерполяции?ближайший, билинейный или сплайнf2d?

1 Ответ

0 голосов
/ 12 февраля 2019

Это требует немного больше копания в scipy.Метод splinef2d по существу подгоняет ваши данные к поверхности.Метод, который вам нужно изучить, это scipy.interpolate.bisplrep .Это оборачивается вокруг подпрограммы FITPACK surffit .Насколько я могу судить, переменные имеют тип real.При настройках компилятора по умолчанию это означает real(kind=8), поэтому вы смотрите на double точность. Ожидается, что это заразно, поэтому Python также работает с той же точностью.

Вы можете повторить упражнение сейчас для QHull для получения подробной информации об интерполяции LinearND.Основываясь на том, что я вижу из их репозитория git, похоже, что он имеет точность double.

Со стороны python переменные объявлены float, а документация гласит:

На типичной машине с Python для плавающего Python доступно 53 бита точности

Что касается точности упакованных функций, по умолчанию Python float имеет двойную точность.Смотрите этот ответ .

...