Составьте программу, которая строит график зависимости: а) y(x)=0.5x *cos 2x на промежутке [-12;12]; б) y(x)=8 sinx *sin 2x на промежутке [-15;15];

Составьте программу, которая строит график зависимости: а) y(x)=0.5x *cos 2x на промежутке [-12;12]; б) y(x)=8 sinx *sin 2x на промежутке [-15;15];
Гость
Ответ(ы) на вопрос:
Гость
Основа взята на сайте progmatem.ru. К сожалению, автор статьи там не был указан. // PascalABC.NET 3.1, сборка 1204 от 24.03.2016 uses graphABC; const   w=1000;   h=600; function f(x:real):=0.5*x*cos(2*x); begin   SetWindowSize(w,h);   // поле для графика в окне   var xLeft:=50;   var yLeft:=50;   var xRight:=w-xLeft;   var yRight:=h-yLeft;   // интервалы по осям   var ax:=-12.0;   var bx:=12.0;   var hx:=1.0;   var ay:=-6.5; // минимум f(x) с запасом   var by:=6.5;   var hy:=0.5;   // масштабы по осям   var mx:=(xRight-xLeft)/(bx-ax);   var my:=(yRight-yLeft)/(by-ay);   // точка начала координат графика   var x0:=xLeft+Trunc(abs(ax)*mx);   var y0:=yRight-Trunc(abs(ay)*my);   // рисование координатных осей   Line(xLeft,y0,xRight+10,y0);   Line(x0,yLeft-10,x0,yRight);   SetFontSize(12); SetFontColor(clBlue);   TextOut(xRight+15,y0-10,'X');   TextOut(x0-4,yLeft-30,'Y');   SetFontSize(8); SetFontColor(clGreen);   // рисование засечек   var s:string;   for var i:=1 to Round((bx-ax)/hx)+1 do begin     var num:=ax+(i-1)*hx;     var x:=xLeft+Trunc(mx*(num-ax));     Line(x,y0-3,x,y0+3);     Str(num,s);     if abs(num)>1E-15 then TextOut(x-TextWidth(s) div 2,y0+10,s)     end;   for var i:=1 to Round((by-ay)/hy)+1 do begin     var num:=ay+(i-1)*hy;     var y:=yRight-Trunc(my*(num-ay));     Line(x0-3,y,x0+3,y);     Str(num,s);     if abs(num)>1E-15 then TextOut(x0+7,y-TextHeight(s) div 2,s)     end;     TextOut(x0-10,y0+10,'0');   // собственно график   var xi:=ax;   while xi<=bx do begin     var yi:=f(xi);     var x:=x0+Round(xi*mx);     var y:=y0-Round(yi*my);     if (y>=yLeft) and (y<=yRight) then SetPixel(x,y,clRed);     xi+=1e-3     end end. ******************************************* // PascalABC.NET 3.1, сборка 1204 от 24.03.2016 uses graphABC; const   w=1000;   h=600; function f(x:real):=8*sin(x)*sin(2*x); begin   SetWindowSize(w,h);   // поле для графика в окне   var xLeft:=50;   var yLeft:=50;   var xRight:=w-xLeft;   var yRight:=h-yLeft;   // интервалы по осям   var ax:=-15.0;   var bx:=15.0;   var hx:=1.0;   var ay:=-6.5; // минимум f(x) с запасом   var by:=6.5;   var hy:=0.5;   // масштабы по осям   var mx:=(xRight-xLeft)/(bx-ax);   var my:=(yRight-yLeft)/(by-ay);   // точка начала координат графика   var x0:=xLeft+Trunc(abs(ax)*mx);   var y0:=yRight-Trunc(abs(ay)*my);   // рисование координатных осей   Line(xLeft,y0,xRight+10,y0);   Line(x0,yLeft-10,x0,yRight);   SetFontSize(12); SetFontColor(clBlue);   TextOut(xRight+15,y0-10,'X');   TextOut(x0-4,yLeft-30,'Y');   SetFontSize(8); SetFontColor(clGreen);   // рисование засечек   var s:string;   for var i:=1 to Round((bx-ax)/hx)+1 do begin     var num:=ax+(i-1)*hx;     var x:=xLeft+Trunc(mx*(num-ax));     Line(x,y0-3,x,y0+3);     Str(num,s);     if abs(num)>1E-15 then TextOut(x-TextWidth(s) div 2,y0+10,s)     end;   for var i:=1 to Round((by-ay)/hy)+1 do begin     var num:=ay+(i-1)*hy;     var y:=yRight-Trunc(my*(num-ay));     Line(x0-3,y,x0+3,y);     Str(num,s);     if abs(num)>1E-15 then TextOut(x0+7,y-TextHeight(s) div 2,s)     end;     TextOut(x0-10,y0+10,'0');   // собственно график   var xi:=ax;   while xi<=bx do begin     var yi:=f(xi);     var x:=x0+Round(xi*mx);     var y:=y0-Round(yi*my);     if (y>=yLeft) and (y<=yRight) then SetPixel(x,y,clRed);     xi+=1e-3     end end.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы