Skip to content

dprotopopov/polylib

Repository files navigation

Ещё одна аппроксимация полиномом функции нескольких переменных

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

Классическая формула для аппроксимации функции одной переменной по ближайшим p точкам

  • P(X) = SUM Yi*П ( X-Xj )/( Xi-Xj ) , где i=1..p и j<>i
  • deg P(X) = p-1

Обобщение классической формулы для аппроксимации функции нескольких переменной по ближайшим p точкам

  • P(X) = SUM Yi*П < X-Xj , Xi-Xj > / < Xi-Xj , Xi-Xj > , где i=1..p и j<>i
  • deg P(X) = p-1

Скалярное произведение векторов будем вычислять с учётом квадратов дисперсий значений аргументов Dx

  • с целью учета равнозначности каждой координаты аргумента вычисляем 𝑥Dx[k] =𝑀M2[k] − M1[k]∗M1[k]
  • < A ; B > = SUM A[k] * B[k] / Dx[k]

Алгоритм

  1. Для заданных векторов Xi рассчитываем вектор Dx квадратов дисперсий значений аргументов
  2. Для вектора X находим p ближайших точек X1,...,Xp , где расстояния между точками вычисляется с учётом квадратов дисперсий значений аргументов
  3. Вычисляем значение полинома P(X) = SUM Yi*П < X-Xj , Xi-Xj > / < Xi-Xj , Xi-Xj > , где скалярное произведение вычисляется с учётом квадратов дисперсий значений аргументов

Демонстрация аппроксимации для функции двух переменных

history.txt :

  • -1 -1 -10
  • 1 1 10
  • 0 0 0
  • -1 1 -8
  • 1 -1 -20

Построим график значений полинома на решётке с шагом 0.1 в программе gnuplot

  • predict.exe -history history.txt -input input.txt -output output.txt -p 5
  • splot "output.txt"

Используемое программное обеспечение

  • Microsoft Visual Studio 2013 - среда программирования
  • gnuplot - кросс-платформенный инструмент для построения графиков http://www.gnuplot.info

About

Аппроксимация функции нескольких переменных

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published