forum.vnstele.com

Вітруальне навчальне середовище телекомунікацій - Форум підтримки
Сьогодні: 19 березня 2024, 07:37

Часовий пояс UTC + 2 годин [ DST ]




Створити нову тему Відповісти  [ 7 повідомлень ] 
Автор Повідомлення
ПовідомленняДодано: 29 січня 2012, 17:59 
Офлайн

З нами з: 12 січня 2012, 11:22
Повідомлення: 3
Визначити площу круга заданого радіусу R (методом статистичних випробувань) з центром в точці (x,y) згідно варіанту:
1. R=7.269 X=-2.357 Y=5.159;
2. R=1.654 X=26.125 Y=-16.58;
3. R=4.631 X=-12.35 Y=-15.805;
4. R=9.271 X=16.56 Y=8.001;
5. R=5.555 X=1.135 Y=-68.9;
6. R=8.023 X=15.905 Y=12.672;
7. R=10.12 X=-0.001 Y=0.001;
8. R=6.056 X=26.32 Y=62.23;
9. R=2.010 X=5.890 Y=-5.098;
10. R=13.12 X=0.260 Y=30.258.


Догори
 Профіль  
 
ПовідомленняДодано: 04 березня 2013, 23:56 
Офлайн

З нами з: 09 лютого 2011, 22:58
Повідомлення: 25
Доброго дня. В мене є питання до другої частини лабораторної роботи №2: "Як за допомогою функції "randn()" або "normrnd()" згенерувати значення в заданих межах (від "а" до "b")?"


Догори
 Профіль  
 
ПовідомленняДодано: 05 березня 2013, 16:39 
Офлайн
Адміністратор сайту

З нами з: 11 січня 2011, 15:00
Повідомлення: 181
Звідки: Львів
vasylivandriy написав:
Доброго дня. В мене є питання до другої частини лабораторної роботи №2: "Як за допомогою функції "randn()" або "normrnd()" згенерувати значення в заданих межах (від "а" до "b")?"

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


Догори
 Профіль  
 
ПовідомленняДодано: 08 березня 2013, 23:56 
Офлайн
Аватар користувача

З нами з: 23 лютого 2011, 03:08
Повідомлення: 24
Звідки: Камянка-Бузька,Львів
можна питання до 2ої частини: там є лістінг для 2ох алгоритмів моделювання: пуасонівського і рівномірного. так ось: який нам потрібно залишити, а який добавити?

_________________
Volodya Rykhva thinks so....
Зображення


Догори
 Профіль  
 
ПовідомленняДодано: 09 березня 2013, 22:02 
Офлайн

З нами з: 12 січня 2012, 11:22
Повідомлення: 3
Всі уважно читають методику в 2-му пункті написано здійснити моделювання за рівномірний та нормальним законом розподілу, оскільки, рівномірний уже реалізований (unifrnd) то потрібно зробити лише одну заміну пуасонівського (poissrnd) на нормальний (однією із 3- функцій, які я називав). Успіху в починаннях)))


Догори
 Профіль  
 
ПовідомленняДодано: 19 червня 2014, 01:06 
Офлайн
Аватар користувача

З нами з: 19 січня 2012, 18:50
Повідомлення: 31
Звідки: Львів
Реалізація другої лабораторної роботи виглядає ось так:

Код:
%#> Lab#2_Sheremeta variant #7

function Lab2_Sheremeta

% Part#1: R=10.12 X=-0.001 Y=0.001;

circleCenterAbscissa = -1e-3;
circleCenterOrdinate = 1e-3;
radius  = 10.12;
experiment = []; % here will be answer

for amountOfPoints = [100, 200, 1000, 10000]
    circleAreas = [];
    for i = 1:5
        circleArea = monteCarlo(circleCenterAbscissa, circleCenterOrdinate, radius, amountOfPoints);
        circleAreas = [circleAreas; circleArea];
    end
    circleAreas = [amountOfPoints; circleAreas; mean(circleAreas); var(circleAreas)];
    experiment = [experiment, circleAreas];
end

% Beautiful answer format
array2table(experiment, 'RowNames', {'Amount Of Points(n)', 'Stringer 1', 'Stringer 2', 'Stringer 3', 'Stringer 4', 'Stringer 5', 'Mean', 'Variance'})

% Part#2 System uptime calculation
meanOfNodeUptime = 1000;
varinceOfNodeUptime = 100;

% Uniform distribution parameters
a = meanOfNodeUptime - varinceOfNodeUptime*sqrt(3);
b = meanOfNodeUptime + varinceOfNodeUptime*sqrt(3);

% Normal distribution parameters
mu = meanOfNodeUptime; % mean
 
% R = normrnd(mu,sigma) generates random numbers from the normal distribution with mean parameter mu
% and standard deviation parameter sigma
sigma = sqrt(varinceOfNodeUptime); % standard deviation is the square root of the variance

N = 1e5;
gammaUniform = [];
gammaNormal = [];

for k = 1:N
    % uniform distribution
    gammaUniform = [gammaUniform, systemUptime(unifrnd(a, b, 1,7))];
    % normal distribution
    gammaNormal = [gammaNormal, systemUptime(normrnd(mu, sigma, 1, 7))];
end

% statistical parameters
gammaUniformMean = mean(gammaUniform);
gammaNormalMean = mean(gammaNormal);

gammaUniformStd = std(gammaUniform, 1);
gammaNormalStd = std(gammaNormal, 1);

% charting results
gammaUniformPdf = []; gammaNormalPdf = [];

xmin = min(min(gammaUniform), min(gammaNormal));
xmax = max(max(gammaUniform), max(gammaNormal));
step = (xmax - xmin)/40;

for x = xmin:step:xmax
    gammaUniformPdf = [gammaUniformPdf, sum(gammaUniform >= x & gammaUniform < x + step)/N];
    gammaNormalPdf = [gammaNormalPdf, sum(gammaNormal >= x & gammaNormal < x + step)/N];
end

hold on;
grid on;

x = xmin:step:xmax;
plot(x, gammaUniformPdf, '*-r');
plot(x, gammaNormalPdf, 'o-b');

title(['N_i_t_e_r = ', num2str(N),...
    '; m_u_n_i_f = ', num2str(gammaUniformMean),...
    '; \sigma_u_n_i_f = ', num2str(gammaUniformStd),...
    '; m_n_o_r_m = ', num2str(gammaNormalMean),...
    '; \sigma_n_o_r_m = ', num2str(gammaNormalStd)]);

xlabel('System uptime, h');
ylabel('Probability density');
legend('uniform', 'normal');
end

function circleArea = monteCarlo(circleCenterAbscissa, circleCenterOrdinate, radius, amountOfPoints)

squaredRadius = radius^2;
sqaureArea = (2*radius)^2;
minSquareAbscisa = circleCenterAbscissa - radius;
maxSquareAbscisa = circleCenterAbscissa + radius;
minSquareOrdinate = circleCenterOrdinate - radius;
maxSquareOrdinate = circleCenterOrdinate + radius;

% generating array of random numbers in range [minSquareAbscisa, maxSquareAbscisa]
x = minSquareAbscisa + (maxSquareAbscisa - minSquareAbscisa).*rand(1, amountOfPoints);

% generating array of random numbers in range [minSquareOrdinate, maxSquareOrdinate]
y = minSquareOrdinate + (maxSquareOrdinate - minSquareOrdinate).*rand(1, amountOfPoints);

amountOfPointsBelongToCircle = 0;
for i = 1:amountOfPoints
    if(((x(i) - circleCenterAbscissa)^2 + (y(i) - circleCenterOrdinate)^2) <= squaredRadius)
        amountOfPointsBelongToCircle = amountOfPointsBelongToCircle +1;
    end
end

circleArea = sqaureArea*amountOfPointsBelongToCircle/amountOfPoints;
end

function gamma = systemUptime(t)

path1 = min([t(1), t(2), t(5), t(7)]);
path2 = min([t(1), t(3), t(5), t(7)]);
path3 = min([t(1), t(4), t(6), t(7)]);
gamma = max([path1, path2, path3]);
end


P.S. Не лякайтесь, взагальному ця лабораторна робота теж дуже проста. Просто треба трошки розібратись.
P.S.S. Бажаю всім успіхів)

_________________
Зображення


Догори
 Профіль  
 
ПовідомленняДодано: 09 березня 2015, 01:28 
Офлайн
Аватар користувача

