Найти область определения функции D(f), ее нули экстремумы и множество значений W(f) построить график функций - Pascal

Формулировка задачи:

Найти область определения функции D(f), ее нули экстремумы и множество значений W(f) построить график функций нарисовав и разместив оси координат y=x^3-3x^2+2 (Pascal abc)

Код к задаче: «Найти область определения функции D(f), ее нули экстремумы и множество значений W(f) построить график функций - Pascal»

textual
uses graphABC;
function F(x:real):real;
begin
F:=power(x,3)-3*power(x,2)+2;
end;
var xn,xk,x,mx,my,dx,xmn,min,xmx,max:real;
    k:array[1..3] of real;
    x0,y0,i,n:integer;
    s1,s2:string;
begin
//интервал
xn:=-2;
xk:=4;
//графическое окно
setwindowsize(600,600);
centerwindow;
//начало координат
x0:=windowwidth div 3;
y0:=round(windowheight*F(xk)/(F(xk)-F(xn)));
//масштабы
mx:=(x0-30)/-xn;{масштаб по Х}
my:=(y0-20)/F(xk);{по У}
//координатная сетка
for i:=1 to trunc(F(xk))+1 do
 begin
  line(x0+round(i*mx),y0-3,x0+round(i*mx),y0+3);
  line(x0-round(i*mx),y0-3,x0-round(i*mx),y0+3);
  line(x0-3,y0-round(i*my),x0+3,y0-round(i*my));
  line(x0-3,y0+round(i*my),x0+3,y0+round(i*my));
  textout(x0+round(i*mx),y0+10,inttostr(i));
  textout(x0-round(i*mx),y0+10,inttostr(-i));
  if i mod 2=0 then
   begin
    textout(x0-20,y0-round(i*my),inttostr(i));
    textout(x0-25,y0+round(i*my),inttostr(-i));
   end;
 end;
line(0,y0,windowwidth,y0);{оси}
line(windowwidth,y0,windowwidth-10,y0+5);
line(windowwidth,y0,windowwidth-10,y0-5);
line(x0,0,X0,windowheight);
line(x0,0,x0-5,10);
line(x0,0,x0+5,10);
textout(x0+5,y0+10,'0');
textout(windowwidth-10,y0-20,'X');
textout(x0+10,0, 'Y');
//график
n:=0;
x:=xn;
setpencolor(clBlue);
setpenwidth(2);
dx:=0.01;
while x<=xk do
 begin
  if x=xn then moveto(x0+round(x*mx),y0-round(F(x)*my))
  else lineto(x0+round(x*mx),y0-round(F(x)*my));
  if (F(x-dx)>F(x))and(F(x+dx)>F(x))then
   begin
    xmn:=x;
    min:=F(x);
   end; 
  if (F(x-dx)<F(x))and(F(x+dx)<F(x))then
   begin
    xmx:=x;
    max:=F(x);
   end; 
   if abs(F(x))<dx*2 then
    begin
     inc(n);
     k[n]:=x;
    end; 
  x:=x+dx;
 end;
setpencolor(clRed);
setbrushcolor(clRed);
circle(x0+round(xmx*mx),y0-round(max*my),3);
setpencolor(clLime);
setbrushcolor(clLime);
circle(x0+round(xmn*mx),y0-round(min*my),3);
setpencolor(clBlack);
setbrushcolor(clBlack);
for i:=1 to 3 do
circle(x0+round(k[i]*mx),y0,2);
setbrushstyle(bsClear);
setfontsize(10);
setfontcolor(clBlue);
textout(x0+50,0,'График функции y=x^3-3x^2+2');
textout(x0+50,20,'на интервале [-2;4]');
textout(x0+50,40,'Область определения D(f)=R');
str(F(xn):0:1,s1); 
str(F(xk):0:1,s2);
textout(x0+50,60,'Множество значений W(f)= ['+s1+';'+s2+']');
str(xmn:0:1,s1); 
str(min:0:1,s2);
setfontcolor(clLime);
textout(x0+50,80,'Локальный минимум: x='+s1+' F(x)='+s2);
str(xmx:0:1,s1); 
str(max:0:1,s2);
setfontcolor(clRed);
textout(x0+50,100,'Локальный максимум: x='+s1+' F(x)='+s2);
setfontcolor(clBlack);
textout(x0+50,120,'Нули функции:');
s2:='';
for i:=1 to n do
 begin
  str(k[i]:0:3,s1);
  s2:=s2+'x'+inttostr(i)+'='+s1+'  ';
 end; 
textout(x0+50,140,s2);  
end.

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

11   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