Отже, нехай у нас є досить великий об'єм даних. Це можуть бути результати фізичного експерименту або ж якісь інші дані. Для нашого прикладу ми можемо їх згенерувати. Отже, створимо вибірку з розподілу випадкових чисел, що підкоряються нормальному закону (це закон використовується для опису багатьох типів випадкових процесів, наприклад навантаження на конструкцію від постійного навантаження). Для цього напишемо нескладну програму на C.
// Генеруємо набір випадкових чисел з нормальним розподілом
#include
#include
#include
float rnd(void) { // Створюємо функцію генерації випадкових чисел в діапазоні [0;1]
float t;
t=(float)(rand() % 1000000000)/1000000000;
return t;
}
int main(void) {
FILE *file;
int i,n;
float v,s,m,x;
printf("Введіть математичне очікування m="); scanf("%f",&m);
printf("Введіть коефіцієнт варіації V="); scanf("%f",&v);
printf("Введіть об'єм вибірки n="); scanf("%d",&n);
file = fopen("distribution.dat","w");
s=v*m; // Вираховуємо стандарт
for(i=1; i<=n; i=i+1) {
x=sqrt(2*log(1/rnd()))*sin(6.2832*rnd())*s+m; // Формула досить заумна, але працює
fprintf(file,"%d %f\n",i,x);
}
fclose(file);
printf("\nДані записано у файл distribution.dat\n");
return 0;
}
Наберемо цей текст у будь-якому редакторі (наприклад gedit) і збережемо у файл gen.c. Якщо комусь цікаво, яка частина коду програми, що робить той завжди може звернутися до відповідної літератури або до Гугла. Отже, тепер зкомпілюємо нашу програму у виконуваний файл:
cc gen.c -lm
Тепер у цій же папці з'явиться файл a.out, який і є нашою програмою. Використаємо її для генерації розподілу, зробимо вибірку десь так у 100000 значень (як відомо у Excel до версії 2007 та у багатьох інших табличних процесорах є обмеження на 65536 рядків, тобто у даному випадку ми в екселі б фізично цього зробити не могли б) з математичним очікуванням 180 і коефіцієнтом варіації 0.1. Числа взяті зі стелі, лише для демонстрації. Отже, запустимо нашу програму:
bum@impress:~/Temp/gnuplot$ ./a.out
Введіть математичне очікування m=180
Введіть коефіцієнт варіації V=0.1
Введіть об'єм вибірки n=100000
Дані записано у файл distribution.dat
Як і відрапортувала програма у цій же папці з'явився файл distribution.dat, це звичайний текстовий файл у якому розміщено два стовпчики з даними: порядковий номер та вирахуване випадкове число. Значення розділені пробілом.
Ну, тепер коли у нас є дані, займемося їх візуалізацією. GNUplot встановлюється як і все в Ubuntu дуже просто:
CODE]sudo apt-get install gnuplot
GNUplot програма хоч і чисто консольна проте інтерактивна, але ми все ж таки будемо використовувати її у пакетному режимі. Створимо новий файл - distr.graph, з наступним вмістом:
#! /usr/bin/gnuplot -persist
set terminal png size 1600,1200
set output "./distr.png"
set encoding default
set xlabel "Iteration"
set ylabel "Stress in the control point"
set autoscale
set style line 1 lt 1 pt 7
plot "./distribution.dat" using 2 title "Stress" with linespoints linestyle 1
У цьому коді послідовно обирається спосіб виведення результату (у даному випадку формат PNG, 1600x1200 пікселів), встановлюються підписи осей і дозволяється програмі самій вибрати масштаб графіку, далі обирається стиль з товщиною лінії (1 піксель) та діаметром точок (7 пікселів). У останньому рядку вказується, що потрібно взяти дані з файлу distribution.dat, а саме, другий стовпчик, підписати цей ряд даних як Stress і відобразити з показом точок вищевказаним типом лінії. Якщо тепер дати команду
cat distr.graph | gnuplot
то з'явиться файл distr.png у якому буде зображено наступне:
Немає коментарів:
Дописати коментар