Регистрация: 23.03.2011
Сообщений: 5
|
паскаль. графика
здравствуйте)
нужно построить график функции Y=sin(x)/cos(x)/(x+1). максимальное значение на оси Oy должно быть 6, а получается 1.8, как было первоначально. что нужно исправить? или, может, есть примеры для подобной функции?
Код:
Procedure Graphic(c,d:real); { построение графика функции }
var
ga,gm,error:integer;
X,Y:real;
A,MX,MX007,MX01,MX03,MX09,MSX,MY,MY09,MY005,MSY,I:integer;
ST:string[4];
begin
ga:=detect; {-тип драйвера и адаптера }
gm:=detect; { режим работы адаптера }
{ инициализация графического режима: }
InitGraph (ga, gm, ' ');
error:= GraphResult;
{ результат инициализации: }
if Error<> grOK then
begin
writeln (Ошибка! графический режим не найден ' ,#10#13, GraphErrorMsg (Error));
halt;
end;
{ определение используемых значений, возвращает текущее значение разрешения по горизонтали }
MX:=GetMaxX; MX007:=Round (0.07*MX);
MX01:=Round (0.1*MX);
MX03:=Round (0.3*MX);
MX09:=Round (0.9*MX);
{ Возвращает текущее значение разрешения по вертикали }
MY:=GetMaxY; MY09:=Round (0.9*MY);
MY005:=Round (0.05*MY);
SetColor (12);
{ рисование осей }
Line (5,MY09,MX-70,MY09); { ось X}
Line (MX01-20,MY005,MX01-20,MY-9); { ось Y}
{ рисование стрелок }
Line (MX-80,MY09-3,MX-70,MY09); {--X--\}
Line (MX-80,MY09+3,MX-70,MY09); {--X--/}
Line (MX-595,MY005,MX-589,MY005+10); {/--Y--}
Line (MX-595,MY005,MX-600,MY005+10); {\--Y--}
{ надписи по осям X и Y }
SetTextStyle (0,0,2); {шрифт}
SetColor (14);
OutTextXY (MX-625,MY005,'Y'); { вывод последовательности символов в точке (Х, У) }
OutTextXY (MX-80,MY-35,'X');
SetTextStyle (0,0,1);
SetColor (12);
{ разметка оси Y}
MSY:=Round( MY09/2); { масштаб по оси Y}
Y:=0; { начальное значение Y}
while Y<=6 do
begin
str (Y:4:1,ST); { строка для надписи по Y}
A:=Round (MY09-MSY*Y); { ордината в пикселях }
Line (MX-600,A,MX-590,A); { черточки по оси Y}
OutTextXY (MX-637,A-8,ST);
Y:=Y+0.2; { изменение значения Y}
end;
{ разметка оси Х}
MSX:=Round (MX09/50); { масштаб по оси Х }
X:=0; { начальное значение Х}
while X<=40 do
begin
str (X:4:0,ST); { строка для надписи по X }
A:=Round (MX007+MSX*X); { абсцисса в пикселях }
Line (A,MY09+3,A,MY09-3); { черточки по оси X }
OutTextXY (A-25,MY09+15,ST);
X:=X+5; { изменение значения X }
end;
SetColor (2);
{начало рисования кривой }
X:=c; { начальное значение X }
while X<=d do
begin
Y:=sin(x)/cos(x)/(x+1);
PutPixel (Round (MX007+MSX*X), Round(MY09-MSY*Y), 2); { рисование точки }
X:=X+0.001; { изменение значения X}
if abs(X)<1E-8 then X:=0; { уточнение значения X}
end;
SetColor (15);
SetTextStyle (1,0,2);
OutTextXY(MX-550,MY-450,' график функции Y=sin(x)/cos(x)/(x+1)');
{readln; }
while not keypressed do;
closegraph; { восстановление текстового режима }
end;
|