Блок задач

3. Структуры данных

Темы
Сложность 4

Задача «2D-интерполяция»

Реализовать функцию двумерной интерполяции.

Входные данные

Текстовый файл:

1.0 2.1 3.421
2.54 2.1 5.491
12.0 2.24 3.411

Постановка задачи

Реализовать функцию двумерной интерполяции.

void interpolate_2d(const std::vector<double> &in, std::vector<double> &out, size_t Nsrc, size_t Ndst);

Предполагается, что массив in имеет размер Nsrc * Nsrc и содержит в себе двумерный массив отсчётов на равномерной сетке, а также что Ndst > Nsrc.

В результате работы interpolate_2d массив out приобретает размер Ndst * Ndst, и в него записываются интерполированные значения, соответствующие более мелкой сетке.

Формулы интерполяции

Желательно реализовать обе формулы.

Проверка

Кроме функции interpolate_2d должна быть реализована функция main, читающая исходный массив из файла и сохраняющая результат интерполяции для заданного Ndst в другой файл.

Выходные данные

Текстовый файл (не связан с вышеописанными входными данными)

1.0 2.1 3.421 1.3
2.54 2.1 5.491 1.4
12.0 2.24 3.411 1.5
12.0 2.24 3.411 1.5