Поиск наибольшего/наименьшего значения функции

Определите, какое число будет напечатано в результате выполнения следующего алгоритма: \[\begin{array}{|l|l|l|} \hline \text Python & \text{C++} \\ \hline def \; f(x): \; \; & \#include \; <iostream> \; \; \\ \quad \; \; return \; abs(abs(x-14)+abs(x-7)-19)+12 \; \; & using \; namespace \; std; \; \\ a=-40 \; \; & int \; f(int \; x) \; \{ \; \; \\ b=40 \; \; &\quad return \; abs(abs(x-14)+abs(x-7)-19)+12; \; \; \\ M=a \; \; & \} \; \; \\ R=f(a) \; \; & int \; main() \; \{ \; \; \\ for \; i \; in \; range(a,b+1): \; \; &\quad int \; a, \; b, \; M, \; R; \; \; \\ \quad \; \; if \; f(i)<R: \; \; &\quad a=-40; \; b=40; \; \; \\ \quad \quad \; \; M=i \; \; &\quad M=a; \; R=f(a); \; \;\\ \quad \quad \; \; R=f(i) \; \; &\quad for(int \; i=a; \; i<=b; \; i++) \; \;\\ print(M+R) \; \; &\quad \quad if \; (f(i)<R) \; \{ \; \;\\ \; \; &\quad \quad \quad M=i; \; \; \\ \; \; &\quad \quad \quad R=f(i); \; \; \\ \; \; &\quad \quad \} \; \; \\ \; \; &\quad cout \; << \; M+R; \; \; \\ \; \; &\quad return \; 0; \; \; \\ \; \; & \} \; \; \\ \hline \end{array}\]
Первый способ. Рассмотрим функцию \(f(x) = ||x - 14| + |x - 7| - 19| + 12.\) Построим график данной функции:
1) Построим \(y = |x - 14| + |x - 7|,\) раскрыв модули, определив знаки на соответствующих промежутках;
2) Сдвинем полученный график на 19 единиц вниз;
3) Теперь наложим знак модуля на полученное: все, что ниже оси \(x,\) отразим относительно нее;
4) Последнее: сдвинем полученное на 12 единиц вверх.
График готов — теперь рассмотрим цикл. В переменной \(R\) хранится какое-то значение функции, в цикле мы рассматриваем все значения функции \(y = f(x)\) для \(x\) \(\in \) \([a;\) \(b]\) и находим минимальное (из условия \(f(i) < R,\) т.е., если, перебирая значения функции, мы видим значение меньше найденного ранее, мы его сохраняем — ищем минимум), записывая его и \(x,\) при котором это значение достигается, в переменные \(R\) и \(M\) соответственно. Обратим внимание, что, если минимальное значение будет достигнуто еще раз, условие в цикле не будет выполнено, т.к. знак неравенства строгий.
Таким образом, мы ищем минимальное значение функции и \(x,\) при котором это значение достигается в первый раз. Это легко сделать с помощью построенного графика:
По графику видим, что минимум в первый раз достигается при \(x = 1,\) значение — \(y = 12.\) Из кода легко понять, что рассматриваются только целые значения \(x.\) Таким образом, получим \(M = 1,\) \(R = 12\) — вывод: 1 + 12 = 13.
Второй способ. Как и в первом способе, понимаем, что в программе для \(f(x) = ||x - 14| + |x - 7| - 19| + 12\) ищутся \(x\) и \(y,\) (их значения хранятся в \(M\) и \(R,)\) при которых функция впервые достигает минимальное значение, причем рассматриваем \(x\) \(\in \) \([a;\) \(b].\)
Рассмотрим \(f(x) = ||x - 14| + |x - 7| - 19| + 12\) и заметим, что \(f(x) \geqslant 12,\) т.к. \(||x - 14| + |x - 7| - 19| \geqslant 0,\) значит, минимум (т.е. значение), равный 12, достигается при \(||x - 14| + |x - 7| - 19| = 0,\) т.е. при \(x = 1\) и при \(x = 20.\) Впервые минимальное значение достигнуто при \(x = 1,\) значит, \(M + R = 1 + 12 = 13. \)
Определите, какое число будет напечатано в результате выполнения следующего алгоритма: \[\begin{array}{|l|l|l|} \hline Python & C++ \\ \hline def \; f(x): \; \; & \#include \; <iostream> \; \; \\ \quad \; \; return \; 17*(x - 4)*(x - 7) \; \; & using \; namespace \; std; \; \\ a=-20 \; \; & int \; f(int \; x) \; \{ \; \; \\ b=20 \; \; &\quad return \; 17*(x - 4)*(x - 7); \; \; \\ M=a \; \; & \} \; \; \\ R=f(a) \; \; & int \; main() \; \{ \; \; \\ for \; i \; in \; range(a,b+1): \; \; &\quad int \; a, \; b, \; M, \; R; \; \; \\ \quad \; \; if \; f(i)<R: \; \; &\quad a=-20; \; b=20; \; \; \\ \quad \quad \; \; M=i \; \; &\quad M=a; \; R=f(a); \; \;\\ \quad \quad \; \; R=f(i) \; \; &\quad for(int \; i=a; \; i<=b; \; i++) \; \;\\ print(M) \; \; &\quad \quad if \; (f(i)<R) \; \{ \; \;\\ \; \; &\quad \quad \quad M=i; \; \; \\ \; \; &\quad \quad \quad R=f(i); \; \; \\ \; \; &\quad \quad \} \; \; \\ \; \; &\quad cout \; << \; M; \; \; \\ \; \; &\quad return \; 0; \; \; \\ \; \; & \} \; \; \\ \hline \end{array}\]
Рассмотрим функцию \(f(x) = 17\cdot(x - 4)\cdot(x - 7):\)
Знаем, что при раскрытии скобок мы получим положительный коэффициент перед \(x^2:\) действительно, при перемножении скобок \(x^2\) возникнет только при умножении \(x\) на \(x,\) который далее домножится на 17. Тогда, так как коэффициент перед \(x^2\) положителен, график \(f(x)\) — парабола ветвями вверх с нулями в \(x = 4\) и \(x = 7.\) Известно, что абсцисса вершины параболы — среднее арифметическое абсцисс корней, значит, — 5.5. Значение минимума (вершины): \(17\cdot 1.5 \cdot (-1.5) = -38.25. \)
Рассмотрим цикл. В переменной \(R\) хранится какое-то значение функции, в цикле мы рассматриваем все значения функции \(y = f(x)\) для \(x\) \(\in \) \([a;\) \(b]\) и находим минимальное (из условия \(f(i) < R,\) т.е., если, перебирая значения функции, мы видим значение меньше найденного ранее, мы его сохраняем — таким образом, мы сохраняем все меньшее и меньшее значение или не меняем его — значит, ищем минимум), записывая его значение и \(x,\) при котором это значение достигается, в переменные \(R\) и \(M\) соответственно. Обратим внимание, что, если минимальное значение будет достигнуто еще раз, условие в цикле не будет выполнено, т.к. знак неравенства строгий.
Таким образом, мы ищем минимальное значение функции и x, при котором это значение достигается в первый раз. Знаем, что парабола ветвями вверх достигает минимум в вершине, на всякий случай приведем график, который легко построить из рассуждений выше:
Заметим, что в программе рассматриваются только целые числа (обратите внимание на тип переменных), значит, \(x = 5.5\) не подойдет. Тогда проверим два ближайших значения — \(f(5)\) и \(f(6).\) \(f(5) = 17 * 1 * (-2) = -34, \; f(6) = 17 * 2 * (-1) = -34.\) Так как мы ищем, когда минимальное значение достигнется первый раз, то в ответ записываем \(x = 5.\) \(M = 5, R = -34.\)
Определите, какое число будет напечатано в результате выполнения следующего алгоритма: \[\begin{array}{|l|l|l|} \hline \text Python & \text{C++} \\ \hline def \; f(x): \; \; & \#include \; <iostream> \; \; \\ \quad \; \; return \; 17*(14-x)*(14-x)+19 \; \; & using \; namespace \; std; \; \\ a=-20 \; \; & int \; f(int \; x) \; \{ \; \; \\ b=20 \; \; &\quad return \; 17*(14-x)*(14-x)+19; \; \; \\ M=a \; \; & \} \; \; \\ R=f(a) \; \; & int \; main() \; \{ \; \; \\ for \; i \; in \; range(a,b+1): \; \; &\quad int \; a, \; b, \; M, \; R; \; \; \\ \quad \; \; if \; f(i)<R: \; \; &\quad a=-20; \; b=20; \; \; \\ \quad \quad \; \; M=i \; \; &\quad M=a; \; R=f(a); \; \;\\ \quad \quad \; \; R=f(i) \; \; &\quad for(int \; i=a; \; i<=b; \; i++) \; \;\\ print(R) \; \; &\quad \quad if \; (f(i)<R) \; \{ \; \;\\ \; \; &\quad \quad \quad M=i; \; \; \\ \; \; &\quad \quad \quad R=f(i); \; \; \\ \; \; &\quad \quad \} \; \; \\ \; \; &\quad cout \; << \; R; \; \; \\ \; \; &\quad return \; 0; \; \; \\ \; \; & \} \; \; \\ \hline \end{array}\]
Рассмотрим функцию \(f(x) = 17 \cdot (14 - x) \cdot (14 - x) + 19 = 17 \cdot (x - 14) \cdot (x - 14) + 19 = 17 \cdot (x - 14)^2 + 19\) –– графиком является парабола ветвями вверх, функция принимает только значения не меньше 19, т.к. выражение 17\(\cdot (x - 14)^2\) всегда неотрицательно.
Рассмотрим цикл. В переменной \(R\) хранится какое-то значение функции, в цикле мы рассматриваем все значения функции \(y = f(x)\) для \(x\) \(\in \) \([a;\) \(b]\) и находим минимальное (из условия \(f(i) < R,\) т.е., если, перебирая значения функции, мы видим значение меньше найденного ранее, мы его сохраняем — таким образом, мы сохраняем все меньшее и меньшее значение или не меняем его — значит, ищем минимум), записывая его значение и \(x,\) при котором это значение достигается, в переменные \( R\) и \(M\) соответственно. Обратим внимание, что, если минимальное значение будет достигнуто еще раз, условие в цикле не будет выполнено, т.к. знак неравенства строгий.
Ищем минимальное значение. Т.к. функция принимает только значения не меньше 19, минимальное, которое может быть, –– \(f(x) = 19.\) Покажем, что это значения достигается при \(x\) \(\in [a; b]:\) действительно, при \(x = 14\) функция принимает значение 19. Значит, ответ: 19.
Определите, какое число будет напечатано в результате выполнения следующего алгоритма: \[\begin{array}{|l|l|l|} \hline \text Python & \text{C++} \\ \hline def \; f(x): \; \; & \#include \; <iostream> \; \; \\ \quad \; \; return \; (x*x-12)*(x*x-12)+5 \; \; & using \; namespace \; std; \; \\ a=-11 \; \; & int \; f(int \; x) \; \{ \; \; \\ b=11 \; \; &\quad return \; (x*x-12)*(x*x-12)+5; \; \; \\ M=a \; \; & \} \; \; \\ R=f(a) \; \; & int \; main() \; \{ \; \; \\ for \; i \; in \; range(a,b+1): \; \; &\quad int \; a, \; b, \; M, \; R; \; \; \\ \quad \; \; if \; f(i)<R: \; \; &\quad a=-11; \; b=11; \; \; \\ \quad \quad \; \; M=i \; \; &\quad M=a; \; R=f(a); \; \;\\ \quad \quad \; \; R=f(i) \; \; &\quad for(int \; i=a; \; i<=b; \; i++) \; \;\\ print(M) \; \; &\quad \quad if \; (f(i)<R) \; \{ \; \;\\ \; \; &\quad \quad \quad M=i; \; \; \\ \; \; &\quad \quad \quad R=f(i); \; \; \\ \; \; &\quad \quad \} \; \; \\ \; \; &\quad cout \; << \; M; \; \; \\ \; \; &\quad return \; 0; \; \; \\ \; \; & \} \; \; \\ \hline \end{array}\]
Рассмотрим цикл. В переменной \(R\) хранится какое-то значение функции, в цикле мы рассматриваем все значения функции \(y = f(x)\) для \(x\) \(\in \) \([a;\) \(b]\) и находим минимальное (из условия \(f(i) < R,\) т.е., если, перебирая значения функции, мы видим значение меньше найденного ранее, мы его сохраняем — таким образом, мы сохраняем все меньшее и меньшее значение или не меняем его — значит, ищем минимум), записывая его значение и \(x,\) при котором это значение достигается, в переменные \(R\) и \(M\) соответственно. Обратим внимание, что, если минимальное значение будет достигнуто еще раз, условие в цикле не будет выполнено, т.к. знак неравенства строгий.
Таким образом, мы ищем \(M\) — абсциссу точки минимума.
Рассмотрим \(f(x) = (x^2-12) \cdot (x^2-12) + 5:\) функция не принимает значения, меньшие 5, т.е. минимум -–- \(f(x) = 5\) при \(x^2 - 12 = 0.\)
Получаем нецелые значения \(x.\) Рассмотрим ближайшие целые: \(x = -4,\) \(x = -3,\) \(x = 3,\) \(x = 4.\) Т.к. ищем, когда минимум достигается впервые, значения \(x = 3,\) \(x = 4\) отпадают. Или непосредственными вычислениями \(f(-4),\) \(f(-3),\) или рассуждениями (рассмотрим часть функции на \(x < 0:\) график функции симметричный, значит, значение меньше в точке, которая ближе в точке минимума, т.е. в -3) получаем -3.
Определите, какое число будет напечатано в результате выполнения следующего алгоритма: \[\begin{array}{|l|l|l|} \hline \text Python & \text{C++} \\ \hline def \; f(x): \; \; & \#include \; <iostream> \; \; \\ \quad \; \; return \; (x*x-16)*(x*x-16)+5 \; \; & using \; namespace \; std; \; \\ a=-11 \; \; & int \; f(int \; x) \; \{ \; \; \\ b=11 \; \; &\quad return \; (x*x-16)*(x*x-16)+5; \; \; \\ M=a \; \; & \} \; \; \\ R=f(a) \; \; & int \; main() \; \{ \; \; \\ for \; i \; in \; range(a,b+1): \; \; &\quad int \; a, \; b, \; M, \; R; \; \; \\ \quad \; \; if \; f(i)<R: \; \; &\quad a=-11; \; b=11; \; \; \\ \quad \quad \; \; M=i \; \; &\quad M=a; \; R=f(a); \; \;\\ \quad \quad \; \; R=f(i) \; \; &\quad for(int \; i=a; \; i<=b; \; i++) \; \;\\ print(M) \; \; &\quad \quad if \; (f(i)<R) \; \{ \; \;\\ \; \; &\quad \quad \quad M=i; \; \; \\ \; \; &\quad \quad \quad R=f(i); \; \; \\ \; \; &\quad \quad \} \; \; \\ \; \; &\quad cout \; << \; M; \; \; \\ \; \; &\quad return \; 0; \; \; \\ \; \; & \} \; \; \\ \hline \end{array}\]
Рассмотрим цикл. В переменной \(R\) хранится какое-то значение функции, в цикле мы рассматриваем все значения функции \(y = f(x)\) для \(x\) \(\in \) \([a;\) \(b]\) и находим минимальное (из условия \(f(i) < R,\) т.е., если, перебирая значения функции, мы видим значение меньше найденного ранее, мы его сохраняем — таким образом, мы сохраняем все меньшее и меньшее значение или не меняем его — значит, ищем минимум), записывая его значение и \(x,\) при котором это значение достигается, в переменные \(R\) и \(M\) соответственно. Обратим внимание, что, если минимальное значение будет достигнуто еще раз, условие в цикле не будет выполнено, т.к. знак неравенства строгий.
Таким образом, мы ищем \(M\) — абсциссу точки минимума.
Рассмотрим \(f(x) = (x^2-16) \cdot (x^2-16) + 5:\) функция не принимает значения, меньшие 5, т.е. минимум –– \(f(x) = 5\) при \(x^2 - 16 = 0.\)
Мы ищем \(x,\) при которое минимальной значение достигается впервые. Значит, из -4 и 4 выбираем -4.
Определите, какое число будет напечатано в результате выполнения следующего алгоритма: \[\begin{array}{|l|l|l|} \hline \text Python & \text{C++} \\ \hline def \; f(x): \; \; & \#include \; <iostream> \; \; \\ \quad \; \; return \; 4*x*x-7*abs(x)+375 \; \; & using \; namespace \; std; \; \\ a=-12 \; \; & int \; f(int \; x) \; \{ \; \; \\ b=12 \; \; &\quad return \; 4*x*x-7*abs(x)+375; \; \; \\ M=a \; \; & \} \; \; \\ R=f(a) \; \; & int \; main() \; \{ \; \; \\ for \; i \; in \; range(a,b+1): \; \; &\quad int \; a, \; b, \; M, \; R; \; \; \\ \quad \; \; if \; f(i)<R: \; \; &\quad a=-12; \; b=12; \; \; \\ \quad \quad \; \; M=i \; \; &\quad M=a; \; R=f(a); \; \;\\ \quad \quad \; \; R=f(i) \; \; &\quad for(int \; i=a; \; i<=b; \; i++) \; \;\\ print(M) \; \; &\quad \quad if \; (f(i)<R) \; \{ \; \;\\ \; \; &\quad \quad \quad M=i; \; \; \\ \; \; &\quad \quad \quad R=f(i); \; \; \\ \; \; &\quad \quad \} \; \; \\ \; \; &\quad cout \; << \; M; \; \; \\ \; \; &\quad return \; 0; \; \; \\ \; \; & \} \; \; \\ \hline \end{array}\]
Рассмотрим цикл. В переменной \(R\) хранится какое-то значение функции, в цикле мы рассматриваем все значения функции \(y = f(x)\) для \(x\) \(\in \) [\(a;\) \(b\)] и находим минимальное (из условия \(f(i) < R,\) т.е., если, перебирая значения функции, мы видим значение меньше найденного ранее, мы его сохраняем — таким образом, мы сохраняем все меньшее и меньшее значение или не меняем его — значит, ищем минимум), записывая его значение и \(x,\) при котором это значение достигается, в переменные \(R\) и \(M\) соответственно. Обратим внимание, что, если минимальное значение будет достигнуто еще раз, условие внутри цикла не будет выполнено, т.к. знак неравенства строгий.
Таким образом, мы ищем \(M\) — абсциссу точки минимума.
Рассмотрим \(f(x) = 4x^2-7|x|+375\) и построим график функции: при неотрицательных \(x\) получаем \(f(x) = 4x^2-7x+375,\) функция симметрична относительно оси \(y\) (четная, т.к. \(f(-x) = f(x)),\) тогда отражением получаем такой график:
Из него легко увидеть, что минимум впервые достигается в \(x = -1\) — это и есть ответ.