9 задача, паскаль, пожалуйста

0 голосов
19 просмотров

9 задача, паскаль, пожалуйста


image

Информатика (299 баллов) | 19 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
Вспоминаем математику. Если функция дважды дифференцируема, то её минимум находится в точке х тогда, когда в этой точке первая производная равна нулю, а вторая производная имеет положительное значение.
\displaystyle f(x)=ax^3+bx^2+cx+d \\ f^{'}(x)=3ax^2+2bx+c \\ f^{''}(x)=6ax+2b \\ f^{'}(x)=0; \ 3ax^2+2bx+c=0; D=4b^2-12ac; \ D\ge0

// PascalABC.NET 3.1, сборка 1246 от 23.05.2016
function f(a,b,c,d,x:real):=d+x*(c+x*(b+a*x));

begin
  var a,b,c,d:real;
  Write('Введите значения a b c d: ');
  Read(a,b,c,d);
  var dd:=4*b*b-12*a*c;
  if dd<0 then Writeln('Минимум отсутствует')<br>  else
    if dd=0 then begin
      var d1:=-b/(3*a);
      Writeln('f(',d1,')=',f(a,b,c,d,d1))
      end
    else begin
      dd:=sqrt(dd);
      var d1:=(-2*b-dd)/(6*a);
      var d2:=(-2*b+dd)/(6*a);
      if 6*a*d1+2*b>0 then Writeln('f(',d1,')=',f(a,b,c,d,d1));
      if 6*a*d2+2*b>0 then Writeln('f(',d2,')=',f(a,b,c,d,d2));
    end
end.

Тестовое решение
Введите значения a b c d: 5 90 20 10
f(-0.112159422448102)=8.88193311534206
(142k баллов)