![]() ![]() ![]() ![]() |
|||
Тема
17. Використання
графiчного режиму.
|
|||
Задача 17.2. Напишемо програму побудови графiка функцiї x є[-2;1]. Графiк займатиме весь екран. Розглянемо задачу побудови графіка обмеженої явно заданої
функції y=f(x) на відрізку [a, b]. Ставиться завдання побудувати графік
функції в прямокутній області екрану, лівий верхній кут якої має координати
(x0, y0), довжини сторін прямокутника рівні lx(по горизонталі) і ly
(по вертикалі) (рис1). Задача 17.2.1. Для PascalABC дана програма має вигляда- ти так. ****************************************************************** program gratik; uses graphABC, crt; const x0=2; y0=2; a=-2; b=1;lx=635; ly=395; h=0.001; var x1,y1:integer; x,max,min:real; function f(x:real):real; begin f:=x*sin(sqr(x))*exp(x); end; begin x:=a; max:=f(a); min:=f(a); while x<=b do begin if f(x) > max then max:=f(x); if f(x) < min then min:=f(x); x:=x+h; end; rectangle (x0, y0, x0+lx, y0+ly); x:=a; while x<=b do begin x1:=round(x0+(x-a)/(b-a)*lx); y1:=round(y0+(max-f(x))/(max-min)*ly); putpixel(x1, y1, clGreen); x:=x+h; end; repeat until keypressed end.****************************************************************** Задача 17.2.2. Для Турбо Паскаля V 7.0 дана програма має вигляда- ти так. ****************************************************************** program gratik; uses graph, crt; const x0=0; y0=0; a=-2; b=1;lx=639; ly=479; h=0.001; var graphdriver,graphmode,x1,y1:integer; x,max,min:real; function f(x:real):real; begin f:=x*sin(sqr(x))*exp(x); end; begin x:=a; max:=f(a); min:=f(a); while x<=b do begin if f(x) > max then max:=f(x); if f(x) < min then min:=f(x); x:=x+h; end; graphdriver:=detect; graphmode:=0; initgraph(graphdriver, graphmode,''); rectangle (x0, y0, x0+lx, y0+ly); x:=a; while x<=b do begin x1:=round(x0+(x-a)/(b-a)*lx); y1:=round(y0+(max-f(x))/(max-min)*ly); putpixel(x1, y1, White); x:=x+h; end; repeat until keypressed end.Зауваження. Таким способом побудований графік є розтягнутим або стиснутим порівняно з реальним графіком. Щоб отримати реальну картину потрібно правильно підібрати параметри lx і ly. їх підбирають, виходячи із співвідношення пропорційності ![]() Наприклад, якщо lx=600, то для функції y=sinx2, x є[-2;1] параметр ly=lx*(max-min)/(b-a)=600*(1-0)/(1-(-2))=200. Завдання 17.2. Скласти програму для зображення на екрані графіка функції введеної з клавіатури. |
|||