Нахождение локального минимума / максимума кубической функции - PullRequest
0 голосов
/ 17 сентября 2018

Я хочу запрограммировать функцию Python, которая принимает 6 переменных, a, b, c, d, e, f, где a, b - интервал для вычисления (например, [1, 3], все действительные числа) и c, d, e, f - коэффициентыкубического полинома, то есть f(x) = cx^3 + dx^2 + ex + f, и возвращает локальный мин / макс на интервале [a, b].

У меня есть приблизительное представление (хотя вычислительное время было бы плохо), как его запрограммировать,где я создаю новый список шагов 0.01 или что-то похожее маленькое от a до b, оцениваю f для каждого значения, а затем просто возвращаю мин / макс списка.Это займет очень много времени для a, b значений, которые очень далеко друг от друга.

Каков наилучший способ сделать это?Существуют ли внешние библиотеки для научных / математических вычислений?Спасибо.

1 Ответ

0 голосов
/ 17 сентября 2018

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

  • получить первую и вторую производные
  • найти нули первой производной (решить квадратное уравнение)
  • проверить вторую производную в найденных точках - знак говорит, является ли эта точка минимальной, максимальной или седловой точкой

Я думаю, что дифференцирование должно быть в пакете sympy

Также проверьте, предполагает ли постановка задачи учет граничных значений (как @Lakshay Garg замечает в комментариях)

...