Составить систему уравнений...

yurimedvedev

Задача аппроксимации.
Есть x0, y0, x1, y1, ... xN, yN - координаты точек в 2-мерном пространстве.
Есть значения некоторой функции в этих точках: z0, z1,... zN
Хочу найти функцию F(x,y) вида F = a_0 + a_1*x + a_2*x^2 + ... a_k*x^k + b_1*y + b_2*y^2 + ... b_k*y^k, где k<N
ближе всего лежащую к этим точкам, то есть
S = Summ (y_i - F(x_i, y_i^2 минимальна.
Как составить систему уравнений для нахождения коэффициентов a, b?
Ясно, что надо частную производную от S по каждому из коэффициентов приравнять к нулю... Можете помочь? Я пытался, честно пытался, но у меня фигня выходит, то потеряю коэффициент, то целую сумму...

halithh

Это вполне стандартная задача регрессии, у которой известно решение. Что тебе лучше - готовые формулы, или полное решение?

yurimedvedev

Лучше готовые формулы. Если напишете решение, тоже хорошо...

halithh

"формула" следующая:
пусть требуется "подогнать" полученные k наблюдений (z1,...,zk) в точках (x1,...,xk) под сумму вида F(x) = a1*f1(x)+...+an*fn(x где x-вектор, fi(x) - некоторая функция. k должно быть больше n. Пусть матрица A имеет вид (f1(x..,fn(x где fi(x) понимается как столбец из (fi(x1fi(x2...,fi(xk. Пусть B = A^tA. Тогда столбец (a1,..,an) = B^(-1)A^t*z, где z = столбец (z1,...,zk).
PS Здесь могут быть небольшие неточности, лучше проверить формулы на паре простых примеров.
PPS Исправлено итоговое выражение.

yurimedvedev

А можно обобщить на ζ-мерный случай?

halithh

В каком смысле ζ-мерный случай?

yurimedvedev

Я правильно понял, что система уравнений выглядела как A^T * столбец_a = столбец_z ?
2. ζ-мерный в смысле того, что искомая функция зависит не от одного x, а от некоторого количества ζ переменных. Подходит ли описаный вами алгоритм для этого случая?

halithh

1. Я правильно понял, что система уравнений выглядела как A^T * столбец_a = столбец_z ?
Нет. Система выглядит как A^tA*столбец_a = A^t*столбец_z. Матрица A имеет ранг n (кстати, система функций на этих точках должна быть линейно независима поэтому она совершает сюръекцию, но далеко не всегда биекцию.
2. ζ-мерный в смысле того, что искомая функция зависит не от одного x, а от некоторого количества ζ переменных. Подходит ли описаный вами алгоритм для этого случая?
x рассматривается как вектор произвольной размерности.

Barmaglot

Я б не стал решать эту задачу
По многим причинам.
1) Даже в 1-мерном случае переходят к другому базису – многочленам Чебышева, поскольку матрица на определение коэффициентов перед 1, x, x^2, …, x^n будет плохо обусловлена, посему точное решение найти не удастся, а n особо не увеличишь. Ошибка при вычислении по формуле a0*1+a1*x+a2*x^2+… будет огромной!
2) Записав базис многочленов хотя бы второй степени в треугольнике можно увидеть, что туда входит xy. В то время как 1, x, x^2, …, x^n; 1, y, y^2, …, y^n – два набора функций цилиндрических в направлениях осей координат, разве ими можно аппроксимировать?
Какой выход?
Принцип: аппроксимировать функцию не в целом а в малом.
Разбить область на подобласти, например триангулировать. Построить базис в пр-ве конечных элементов (КЭ). Степень многочлена берется 1 или 2. Решить задачу аппроксимации на каждом треугольнике, где надо будет найти 3 или 6 коэффициентов.
Оставить комментарий
Имя или ник:
Комментарий: