forum.vnstele.com http://forum.vnstele.com/ |
|
Лабораторна робота №2. Індивідуальні завдання http://forum.vnstele.com/viewtopic.php?f=13&t=92 |
Сторінка 1 з 1 |
Автор: | Bobas [ 29 січня 2012, 17:59 ] |
Тема повідомлення: | Лабораторна робота №2. Індивідуальні завдання |
Визначити площу круга заданого радіусу 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. |
Автор: | vasylivandriy [ 04 березня 2013, 23:56 ] |
Тема повідомлення: | Re: Лабораторна робота №2. Індивідуальні завдання |
Доброго дня. В мене є питання до другої частини лабораторної роботи №2: "Як за допомогою функції "randn()" або "normrnd()" згенерувати значення в заданих межах (від "а" до "b")?" |
Автор: | echern [ 05 березня 2013, 16:39 ] |
Тема повідомлення: | Re: Лабораторна робота №2. Індивідуальні завдання |
vasylivandriy написав: Доброго дня. В мене є питання до другої частини лабораторної роботи №2: "Як за допомогою функції "randn()" або "normrnd()" згенерувати значення в заданих межах (від "а" до "b")?" Найпростіше згенерувати масив даних, а потім перемножити на нормуючий коефіцієнт. (Визначити мінімальне і максимальне значення, обчислити цей коефіцієнт) |
Автор: | ascentman [ 08 березня 2013, 23:56 ] |
Тема повідомлення: | Re: Лабораторна робота №2. Індивідуальні завдання |
можна питання до 2ої частини: там є лістінг для 2ох алгоритмів моделювання: пуасонівського і рівномірного. так ось: який нам потрібно залишити, а який добавити? |
Автор: | Bobas [ 09 березня 2013, 22:02 ] |
Тема повідомлення: | Re: Лабораторна робота №2. Індивідуальні завдання |
Всі уважно читають методику в 2-му пункті написано здійснити моделювання за рівномірний та нормальним законом розподілу, оскільки, рівномірний уже реалізований (unifrnd) то потрібно зробити лише одну заміну пуасонівського (poissrnd) на нормальний (однією із 3- функцій, які я називав). Успіху в починаннях))) |
Автор: | Mykola Sheremeta [ 19 червня 2014, 01:06 ] |
Тема повідомлення: | Re: Лабораторна робота №2. Індивідуальні завдання |
Реалізація другої лабораторної роботи виглядає ось так: Код: %#> 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. Бажаю всім успіхів) |
Автор: | Step [ 09 березня 2015, 01:28 ] |
Тема повідомлення: | Re: Лабораторна робота №2. Індивідуальні завдання |
Микола стільки багато написав, що я аж злякалася) Але не все так важко, як здається на перший погляд. ^_^ А ось частина мого коду, та що стосується круга, і звісно ж таки, 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 [ 46.96 Кб | Переглянуто 3321 разів ] 2) Обрахований середній час виходу з ладу системи: Приєднання файлів: Capture_3.JPG [ 9.19 Кб | Переглянуто 3321 разів ] Даний час є нормований. Тому якщо, для прикладу, стандартний час життя системи становить одну добу, то домноживши отриманий результат на 24, можна дізнатися скільки годин зможе прослужити така система в середньому. |
Сторінка 1 з 1 | Часовий пояс UTC + 2 годин [ DST ] |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |