@HappyLynx

Существует ли обобщенный алгоритм поиска монотонной функции по трем точкам?

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

Вопрос 1.
Исходные данные: 3 точки (x1,y1),(x2,y2),(x3,y3), причем известно, что x1<x2<x3 и y1<y2<y3
Существует ли алгоритм построения функции, монотонной на интервале (x1;x3) , проходящей через такие три точки.
Полиномиальная квадратичная интерполяция очевидным образом не подходит из-за того, что минимум или максимум функции (вершина параболы) может лежать в интервале (x1;x3).

Если кто-то знает ответ на этот вопрос, то последующие два разрешатся автоматически.

Вопрос 2.
Существует ли алгоритм интерполяции, при котором для каждой последовательности точек x(n-1),x(n),x(n+1),x(n+2),...,x(k), удовлетворяющих условию y(n-1)>=y(n)<y(n+1)<y(n+2)<...<y(k-1)>=y(k) (то есть точки слева и справа от n выше нее, слева и справа от k ниже нее, а промежуточные точки возрастают), результирующая функция f(x) на отрезке [x(n);x(k)] удовлетворяет условиям:
f(x(i)) = y(i) для всех i = n..k
f'(x) != 0 (то есть нет локальных минимумов и максимумов)

Вопрос 3.
Аналогичен вопросу 2, только дополнительно необходимо, чтобы количество точек на отрезке [x(n);x(k)], где f''(x)=0, минимально. То есть минимально количество перегибов функции.
  • Вопрос задан
  • 311 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Andy_U
Ну, на первый вопрос ответить просто. Кусочно линейная интерполяция удовлетворяет всем вашим указанным в вопросе требованиям :). А если таки учесть "дополнения и приложения", то надо на том из двух участков, где наклон прямой больше (пусть это будет, например, левый подинтервал), сделать интерполяцию функцией

y = a+b*x+c*x**2

такой что:

1) Значение параболы в x1 равно y1
2) Значение функции в x2 равно y2
3) Производная функции в x2 равно наклону прямой в правом подинтервале.

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

P.S. Если прямая на правом подинтервале не устраивает, ее можно тоже чуть изогнуть.

P.P.S. Однако, такой (и любой подобный) алгоритм не даст решения для большего числа точек, поскольку первая производная будет иметь разрывы, которые Вас, как я понял, не устраивают. А при этом условии даже для четырех точек легко придумать пример, чтобы монотонность была, но обязательно с перегибом - взять 4 точки на S-образной кривой (две поближе к краям)... И как не крутись, без перегиба в центральной области не обойтись.
Ответ написан
@HappyLynx Автор вопроса
Оптимальным вариантом ответа на первый вопрос для себя нашел a + b / (cx + d). Т.е. вариацию на тему обратной функции 1/x.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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