Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Графика в Pascal.doc
Скачиваний:
33
Добавлен:
10.06.2015
Размер:
990.21 Кб
Скачать

Графики функций Задача 1.

Построить графики функций в декартовой системе координат:

Решение.

Чтобы система координат имела более удобный для построения графиков вид, определим графическое окно

SetViewPort(320,240,520,440,ClipOff).

В нем начало координат совпадает с центром экрана и возможна адресация отрицательных координат. Значение ClipOff указывает на то, что графики не обрезаются по границам окна. Величины MaxX и MaxY, которые могут быть и различными, вводятся и используются далее для вычисления коэффициентов масштабирования kx и ky вдоль осей координат. Шаг изменения абсциссы (константа step) влияет на вид и скорость построения графика.

Program Examp_25;

Uses crt, graph;

Const step=0.05;

Var

MaxX, MaxY,i,j,kx,ky:Integer;

x,y,x0:Real;

z:String[1];

Procedure Graphinterface;

Var

driver, mode, error:Integer;

s:String;

Begin

driver:=detect;

s:=' ';

Initgraph(driver,mode,s);

error:=GraphResult;

if error<>GrOk then

begin

writeln(GraphErrorMsg(Error));

Halt(error)

end

end;

Begin

Graphinterface;

SetViewPort(320,240,520,440,ClipOff);

Setcolor(10);

TextColor(10);

Repeat

OutTextXY(-265,-235,'Введите

MaxX и MaxY __');

GoToXY(30,1); Readln(MaxX,MaxY);

kx:=200 div MaxX; ky:=200 div MaxY;

{Коэффициенты масштабирования}

ClearDevice; SetColor(2);SetLineStyle(0,1,3);

{оси координат}

Line(0,-225,0,225); Line(0,-225,-4,-220);

Line(0,-225,4,-220);

Line(-270,0,270,0); Line(270,0,260,4);

Line(270,0,260,-4);

{Единичные отрезки и надписи на осях

координат}

SetColor(10);SetLineStyle(0,0,2);

for i:=-MaxX to MaxX do

Line(i*kx,2,i*kx,-2);

For j:=-MaxY to MaxY do

Line(2,j*ky,-2,j*ky);

Str(MaxX,z); OutTextXY(195,8,z);

OutTextXY(260,10,'X');

Str(MaxY,z); OutTextXY(-15,-202,z);

OutTextXY(-15,-225,'Y');

x0:=-220;

Repeat

x:=x0/kx;

{-----------Формулы---------}

{1} {y:=sin(x);}

{2} {y:=cos(x-1)+abs(x);}

{3} (*if abs(x-2)>step then y:=(x+3)/(x-2);

{вертикальная и горизонтальная

асимптоты}

PutPixel((2)*kx,Round(x0),7);

PutPixel(Round(x0),-Round(1*ky),7);*)

{4} (*y:=0.5*x-1;

{наклонная и вертикальная асимптоты}

PutPixel(Round(x0),-Round(y*ky),7);

PutPixel((-1)*kx,Round(x0),7);

if abs(x+1)>step then

y:=x*x*x/sqr(x+1)/2; *)

{5} y:=x*(x*x-3);

PutPixel(-Round(y*ky),Round(x0),10);

PutPixel(Round(x0),-Round(y*ky),14);

if Keypressed then Exit else x0:=x0+step

{шаг}

Until x0>220;

Readln;

for i:=-MaxX to MaxX do

{целочисленная решетка}

for j:=-MaxY to MaxY do

PutPixel(i*kx,j*ky,15);

SetColor(10); {выход или продолжение}

OutTextXY(-265,230,'Esc - выход,

Enter - изменить масштаб')

Until ReadKey=#27;

CloseGraph;

End.

В блоках операторов {1}-{4} строятся графики заданных в условии функций. Первые две функции определены всюду, а две последующие требуют учета области определения. В блоках операторов {3} и {4} изображаются также имеющиеся асиптоты графиков функций. Блок операторов {5} "демонстрирует" все 9 пар решений системы

Приведенную программу можно использовать не только для построения графиков функций, но и для приближенного решения систем уравнений, изучения координатных преобразований графиков функций и других приложений.