Обработка "Интерполяция данных"

20.03.14

Разработка - Математика и алгоритмы

Интерполяция (интерполирование) — в вычислительной математике способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений. Любителям астрономии часто приходится оперировать именно с дискретными наборами значений, когда необходимо получить значение функции не только для табличных значений аргумента. Например, очень часто требуются координаты Солнца относительно центра Земли, но почти всегда не на 0h всемирного времени, как дается в Астрономических Ежегодниках, а в самые разные моменты времени, которые являются промежуточными между табличными.

Скачать исходный код

Наименование Файл Версия Размер
Интерполяция данных
.epf 260,46Kb
14
.epf Interpol_1 260,46Kb 14 Скачать

1. Общие сведения об интерполяции.

Интерполяция (интерполирование) — в вычислительной математике способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений. Любителям астрономии часто приходится оперировать именно с дискретными наборами значений, когда необходимо получить значение функции не только для табличных значений аргумента. Например, очень часто требуются координаты Солнца относительно центра Земли, но почти всегда не на 0h всемирного времени, как дается в Астрономических Ежегодниках, а в самые разные моменты времени, которые являются промежуточными между табличными.

В силу сказанного, очень большое практическое значение имеет следующая задача: дана табличная функция; необходимо найти способ приближенного определения значений функции для произвольных значений аргумента, не совпадающих с табличными значениями.

На практике чаще всего применяют интерполяцию многочленами. Это связано прежде всего с тем, что многочлены легко вычислять и легко аналитически находить их производные. К указанным методам относят:

  • Метод линейной интерполяции;
  • Интерполяционный метод Ньютона;
  • Метод конечных разностей;
  • Метод интерполяции многочленом Лагранжа;
  • Метод интерполяции Эйткена;
  • Метод интерполяции кубическим сплайном.

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

2. Интерполяция сплайном третьего порядка.

Пусть на некотором отрезке в точках x0, x1, x2, ... xN известны значения функции f(x), а именно y0, y1, y2, ... yN. Требуется построить интерполирующую функцию F(x), такую, что бы она принимала в указанных точках те же значения: F(x0) = y0, F(x1) = y1, ... F(xN) = yN.

Геометрически это значит, что нужно найти такую кривую y = F(x), которая проходит через систему заданных точек.

Очевидно, что данная задача может иметь либо бесчисленное множество решений, либо совсем не иметь решений. В случае интерполяции сплайном кривая F(x) состоит из кусочков, причем на каждом отрезке [xk-1; xk] функция F(x) представляет собой кубический полином вида Fk(x) = ak + bk(x-xk) + ck(x-xk)2 + dk(x-xk)3. При этом:

F = F1 на интервале [x0, x1]

F = F2 на интервале [x1, x2]

...

F = FN на интервале [xN-1, xN]

При этом, на каждом из отрезков [xk-1; xk] коэффициенты полинома ak, bk, ck, dk принимают разные значения.

Чтобы вычислить эти коэффициенты, кроме условия непрерывности функции на полиномы следует наложить дополнительные условия – во-первых, условие непрерывности первой и второй производной функции F(x), во-вторых, условие равенства вторых производных функции на концах отрезка [x0; xN], т.е.

Fk-1(xk-1) = Fk(xk-1),

F'k-1(xk-1) = F'k(xk-1),

F''k-1(xk-1) = F''k(xk-1),

F''(x0)=0, F''(xN)=0.

(k=2,3,..N )

Выражения для производных функций Fk принимают вид:

F'k(x) = bk + 2ck(x - xk) + 3dk(x-xk)2

F''k(x) = 2ck + 6 dk(x-xk)

Если подставить эти выражения в условия непрерывности, то можно получить следующую систему:

a1 - b1h1 + c1h12 - d1h13 = y0

ak = yk, k=1,2,..N

ak-1 = ak - bkhk + ckhk2 - dkhk3, k=2,3...N

bk-1 = bk - 2ckhk + 3dkhk2, k=2,3...N

ck-1 = ck - 3dkhk, k=2,3...N

c1 - 3d1h1 = 0

cN = 0,

где hk = xk - xk-1, k=1,2,...N

Пусть lk = (yk - yk-1)/hk, k=1,2,...N, а c0 = 0 .

Тогда представленную выше систему уравнений можно решить с помощью метода прогонки:

δ1 = - h2/(2(h1+h2))

λ1 = 3(l2 - l1)/(2(h1+h2))

δk-1 = - hk/(2hk-1+2hk+hk-1δk-2), k=3,4, ... N

λk-1 = (3lk - 3lk-1 - hk-1λk-2)/(2hk-1+2hk+hk-1δk-2)

При этом коэффициенты ck находятся по формулам обратной прогонки:

ck-1 = δk-1ck + λk-1, k = N, N-1, N-2, ... 2

После нахождения ck вычисление коэффициентов bk и dk не представляет труда:

bk = lk + (2ckhk + hkck-1)/3, k=1,2,...N

dk = (ck - ck-1)/(3hk), k=1,2,...N

Источник: http://www.alexeypetrov.narod.ru/C/spline_about.html

3. Выполнение интерполяции.

