Вычислить экстремум функции с заданной точностью ε.Результаты вычисления вывести на экран монитора.Метод поиска экстремума задан(золотое сечение)- Pascal(Паскаль)

Входные данные:
Значение границ интервала и точность ввести с клавиатуры в главной программе.
Выходные данные:
Значение f(a), f(b);
координаты экстремума;
минимум или максимум;
количество итераций
функция f(x):= 2*sqr(x)*x-3*sqr(x)
program Lab7;
var z,a,b,eps,d,l0,r0,l1,r1,r: real;
function f(x:real):real;
begin
f:=2*x*x-x*x*x*x;
end;
Begin
r:=(sqrt(5)-1)/2;
writeln(r);
writeln('vvod a,b,eps');
readln(a,b,eps);
writeln(f(a),f(b));
d:=eps/2;
r0:=a+(b-a)*r;
l0:=b-(b-a)*r;
if f(a)>(f(a+d)) then
z:=1
else z:=-1;
begin
while abs(b-a)>eps do
begin
r0:=a+(b-a)*r;
l0:=b-(b-a)*r;
if (z*f(l0))<(z*f(r0)) then
begin
b:=r0
end
else
begin
a:=l0;
end;
end;
end;
if z=1 then
writeln('min=',l0);
if z=-1 then
writeln('max=',r0);
readln;
end.
program Lab7;
uses crt;
var z,a,b,eps,d,l0,r0,l1,r1,r: real;
function f(x:real):real;
begin
f:=2*x*x-x*x*x*x;
end;
Begin
clrscr;
writeln('Functia f(x)=2x^2-x^4');
r:=(sqrt(5)+1)/2;
writeln('r=',r:0:4);
writeln('vvod a,b,eps');
readln(a,b,eps);
writeln('f(a)=',f(a):0:4,'  f(b)=',f(b):0:4);
d:=eps/2;
r0:=a+(b-a)*r;
l0:=b-(b-a)*r;
if f(a)>(f(a+d)) then z:=1 else z:=-1;
while abs(b-a)>eps do
 begin
  r0:=a+(b-a)*r;
  l0:=b-(b-a)*r;
  if (z*f(l0))<(z*f(r0)) then b:=r0 else a:=l0;
 end;
if z=1 then writeln('min=',l0:0:4);
if z=-1 then writeln('max=',r0:0:4);
readln
end.
program lab;
var a, b, shift, r, y1, y2, x1, x2, min, max, a2, b2: real;
function f(x:real):real;
begin
f:=x*x*x-8*x+1+5*sin(x)-12*cos(x);
end;
begin
r:=(sqrt(5)+1)/2;
readln(a,b,shift);
a2:= a;
b2:= b;
writeln('f(a)=',f(a):0:4,'  f(b)=',f(b):0:4);
while abs(b-a) >= shift do
  begin
  x1:= b - (b - a) / r;
  x2:= a + (b - a) / r;
  y1:= f(x1);
  y2:= f(x2);
    if y1 >= y2 then a:= x1 else b:= x2
  end;
min:=(a + b) / 2;
writeln('x:= ', min:0:3, ', min:= ', f(min):0:3);
a:= a2;
b:= b2;
while abs(b-a) >= shift do
  begin
  x1:= b - (b - a) / r;
  x2:= a + (b - a) / r;
  y1:= f(x1);
  y2:= f(x2);
    if y1 <= y2 then a:= x1 else b:= x2
  end;
max:= (a + b) / 2;
writeln('x:= ', max:0:3, ', max:= ', f(max):0:3);
end.

Leave a Comment

+ 63 = 67