2016-09-29 1 views
0

Я хочу найти наименее y = mx + b, так что y > f(x).Как найти наименьшую линейную функцию, которая больше, чем все мои данные?

В принципе, у меня есть данные в синем цвете, и я хочу, чтобы найти функцию в красном цвете:

my data and the end result

Эффективность, а не полная точности, имеет важное значение. Я пробовал линейную регрессию, но это дает значение, которое пересекает данные.

Кроме того, я использую Java, но проблема должна быть достаточно общей, чтобы это не имело значения.

Какова была бы функция в красном, и что было бы эффективным способом ее вычисления?

+0

Это могло бы помочь, если бы вы могли уточнить «наименьшую линию». Предположим, например, ваши данные имели максимум в середине. Тогда горизонтальная линия по максимуму была бы выше всех ваших данных, но вы могли бы немного повернуть ее относительно максимума, и у вас будет линия над вашими данными. Какой из них был бы самым низким? – dmuir

ответ

1

Это может быть сделано, например, с методом под названием «Ограниченная оптимизация линейной аппроксимацией (COBYLA)». У Scipy есть оболочка python для реализации FORTRAN. Вы можете указать произвольное количество функций ограничения, например, чтобы заставить подгон всегда больше данных.

Смежные вопросы