Определение
Максимумы и минимумы данной функции - это наибольшие и наименьшие значения функции либо в заданном диапазоне, либо иным образом во всей области функции.
Вызов
Задача состоит в том, чтобы найти локальные максимумы и минимумы заданной полиномиальной функции любым удобным для вас способом . Не волнуйтесь, я постараюсь объяснить проблему и сделать ее максимально простой.
На входе будут содержаться все коэффициенты полинома от одной переменной в порядке убывания или увеличения мощности (на ваше усмотрение). Например,
[3,-7,1]
будет представлять3x2 - 7x + 1 = 0
[4,0,0,-3]
будет представлять4x3-3=0.
Как решить (используя производные)?
Теперь, скажем, наш ввод - [1,-12,45,8]
это не что иное, как функция .x3 - 12x2 + 45x + 8
Первая задача - найти производную этой функции. Поскольку это полиномиальная функция, то это действительно простая задача.
Производная IS . Любые постоянные термины, присутствующие с , просто умножаются. Кроме того, если есть добавленные / вычтенные термины, то их производные также будут добавлены или вычтены соответственно. Помните, что производная от любого постоянного числового значения равна нулю. Вот несколько примеров:
xn
n*xn-1
xn
x3 -> 3x2
9x4 -> 9*4*x3 = 36x3
-5x2 -> -5*2*x = - 10x
2x3 - 3x2 + 7x -> 6x2 - 6x + 7
4x2 - 3 -> 8x - 0 = 8x
Теперь решите уравнение, приравнивая новый многочлен к нулю и получите только целые значения x.
Поместите эти значения x в исходную функцию и верните результаты. Это должно быть выходной .
пример
Возьмем в качестве примера мы упоминали ранее, то есть [1,-12,45,8]
.
- Входные данные:
[1,-12,45,8]
- Функция:
x3 - 12x2 + 45x + 8
- Производная ->
3x2 - 24x + 45 + 0 -> [3,-24,45]
- Решая уравнение , получаем или .
3x2 - 24x + 45 = 0
x = 3
x = 5
- Теперь, поместив
x = 3
иx = 5
в функцию, мы получим значения(62,58)
. - Выход ->
[62,58]
Предположения
Предположим, что все входные коэффициенты являются целыми числами . Они могут быть в порядке увеличения или уменьшения мощности.
Предположим, что входное значение является по крайней мере 2-градусным полиномом . Если у полинома нет целочисленных решений, вы можете вернуть что угодно.
Предположим, что конечный результат будет только целыми числами.
Вы можете распечатать результаты в любом порядке. Степень входного полинома не должна превышать 5, чтобы ваш код мог с этим справиться.
Ввод будет действительным, так что решения х не являются седловыми точками.
Кроме того, вы не обязаны делать это по производному методу. Вы можете использовать любой метод, который вам нравится.
Пример ввода и вывода
[2,-8,0] -> (-8)
[2,3,-36,10] -> (91,-34)
[1,-8,22,-24,8] -> (-1,0,-1)
[1,0,0] -> (0)
счет
Это код-гольф, поэтому выигрывает самый короткий код.
(-1, 0, 1)
, что я считаю правильным ответом ... хотя не уверен. Если вы не согласны со мной, напишите мне в чате.The input will be valid so that the solutions of x are not saddle points
Случай,[1,0,0,3]
кажется, дает седловую точку.x^3 - 12x^2 + 45x
+8 = 0
, хотя лично я предпочитаю, чтобы вы написали это какf(x)=x^3-12x^2+45x+8
без,=0
потому=0
что не имеет смысла, так как мы имеем дело с функцией, а не решением уравненияОтветы:
Желе , 20 байт
Попробуйте онлайн!
объяснение
Вспомогательная функция в этой программе была взята из ответа г-на Xcoder здесь, который был основан на ответе Луиса здесь
источник
3
равна0
. редактировать о, вы уже сделали nvm, просто проголосовали за комментарий тогдаJavaScript (ES7),
129120 байтПринимает коэффициенты в порядке возрастания мощности.
Контрольные примеры
Показать фрагмент кода
комментарии
источник
0,0,1
(x ^ 2 = 0)Юлия 0,6 (с
Polynomials
пакетом), 57 байтПопробуйте онлайн!
Принимает коэффициенты в порядке возрастания, то есть первым вводом является постоянный член.
Пример выполнения:
источник
Java 8,
364239227226218 байтИспользует ту же функциональность из этого моего ответа.
-8 байт благодаря @ OlivierGrégoire , приняв массив в обратном порядке.
Объяснение:
Попробуйте онлайн.
источник
1,0,0
(x ^ 2 = 0)int... ,i, ...; for(;f>0;)A[--f]*=f;
. Если я не ошибаюсь, это должно сэкономить как минимум 4 байта. Если вы сделаете это, обязательно инвертируйте все свои обращения к входу.Wolfram Language (Mathematica) , 30 байтов
Принимает полином с чистой функцией (т. Е. Полином с
#
переменной в качестве переменной и с&
концом в конце).Попробуйте онлайн!
источник
Haskell , 89 байт
-3 байта благодаря Лайкони.
Попробуйте онлайн!
Принимает коэффициенты в обратном порядке.
источник
d<-tail$
можно сократить до_:d<-
.Python 3 , 156 байт
Попробуйте онлайн!
-2 байта благодаря Mr. Xcoder
-22 байта благодаря ovs
источник
Python + NumPy, 91
Попробуйте онлайн .
источник
Пари / ГП , 28 байт
Оцените полином по корням его производной.
Попробуйте онлайн!
источник