Источником для интерполирования являются данные, загруженные в таблицу «Исходные данные». Формирование этой таблицы может осуществляться в двух режимах: 

  • В ручном режиме – путем активирования управляющей кнопки «Добавить», расположенной в командной панели табличной части;
  • В режиме автоматизированной загрузки данных, записанных в файл Excel – путем активизации управляющей кнопки «Загрузить», расположенной в командной панели формы.

 При использовании метода автоматизированной загрузки данных пользователю открывается диалог выбора исходного файла (см. рис.). После выбора файла и активации управляющей кнопки «Открыть» для пользователя становятся доступны следующие реквизиты группы «Параметры расчета»:

  • Номер листа: определяет порядковый номер листа с загружаемыми данными в рабочей книге Excel. Нумерация листов начинается с единицы;
  • Начальная строка: определяет порядковый номер первой строки листа, с которой будет осуществлена загрузка данных. Нумерация строк начинается с единицы;
  • Колонка аргумента: порядковый номер колонки листа, которая содержит массив загружаемых значений аргументов;
  • Колонка функций: порядковый номер колонки листа, которая содержит массив загружаемых значений функций.

 Если параметры расчета сформированы не корректно, система предупредит об этом пользователя, в противном случае, все загружаемые из листа рабочей книги Excel данные станут доступны для просмотра в таблице «Исходные данные» формы (см. Рис. 1). Для того, что бы получить интерполируемое значение функции, необходимо в реквизите «Интерполировать для аргумента» указать значение выбранного аргумента, и активизировать управляющую кнопку «Расчет» (см. Рис. 2). При этом найденное значение будет добавлено в таблицу «Расчетные значения», и в таблицу «Исходные данные», причем в последней таблице добавленная строка выделяется красным шрифтом.

4. Визуализация.

С целью наглядного представления поведения функции для пользователя доступна функциональность элементов управления, представленных на закладке «Визуализация» (см. Рис. 3). К сожалению, платформа не обеспечивает возможность работы с диаграммами и графиками в той степени, в которой это необходимо для любителя астрономии. В силу сказанного, процедура построения графика, и параметров его отображения реализована средствами https://google-developers.appspot.com/chart/interactive/docs/index. Посредством внедренных в конфигурацию скриптов, пользователь имеет возможность изменять цвет и ширину линии графика, устанавливать шрифт подписей, размер отображаемых точек, изменять ориентацию осей диаграммы, и т.п. При конвертации цвета автором была использована методика Михаила Журавлева (см. //infostart.ru/public/115963/).

Астрономия

См. также

Метод Дугласа-Пойкера для эффективного хранения метрик

Математика и алгоритмы Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    1883    stopa85    12    

34

Алгоритм симплекс-метода для решения задачи раскроя

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    4676    user1959478    50    

34

Регулярные выражения на 1С

Математика и алгоритмы Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    7672    4    SpaceOfMyHead    17    

56

Модель распределения суммы по базе

Математика и алгоритмы Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    7945    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4558    fishca    13    

36

Интересная задача на Yandex cup 2021

Математика и алгоритмы Бесплатно (free)

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    8951    John_d    73    

46

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

Подробный разбор, с примером использования, встроенного механизма кластеризации 1С.

31.08.2021    7981    dusha0020    8    

70
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Re:аниматор 338 21.03.14 07:05 Сейчас в теме
очень часто требуются координаты Солнца относительно центра Земли


А где кроме астрономии это можно применить и можно еще пример относительно земных практик?

Лично меня не то что редко интересуют координаты Солнца относительно центра Земли, а собственно вообще не интересуют :-)
+
2. v.selivanov 20 21.03.14 13:29 Сейчас в теме
(1) Re:аниматор,

Добрый день!

В принципе интерполяция, как численный метод, применима ВЕЗДЕ, где:

1. Существует набор данных, который представлен в виде дискретных значений - аргумента и функции;
2. Возникает необходимость получить значение функции для того аргумента, который не попал в существующий дискретный ряд.

Например, у Вас есть таблица с двумя колонками: в первой колонке (аргумент) указан период с шагом в 10 дней, а во второй колонке - курс валюты. Если Вам необходимо приближенно оценить валютный курс, скажем, на пятый день после табличной даты, Вы можете прибегнуть к методам интерполяции (их много).

Другой пример: Опытным путем определена высота над уровнем моря (значение функции) для точек, которые имеют определенные географические координаты (значение аргумента). Вам необходимо приближенно оценить высоту для той точки, для которой определение высоты опытным путем не проводилось.

Третий пример: Вам необходимо распечатать фотографию большого размера. Причем настолько большого, что он превышает количество мегапикселей на картинке. В процессе интерполяции Вы можете сформировать дополнительные точки, и методом интерполирования вычислить их тон и цвет на основании тона и цвета соседних точек.
+
3. Re:аниматор 338 21.03.14 14:48 Сейчас в теме
(2) Добрый! Понятно, спасибо за разъяснение.
+
4. endym 214 26.03.14 11:28 Сейчас в теме
Еще интерполяция применима для расчета объемов сыпучих веществ (это когда они горкой лежат).
Видел иные решения но не в 1с).
+
5. bulpi 215 26.03.14 13:57 Сейчас в теме
Интерполяция относится к "общечеловеческим" ценностям. Она нужна в очень многих местах. Как рычаг и колесо.
+
6. Ktuhh 05.12.14 16:09 Сейчас в теме
Возможно ли изменить обработку для расчета экстраполяции?
+
Оставьте свое сообщение