- •Лабораторна робота № 15
- •15.1 Мета роботи
- •15.2 Теоретичні відомості
- •15.2.1 Побудова графіків функцій в полярній системі координат
- •Int main(void)
- •19.2.2 Побудова графіків функцій, заданих в параметричній формі
- •Int main(void)
- •15.2.3 Функції перетворення форматів даних
- •15.4 Програма роботи
- •Вимоги до програм
- •Вимоги до звіту
- •15.5. Контрольні питання
- •Як визначається крок зміни аргументу при побудові графіка функції в полярних координатах?
Міністерство освіти і науки, молоді та спорту України
Технічний коледж національного університету водного господарства та природокористування
Лабораторна робота № 15
з курсу “Основи програмування та програмного забезпечення”
Рівне 2012
Лабораторна робота № 12 “Побудова графіків функцій в полярній системі координат та заданих в параметричній формі” з курсу “Основи програмування та програмного забезпечення”
Упорядники: Пастушенко В.Й., Шатний С.В.
Робота 15. Побудова графіків функцій в полярній системі координат та заданих в параметричній формі.
15.1 Мета роботи
Навчитися будувати графіки функцій в полярній системі координат, а також графіків функцій заданих в параметричній формі.
15.2 Теоретичні відомості
15.2.1 Побудова графіків функцій в полярній системі координат
Ряд математичних кривих мають більш простий і зручний для роботи вигляд в полярній системі координат, наприклад, рівняння кола =R (R-радіус), спіралі Архімеда =а (а-стала), гіперболічної спіралі =а/ (а-стала), квадратичної спіралі =а2 (a-стала).
- полярний радіус - відстань від точки до початку відліку;
- полярний кут - кут утворений полярною віссю і радіус-вектором вимірюється в радіанній мірі проти годинникової стрілки.
Алгоритм побудови графіка функції, заданої в полярній системі аналогічний до алгоритму побудови в декартовій системі. Залежність між полярним кутом і радіусом задається в нестандартній функції rо (fі). Для послідовних значень кута з певним кроком ( наприклад, step =Рі/180), обчислюються відповідні значення полярного радіуса. Перехід від полярних до екранних координат
х=rо(fі)соs(fі);
у=rо(fі)sіn(fї);
Для замкнених кривих діапазон зміни полярного кута складає від 0 до 2N, де N- кількість повних обертів радіус-вектора, необхідних для побудови графіка. Для нескінченних кривих потрібно підібрати таку кількість точок і, щоб в межах видимої на екрані області графік був повний.
Приклад.
Побудова спіралі Архімеда.
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define PI M_PI
float Ro (float fi);
Int main(void)
{ int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "c:\\bcpp\\bgi");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n",grapherrormsg(errorcode));
printf("Натиснiть будь-яку клавiшу для виходу");
getch( );
exit(1);
}
int xc,yc,i,x,y;
float fi, step=PI/180;
xc=getmaxx( )/2; yc=getmaxy( )/2;
for(i=1;i<=11*360;i++)
{ fi=istep;
x=Ro(fi)cos(fi);
y=Ro(fi)sin(fi);
setcolor(i/16+1);
if (i==1) moveto(xc+x,yc-y);
else lineto(xc+x,yc-y);
}
getch();
closegraph( );
return 0;
}
float Ro (float fi)
{ float ro=4*fi;
return (ro);
}
19.2.2 Побудова графіків функцій, заданих в параметричній формі
В багатьох фізичних задачах залежність між координатами х та y може бути задана в параметричній формі
х=(t), у=(t)
де t - параметр, який по змісту задач найчастіше відповідає часу. З допомогою наведеної нижче програми можна дослідити цікаве явище додавання вертикальних і горизонтальних гармонійних коливань з різними частотами – так звані фігури Ліссажу.
x=АcоsКt, у =Аsin Мt
Змінюючи співвідношення циклічних частот К і М, отримаємо різні за характером замкнені або нескінченні криві.
Програму можна використати для побудови інших кривих в параметричній формі, змінивши функції fі (t) та psi (t) та підібравши крок зміни параметра. Для отримання повного графіка діапазон зміни параметра для деяких функцій потрібно починати не з нуля, а з від'ємних значень.
Приклад.
Побудова фігур Ліссажу.
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <dos.h>
float FI (float );
float PSI (float );
int A=100,K=15,M=9;
float Step=M_PI/180;