0

Условие Дана функция f(x)=sin(−10⋅x^2+5x+10).

Для указанной точки x требуется определить значение производной f′(x), а также является ли точка x экстремумом функции f(x).

Формат входных данных Входные данные содержат вещественное число x.

Формат выходных данных Первая строка выходных данных должна содержать значение производной в точке x, с точностью не менее 5 десятичных цифр после запятой.

Вторая строка должна содержать YES, если точка x отстоит от точки экстремума не более чем на 10 − 5 , и NO в противном cлучае

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cmath>
#include <fstream>
#include <iomanip>

using namespace std;

int main() { long double x; cin >> x; double_t radian = cos(-10 * pow(x, 2) + 5 * x + 10) * (-20 * x + 5); cout << fixed << setprecision(9) << radian << endl; if (sin(-10 * pow(radian, 2) + 5 * radian + 10) == 0) cout << "YES"; else cout << "NO"; }

Программа спокойно проходит тест при числе 0, но валится при числе 0.7764046320109196 , результатом работы должны стать число 0 и YES.

1 Answers1

2

Во-первых, нехорошо сравнивать вещественные числа с нулём или с другим значением на точное равенство.

Во вторых, значение в точке экстремума для синуса -1.0 или 1.0 (здесь 1.0)

if (abs(1.0d-abs(sin(-10 * x * x) + 5 * x + 10))) <= 1e-5) cout << "YES";

Да, и забыл - нафига значение производной (radian) подставлять под функцию?

И мелкое - pow для квадрата использовать неразумно.

Ещё одно - в постановке задачи сказано проверить, что точка является экстремумом - а для этого нужно убедиться, что первая производная 0, а вторая не нулевая. Однако вывод этого не требует.

MBo
  • 53,555
  • Плюсую, ради интереса - почему pow для квадрата не стоит использовать? (pow(x, 2) и x * x все равно один и тот же код сгенерируют для процессора). – Vladimir Gamalyan Nov 22 '21 at 04:25
  • 2
    @Vladimir Gamalyan Умный компилятор делает так, но вряд ли это гарантируется - а вдруг через экспоненту будет считаться? Конечно, это могут быть просто личные пристрастия (в том числе по удобству чтения) – MBo Nov 22 '21 at 04:34
  • @VladimirGamalyan https://ru.stackoverflow.com/a/1143442/195342 – Harry Nov 22 '21 at 05:06