Как разделить «пик» функции на два простых пика?

Доброго времени суток. Простите за тривиальный вопрос. Тяжеловато приходится в университете с математикой, а в особенности с функциональным анализом. Имеются экспериментальные данные, точки, по которым строится график, не имеющий на данном этапе аналитической формулы. Например так
b98fb82e824c46f09392826ff00039f6.jpg
Предположим, что исходный "пик и плечо" функции является суперпозицией двух "простых пиков", например парабол. Как разделить этот пик? При этом получить 2 функции (аналитические формулы, например в виде многочлена n-й степени), при сложении которых получим исходный график.
Наверняка необходимо сначала аппроксимировать функцию, а далее каким либо методом разделить. Собственно проблема - отсутствие и незнание метода. Буду очень благодарен, если ткнете в литературу с описанием данного метода, а ещё лучше с алгоритмом его реализации.
  • Вопрос задан
  • 496 просмотров
Решения вопроса 2
Mrrl
@Mrrl
Заводчик кардиганов
Сумма двух парабол - это тоже парабола. Как и сумма любых двух многочленов - многочлен той же степени.
Возможно, график удастся представить в виде суммы двух нормальных распределений:
f(x)=a1*exp((x-b1)^2/c1)+a2*exp((x-b2)^2/c2).
Получается 6 неизвестных. Записываете функцию F(a1,b1,c1,a2,b2,c2)=sum((f(x_i)-y_i)^2) и ищете её минимум. Например, методом градиентного спуска.
Ответ написан
barmaley_exe
@barmaley_exe
Если Вы верите, что наблюдения являются суперпозицией двух парабол, т.е. имеют зависимость y = f(g(x)), где g и h — полиномы второй степени, то можно выписать уравнение для y, которое будет зависеть от 6 параметров (по 3 на каждую параболу). Пусть это будет зависимость вида y = F(x; a,b,c,d,e,f) где F(x) = h(g(x)) — полином, соответствующий суперпозиции парабол, а a...f — коэффициенты этих парабол.

Запишем теперь систему уравнений:
Для каждой точки подставим её x в F, оставив все остальные переменные переменными. Получим N полиномов (по числу точек-наблюдений) нескольких переменных, зависящих от параметров a...f. Для каждого такого полинома мы знаем, что если подставить правильные a...f, то мы получим y этой точки. Т.е. каждой точке (xk, yk) соответствует уравнение F(xk; a,b,c,d,e,f) = yk. Решить это уравнение можно методом Ньютона, например.

P.S. Решаемая система не будет линейной.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sam002
@sam002
Линуксойд, кодер, немного физик.
Краткий ответ на вопрос: вы хотите невозможного, если строго. Можно ещё и эвристические алгоритмы приплести, но вам, кажется, другое хотелось))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы