Аналог решателя оптимизации(Excel) в Python

#python #optimization #solver

Вопрос:

У меня есть общее время езды на велосипеде за первые 14 дней

 time = [2.29,2.29,3.15,3.89,4.72,5.21,5.21,5.55,5.8,6.18,6.44,6.9,7.11,7.32]
 

Я знаю, что эти значения описываются уравнением

 y(t) = a*ln(t b)
 

Где:

первый день моей поездки

a,b — коэффициенты, подлежащие определению

Мне нужно найти правильные коэффициенты a и b для значений за 14 дней с оптимизацией квадратов суммы отклонений(довольно просто с помощью решателя в Excel). А затем спрогнозируйте значение за 30 дней. Как найти эти коэффициенты в python? Спасибо, что помогли мне!

Комментарии:

1. просто подтверждаю, что я правильно понял — вы действительно хотите наилучшим образом соответствовать, используя функцию естественного логарифма? Основной рецепт состоит в том, чтобы выровнять проблему, а затем применить к ней scipy.stats.linregress. Если вы подтвердите, что я правильно понял вопрос, я опубликую полный код

2. На самом деле — извините, но моя математика подводит меня в этом вопросе. Я не думаю, что знаю, как преобразовать эту форму уравнения в линейный вариант. Пробовал все, что мог, получал логи и экспоненты, выходящие из моих ушей, но не могу их линеаризовать. Почему бы не попробовать подгонку y = a*x b?

3. @DmytroBugayev все дело в моей задаче) Мне нужно оптимизировать функцию журнала. И не обязательно использовать все точки. Мы можем использовать, например, только 3-й(3,15), 7-й(5,21), 10-й(6,18)и 14-й(7,32) дни.

4.Так что вы могли бы использовать scipy minimize это для атаки, но мне любопытно, почему вы выбрали это для для y(t) ? Если вы хотите подогнать кривую, которая, по вашему мнению, управляется логарифмической функцией, стандартная форма y(t) = a b ln(t) -это та, которая имеет линейное преобразование и решает сразу

5. Спасибо, ребята. Я решил свою проблему с помощью scipy.optimaze.curve_fit