ЗАВДАННЯ:
Y(x)=sin(x)(x+1 ; X( [1,9]
Масштаб Х – рівномірний У – рівномірний;
1.ПОСТАНОВКА ЗАДАЧІ.
Cпочатку ініціалізуємо графічний режим. Утворюємо вікно за допомогою SetViewPort. Вираховуємо масштаб маючи границі для функції та аргумента. Враховуємо яким повинен бути масштаб – логарифмічний чи рівномірний. Для визначення логарифму скористаємося функцією –
function lgn(x:real):real; begin if x<0 then begin lgn:=-ln(abs(x));end
else lgn:=ln(abs(x)) end;
Для утворення графіка потрібно з’єднати лініями всі значення функції та аргумента на координатній площині.Кожну точку з’єднумо з наступною лінією. Для цього використовуємо цикл. Утворюємо вісь абсцис та ординат, а також сітку.
2.РОЗРОБКА СТРУКТУРИ ДАНИХ.
№п(п
Позначення
Ім’я(
Тип
Призначення, опис
1
gd,gm, pathtodriver
gd,gm, pathtodriver
-
Змінні необхідні для реалізації графічного режиму
2
s1,s2,s3,s4,s5,s6
s1,s2,s3,s4
ціла
Необхідні для утворення сітки
3
х1,х2,х3,х4
w1,w2,w3,w4
ціла
Координати вікна
4
Z, Z3
z
ціла
Значення функції, вихідна визначає нулі х,у
5
і
і
ціла
Слугує для утворення сітки і графіка
6
x1,y1,x2,y2
x1,y1,x2,y2
ціла
Значення х та у між якими проводиться лінія
7
Ymin,Ymax
z1,z2
дійсна
Межі «у» в яких
Буде виводитись
графік
8
Xmin,Xmax
b,a
дійсна
Межі «x» в яких
Буде виводитись
графік
9
D
d
дійсна
крок
3.РОЗРОБКА БЛОК-СХЕМИ АЛГОРИТМУ.
4.Запис тексту програми.
program Project1;uses graph,keyboard;
var b,a,d:real; gd,gm:smallint; s1,s2,s3,s4,s5,s6,h1,h2,
w1,w2,w3,w4,
z3,z,n,i,
x1,y1,x2,y2
:integer; my,mx,z1,z2:real;
pathtodriver:string;
function y(x:real):real;
begin y:=sin(x)/x+1;
end;
begin
a:=1;d:=0.01;b:=9;{znahsennja x}z1:=0;z2:=3;{mashtab}w1:=10;w2:=10;w3:=150;w4:=150;{koord vikna}
h1:=round((w3-w1)/20){sitka goruzontalna};h2:=round((w4-w2)/6){sitka vertukalna};
n:=round((b-a)/(d)+1);
if (a<=0) and (b>0) then z:=round((w3-w1)*abs(a/(b-a)));
if (a<0) and (b<=0) then z:=w3-w1+round((w3-w1)*abs(b/(b-a)));
if (a>0) and (b>0) then z:=-round((w3-w1)*abs(a/(b-a)));
mx:=(w3-w1)/(b-a);
my:=(w4-w2)/(z2-z1);
if (z1>=0) and (z2>0) then z3:=w4-w2+round(z1*my);
if (z1<0) and (z2<=0) then z3:=round(z2*my);
if (z1<0) and (z2>0) then z3:=round((w4-w2)* z2/(z2-z1));
x2:=z+round(a*mx); y2:=z3-round(y(a)*my);
s1:=z; s2:=z3;
s3:=z+round(a*mx);s4:=z+round(b*mx);
s5:=z3-round(z1*my);s6:=z3-round(z2*my);{dlja sitku}
begin
gd:=0;initkeyboard;initkeyboard;initgraph(gd,gm,'');
SetViewPort(w1, w2, w3,w4,ClipOn ); setbkcolor(8);clearviewport;
setcolor(6);
for i:=1 to 200 do begin
line(s3,s2+h1*i,s4,s2+h1*i);
line(s3,s2-h1*i,s4,s2-h1*i);
end;
for i:=1 to 200 do begin
line(s1+h2*i,s5,s1+h2*i,s6);
line(s1-h2*i,s5,s1-h2*i,s6);
end;
setcolor(4); line(s1,s5, s1,s6);line(s3,s2,s4,s2);
setcolor(3);
for i:=1 to n do begin {delaje liniji}
x1:=z+round(a*mx); y1:=z3-round(y(a)*my);
a:=a+d;
x2:=z+round(a*mx); y2:=z3-round(y(a)*my);
line(x1,y1,x2,y2);end;
repeat until keyboard.getkeyeventchar(keyboard.getkeyevent())='g';
closegraph();
donekeyboard;
end;end.
5.ТЕСТУВАННЯ ТА НАЛАГОДЖЕННЯ.
Висновок: я навчився створювати програми які будують графіки. Ознайомився з оператиром SetViewPort ознайомився з видами масштабу рівномірним та логарифмічним, кольора задані для того щоб відрізнити графік від сітки, вісі абсцис та ординат.Побудував графік функції Y(x)=|x|+cos(2x) на проміжку X( [-3,3].
Міністерство освіти і науки україни
НУ «Львівська Політехніка»
Кафедра теоретичної радіотехніки та радіовимірювань
ЗВІТ З ЛАБОРАТОРНОЇ РОБОТИ №14 НА ТЕМУ:
«ПОБУДОВА ГРАФІКІВ ФУНКЦІЙ ОДНОГО АРГУМЕНТУ»
Підготував:
студент групи РТ-12
Волков Віталій
Прийняв:
Нестор Н. І.
Львів 2010р.