Написать программу(паскаль) 2. для заданного набора коэффициентов a, b, c, d найдите наименьшее значение функции y = a x3 + b x2 + cx + d и значение аргумента, при котором оно получено. значение х изменяется от 0 до 2 с шагом 0,2.
Var a,b,c,d,x,y,h,minx,miny:real; i:integer; begin writeln('a, b, c, d:'); readln(a,b,c,d); h:=0.2; x:=0; y:=a*x*x*x+b*x*x+c*x+d; writeln(x:2:1,' ',y:5:2); minx:=0; miny:=y; for i:=1 to round((2-0)/h)+1 do begin x:=x+h; y:=a*x*x*x+b*x*x+c*x+d; writeln(x:2:1,' ',y:5:2); if y<miny then begin minx:=x; miny:=y; end; end; writeln('min = y(',minx:2:1,') = ',miny:5:2); end.
Begin
WriteLn('f(x) = ax^3 +bx^2 +cx +d');
Write('a = ');ReadLn(a);
Write('b = ');ReadLn(b);
Write('c = ');ReadLn(c);
Min:=0;
x:=0;
Repeat
if Min*(a*Min*Min+b*Min+c) > x*(a*x*x+b*x+c) then Min:=x;
x:=x+0.2;
Until x>2;
Write('d = ');ReadLn(d);
WriteLn('Min(f) = f(',Min,') = ',Min*(a*Min*Min+b*Min+c)+d)
End.
Пример работы программы:
f(x) = ax^3 +bx^2 +cx +d
a = 15
b = -17
c = -70
d = 0
Min(f) = f(1.6) = -94.08
begin
writeln('a, b, c, d:');
readln(a,b,c,d);
h:=0.2;
x:=0; y:=a*x*x*x+b*x*x+c*x+d;
writeln(x:2:1,' ',y:5:2);
minx:=0; miny:=y;
for i:=1 to round((2-0)/h)+1 do
begin
x:=x+h;
y:=a*x*x*x+b*x*x+c*x+d;
writeln(x:2:1,' ',y:5:2);
if y<miny then begin minx:=x; miny:=y; end;
end;
writeln('min = y(',minx:2:1,') = ',miny:5:2);
end.
Пример:
a, b, c, d:
3 2 -1 4
0.0 4.00
0.2 3.90
0.4 4.11
0.6 4.77
0.8 6.02
1.0 8.00
1.2 10.86
1.4 14.75
1.6 19.81
1.8 26.18
2.0 34.00
2.2 43.42
min = y(0.2) = 3.90