Введение
Приветствую, уважаемые читатели! Сегодня предлагаю поразмышлять о следующей задачке:
Дано пар точек на плоскости . Все различны. Необходимо найти многочлен такой, что , где
Переводя на русский язык имеем: Иван загадал точек на плоскости, а Мария, имея эту информацию, должна придумать функцию, которая (по меньшей мере) будет проходить через все эти точки. В рамках текущей статьи наша задача сводится к помощи Марии окольными путями.
«Почему окольными путями?» — спросите вы. Ответ традиционный: это статья является продолжением серии статей дилетантского характера про математику, целью которых является популяризация математического мира.
Процесс
Для начала стоит отметить, что некоторое кол-во интерполяционных многочленов уже, разумеется, существует. Оные полиномы как раз предназначены для решения искомой задачи. Среди них особенно известны такие как полином Лагранжа и Ньютона.
А также необходимо внести ясность, что такое «произвольные функции» (термин приходит из названия текущей статьи). Под ними понимается любая унарная функция, результат которой есть биективное отображение аргумента.
В рамках статьи предлагаю за такую функцию взять десятичный логарифм и следующие точки:
Представляя их на плоскости, должно получится нечто следующее:
Нетрудно заметить, что сейчас кол-во пар точек равно .
При решении данной задачи приходит на ум некая системы уравнений, где кол-во линейно-независимых строк равно . Что же это за система уравнений такая?
Давайте попробуем функцию записать в виде суммы десятичных логарифмов с коэффициентами про оных (да так, чтобы кол-во коэффициентов было равно ):
Аргументы при различные чтобы избежать линейной зависимости строк в будущем (можно придумать другие). А также, учитывая, что область определения функции как минимум (на основе заданных условием точек), мы таким образом обеспечиваем существование области значений для функции в этой области определения.
Так как нам известны пар точек, то обратимся к ним для того, чтобы построить следующую тривиальную систему:
Тривиальность системы заключается в том, что мы просто найдем такие , которые будет удовлетворять всему набору условия.
Собственно решая данную систему относительно получим следующее решение:
На этом задача естественным образом подходит к концу, остается только записать это в единую функцию:
Она, разумеется, будет проходить через заданный набор точек. А график функции будет выглядеть следующим образом:
Также, ради наглядности, можно привести аппроксимированную систему решений:
Тогда аппроксимированный вид функции будет следующий:
Разумеется, никто не говорит о том, что полученная функция будет минимальной (тот же полином Лагранжа даст более короткую форму). Однако, данный метод позволяет выразить функцию через набор произвольных функций (правда, имея в виду ограничения, заданные выше по статье).
Различные примеры
На десерт аналогично построим функцию в радикалах:
Составим систему уравнения для нахождения коэффициентов:
Её решение единственно и выглядит следующим образом:
Тогда готовая функция выглядит следующим образом:
Что по совместительтву является полином Лагранжа для данного набора точек (т.к. оный в неявном виде реализует радикальную форму алгоритма из статьи). График на области заданных точек выглядит так:
Самым интересным в данной истории является то, что произвольные функции для построения конечной функции можно
Где — коэффициенты которые предстоит найти через систему уравнений (СЛАУ), а — некоторые функции, которые обеспечат линейную независимость при нахождении коэффициентов.
А дальше — по алгоритму выше, всё совершенно аналогично. Не забывая о том, что должны быть определены на заданных условием точках.
К примеру можно показать функцию, состоящую из полностью различных базовых функций:
Дабы удовлетворить заданному набору точек, коэффициенты будут в таком случае следующие (найдены строго по алгоритму из статьи):
А сама функция будет такой:
График же будет выглядит практически также как предыдущий (на области заданных точек).
Если хочется более «гладкий» график, то можно посмотреть в сторону факториальной формы, например такой:
Найдем коэффициенты:
Подставим оные в готовую функцию:
А также полюбуемся очень хорошим графиком:
Зачем это нужно?
Да хотя бы для того, чтобы представить себе пучок веревок, стянутых пластиковыми хомутами :)
(* Тут мы просто наложили все графики друг на друга)
На этом в рамках текущей статьи все, рекомендую поиграться самостоятельно.
Всего наилучшего,
с вами был Петр.
Комментарии (8)
multiprogramm
28.11.2017 16:31Как я понял из статьи, речь идёт об одномерной интерполяции (т.к. рассматриваются только графики функций из R в R). В таком случае в самом начале задача интерполяции многочленом дана несколько небрежно. Необходимо рассматривать не произвольные точки на плоскости, а такие, что все абсциссы точек будут различными, если, конечно, мы не говорим о кратных узлах (но там совсем другая история).
masai
29.11.2017 20:07Биекция — слишком сильное ограничение. Тем более, вы потом используете квадрат, а он не биективный. Я думаю, раз статья нестрогая, хватило бы слов о том, что система, о которой вы пишете, не всегда имеет решения. И кратко показать пару разных случаев.
leshabirukov
Почему Алисе?
ParadoxFilm Автор
Спасибо, поправил. Причина ошибки кроется в том, что изначально я хотел использовать традиционные для подобных схем имена (Боб и Алиса), но в последствии решение перевесило в сторону более «русских» имен.
leshabirukov
Да это понятно. По существу, какие преимущества может дать нам выбор альтернативных базисных функций? Могу ли я допустим, быстрее рассчитать набор a,b,c,d… (если мне надо подобрать интерполяционный многочлен в реальном времени.)
ParadoxFilm Автор
Алексей, тут необходимо определиться с понятием «альтернативная базисная функция». По той простой причине что функции в действительности являются разными, но имеют конечный набор одинаковых пар точек на плоскости. Надеюсь, это и подразумевалось.
В силу того, что расчет набора a,b,c,d… в зависимости от выбора функций находится за разное время (сравните логарифмическую и радикальную формы), то, разумеется, один быстрей, другой медленнее. Поэтому ваше предположение верно.
В конце статьи также приведен графический способ применения (можно также попробовать перенести алгоритм в трехмерное пространство).
windgrace
Может быть много причин — например, какие-то априорные знания о функции, которую мы хотим аппроксимировать. Другой пример — методы конечных элементов, для них важна т.н. матрица масс (по сути, матрица скаларных произведений базисных функций). Эту матрицу надо уметь обращать, в зависимости от базовых функций эта матрица может быть или очень хорошей, или очень плохой.