Найти область определения функции D(f), ее нули экстремумы и множество значений W(f) построить график функций - Pascal
Формулировка задачи:
Найти область определения функции D(f), ее нули экстремумы и множество значений W(f) построить график функций нарисовав и разместив оси координат y=x^3-3x^2+2 (Pascal abc)
Решение задачи: «Найти область определения функции D(f), ее нули экстремумы и множество значений W(f) построить график функций»
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.
Объяснение кода листинга программы
- Объявление функции F(x), где x - входной параметр, инициализация переменной F
- Инициализация переменных xn, xk, x, mx, my, dx, xmn, min, xmx, max, k, x0, y0, i, n, s1, s2
- Установка интервала xn(=-2) и xk(=4)
- Настройка графического окна и координат начала координат
- Расчет масштабов для координатной сетки
- Построение координатной сетки
- Настройка осей, подписей и надписей
- Построение графика
- Поиск и отметка локальных минимумов и максимумов на графике
- Отображение области определения функции D(f), множества значений W(f), локальных минимумов/максимумов и нулей функции с помощью надписей и различных цветовые обозначений Написанный код выводит график функции y=x^3-3x^2+2, определяет область определения, множество значений, нули функции, экстремумы и строит график функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д