Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Побудова графіків функцій



Чисельний аналіз задач зводиться до обробки великих масивів даних і тому постає питання найбільш зручного їх представлення. Так як аналіз великої кількості чисел недостатньо інформативний, частіше всього дані представляються в вигляді графіків. Відповідна програма для побудови траєкторії тіла під дією сили тяжіння на мові PASCAL має вигляд:

Program Grafik;

Uses Graph, CTR;

const A=30;B=150; {екранні координати}

Mx=1;My=0.001;

G=9.8;

PathBGI='d:\tp\bgi{шлях до графічного драйвера}

Var Gm,Gd: integer;

x1,x2,n: integer;

dx,dy:real;

c:char;

begin

CLRSCR; Write(' Initial:');

Write ('Left points: ');{ліва межа}

Readln(x1);

Write('Right points: ');{права межа}

Readln(x2);

Write (' Number points:'); {кількість розбиттів }

Readln(n); Gd:=9;Gm:=0;

InitGraf(Gd,Gm,PathBGI);

If Result <> grok then begin writeln ('Graph error');

halt(1) end;

Line (A,B,A+400,B);

Line (A, B,A,B-100);

Outtextxy (A+400,B+20,'X');

Outtextxy (A-5,B-100,'Y');

X:=x1;

dx:=(x2-x1)/n;

repeat

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

putpixel(A+trune(x*mx),B-trunc(y*my),15);

x:=x+dx;

until (x>x2+dx);

Outtextxy(401, 10, ' Press any key for continue...');

While not keypressed do;

C:=readkey;

CloseGraph;

end.

Одним із тонких питань є пошук масштабних множників, які використовуються при виведенні координат x і yточок на екран монітора. В залежності від типу монітора та використовуваного графічного режиму кількість точок на екрані по вертикалі та горизонталі може бути різною, та визначається з документації, допомоги (HELP ) програмного середовища, або експериментально.

В програмі використовується один із режимів, при якому по горизонталі може бути 640 точок, а по вертикалі 200 точок.

При цьому розрахунок масштабних множників, на які потрібно помножати кожне значення координат функції, зводиться до складання пропорції: MX = 640 / MAXX; MY = 200 / MAXY. Таким чином, наприклад, при виведенні найбільшого значення координати x=xmax, буде використовуватись співвідношення: Xmax*(640/MAXX) = 640, тобто точка буде виведена на правому краю екрана.

Отже, задача пошуку MX та MY зводиться до знаходження максимальних значень координат Xmax та Ymax.

Перший спосіб:

Методом підбору, коли програма виконується декілька раз при різних MX та MY, доки весь графік не буде в необхідних екранних межах.

Другий спосіб:

З оцінки максимального значення координати. Наприклад, ми будуємо графік функції на інтервалі [a,b]. Якщо графік будується з координати x=0, то максимальне значення x=b. Тоді MX = 640/b.

Третій спосіб:

Програма виконується два рази: перший раз знаходиться абсолютне значення максимального значення функції MAXY=ABS(f(x))одним з описаних уже методів та без побудови графіка. Вдруге виконуємо програму вже з побудовою графіка, з оціненимMY=200/MAXY.

Четвертий спосіб:

В програмі обраховуються в першому циклі всі значення функції та заносяться в масив, наприклад, Y(i) разом з пошуком максимального значення функції.

Далі в допоміжному циклі будується графік з використанням елементів масиву Y(i) та вже знайдених масштабних множників:

FOR I: = 1 TO N DO

BEGIN

PUTPIXEL (A +trunc(X [I]*MX), B -trunc(Y[I]*MY),15);

END.

При побудові графіків функцій, які залежать від двох просторових змінних z = f(x,y) постає питання проектування трьохвимірних об’єктів на площину екрана, чи друкуючого пристрою.

Програмування таких проективних відображень потребує майстерності та вирішення багатьох складних питань. Тому доцільніше використовувати допоміжні програми, які дозволяють представляти розв'язок в вигляді трьохвимірного зображення, або ж використовувати спеціалізовані програми по побудові трьохвимірних зображень, на основі отриманих масивів даних. Так для побудови трьохвимірної поверхні в системі SURFER необхідно сформувати текстовий файл в форматі ASCII з трьома колонками чисел. При цьому бажано зразу ж відмасштабувати значення x, yтаz, щоб їх максимальні значення були одного порядку.

Такий файл даних на мові програмування PASCAL може бути сформований на основі такої програми:

{В основній програмi повиннi бути описанi i сформованi таблицi X[1..M,1..N],Y[1..M,1..N],Z[1..M,1..N], знайдені максимальні значення (передаються як Xmax, Ymax, Zmax). FileName – iм’я файла, в який запишуться данi; M,N-кількість розбиттів по х та y відповідно, значення функцій x, y та z розраховуються в кожному з вузлів сітки M*N}

Procedure SaveData(M,N:integer;Xmax,Ymax,Zmax:real;FileName:String);

Var F:File;I,J:integer;X1,Y1,Z1:real;S1,S2:string;

Begin

Assign(F,FileName);

ReWrite(F);

For I:=1 to M do

For J:=1 to N do begin

X1:=X[I,J]/Xmax*1000;

Y1:=Y[I,J]/Ymax*1000;

Z1:=Z[I,J]/Zmax*1000;

STR(Trunc(X),S1);

STR(Trunc(Y),S2);

S1:=S1+S2;

STR(Trunc(Z),S2);

S1:=S1+S2;

Writeln(S1);

end;

Close(F);

End.

Далі файл даних зчитується за допомогою SURFERa, обробляється деякими утилітами для апроксимації поверхні, маcштабується та розміщується в необхідному ракурсі, та представляється на екрані або робиться його тверда копія на принтері. При цьому існує можливість вводити відповідні надписи осей та їх розмітку і тому подібне.





Дата публикования: 2015-04-07; Прочитано: 392 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...