Найти область определения функции 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, определяет область определения, множество значений, нули функции, экстремумы и строит график функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д