З нами з: 19 грудня 2012, 19:30
Повідомлення: 3
:shock: Микола стільки багато написав, що я аж злякалася) Але не все так важко, як здається на перший погляд. ^_^

А ось частина мого коду, та що стосується круга, і звісно ж таки, 8го варіанту:

Код:
%вхідні дані
R=6.056;
center_X=26.32;
center_Y=62.23;
n=100;
%розрахунок крайніх точок квадрату
left_X=center_X-R;
right_X=center_X+R;
bottom_Y=center_Y-R;
top_Y=R+center_Y;
%моделювання n випадкових значень у заданому інтервалі
n_X=rand(1,n)*(right_X-left_X)+left_X;
n_Y=rand(1,n)*(top_Y-bottom_Y)+bottom_Y;
%обчислення кількості значень m, що належать кругу
temp = sqrt((n_X-center_X).^2+(n_Y-center_Y).^2);
m = length(find (temp<=R));
%оцінка площі круга
Ssquare=4*R^2;
Scircle=Ssquare*m/n;


А ось з блоками вийшло якось складніше, оскільки не відразу зрозуміла завдання. :( Тому постараюся пояснити детальніше хід своїх думок, щоб виправитися, якщо не так щось зрозуміла. Звісно, якщо шановний Євген Михайлович вкаже на недоліки)

Код:
%нехай t - нормований час життя блоку (від 0 до 1).
%mu - математичне очікування та sigma - середньоквадратичне відхилення,
%необхідні для обчислення за нормальним законом розподілу
mu=0.5;
sigma=mu/3;
mass_norm=[];
mass_rivn=[];
M=10000; % кількість випробувань
Sum_norm=0;
Sum_rivn=0;
for i=1:M;
t_norm=normrnd(mu,sigma,1,7);
%Згенеровані 7 значень (по одному на кожен блок - момент виходу з ладу даного блока) для нормального закону розподілу
t_rivn=unifrnd(0,1,1,7); % те ж саме, але для рівномірного закону розподілу
y_norm=min([t_norm(1), max(min(t_norm(4),t_norm(6)),min(max(t_norm(2),t_norm(3)),t_norm(5))) ,t_norm(7)]);
y_rivn=min([t_rivn(1), max(min(t_rivn(4),t_rivn(6)),min(max(t_rivn(2),t_rivn(3)),t_rivn(5))) ,t_rivn(7)]);
mass_norm=[mass_norm,y_norm];
mass_rivn=[mass_rivn,y_rivn];
end;
Ser_norm=sum(mass_norm)/M;
Ser_rivn=sum(mass_rivn)/M;
a=hist(mass_rivn);
b=hist(mass_norm);
figure;
bar([a;b]);
xlabel('Рівномірний закон розподілу     Нормальний закон розподілу');
ylabel('Кількість випробувань');


Ну і як результат:
1) Гістаграми розподілу часу виходу з ладу системи:
Приєднання файлів:
Capture_1.JPG
Capture_1.JPG [ 46.96 Кб | Переглянуто 3315 разів ]

2) Обрахований середній час виходу з ладу системи:
Приєднання файлів:
Capture_3.JPG
Capture_3.JPG [ 9.19 Кб | Переглянуто 3315 разів ]

Даний час є нормований. Тому якщо, для прикладу, стандартний час життя системи становить одну добу, то домноживши отриманий результат на 24, можна дізнатися скільки годин зможе прослужити така система в середньому.

_________________
Зображення


Догори
 Профіль  
 
Відображати повідомлення за:  Сортувати за  
Створити нову тему Відповісти  [ 7 повідомлень ] 

Часовий пояс UTC + 2 годин [ DST ]


Хто зараз онлайн

Зараз переглядають цей форум: Немає зареєстрованих користувачів і 1 гість


Ви не можете створювати нові теми у цьому форумі
Ви не можете відповідати на теми у цьому форумі
Ви не можете редагувати ваші повідомлення у цьому форумі
Ви не можете видаляти ваші повідомлення у цьому форумі
Ви не можете додавати файли у цьому форумі

Знайти:
Вперед:  
cron
POWERED_BY
Український переклад © 2005-2010 Українська підтримка phpBB