• записей
    20
  • комментариев
    76
  • просмотров
    19 276

Интерполяция

марклар

911 просмотр

Тем, кто всё ещё не знаком с такой замечательной и полезной вещью, объясняю два способа на примере дзета-функции Римана:

800px-Zeta_function_graph.png

Суть в том, что ничего о самой дзета-функции вам знать не надо.

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

Аппроксимированный участок функции (точками показаны табличные данные):

b3cb019be31a653d087f2765e7283b19.png

Обозначим искомое значение y0, а саму точку, в которой функция y(x) его принимает – x0.

d55cff4dc7a48a99dd901fd6161e4ddb.png

Дано: y1, y2, x1, x2, x0.

Требуется найти: y0.

Аналитический метод

Представим отрезок аппроксимированной функции между точками (x1; y1) и (x2; y2) в виде отрезка линейной функции y = kx+b.

Тогда имеем систему уравнений:

y1 = kx1+b;

y2 = kx2+b.

Решая её, находим k и b.

Для этого из первого уравнения выражаем b через k:

b = y1 – kx1.

Подставляем значение b во второе уравнение:

y2 = kx2+ y1 – kx1.

Выражаем k через известные y1, y2, x1, x2:

k = (y2 – y1) / (x2 – x1).

Подставляем найденное k в выражение b:

b = y1 – [(y2 y1) / ( x2 – x1)] × x1.

Подставляем найденные коэффициенты b, k и заданное x0 в уравнение y = kx+b:

y0 = kx0+b = [(y2 – y1) / (x2 – x1)] × x0+ y1 – [(y2 – y1) / (x2 – x1)] × x1.

Геометрический метод

Геометрический метод основан на простом и понятном принципе подобия треугольников. Для начала вычтем из большей ординаты меньшую. Получим два подобных прямоугольных треугольника:

5463b4af6ff072a14714289be2008288.png

- большой x1А12x2 с катетами x2А12 длиной (x2x1) и А12x1 длиной (y1 – y2);

- малый x2А0x0 с катетами x2A0 длиной (x2x0) и A0x0 неизвестной длины y01.

Из подобия треугольников следует соотношение:

(y1 – y2) / y01 = (x2 – x1) / (x2 – x0).

Откуда выражаем неизвестную y01:

y01 = (y1 – y2) × (x2 – x0) / (x2 – x1).

Тогда искомая ордината будет равна:

y0 = y2 + y01 = y2 + (y1y2) × (x2 – x0) / (x2 – x1).


0


0 комментариев


Нет комментариев для отображения

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас