Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_1_SM.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
606.67 Кб
Скачать

3. Iндивiдуальне завдання

Дослідити проходження фотона крізь мутне середовище (бродіння):

1)Згенерувати рандомну кількість частинок

2) Обчислити математичне сподiвання, дисперсiю, середньоквадратичне вiдхилення.

3) Обчислити частоти значень випадкової величини (побудувати гiстограму)

4) Перевiрити на нормальний розподiл.

5) Побудувати обвідну гістограму

6)Побудувати теоретичну криву проходження фотонів

4. Хiд виконання та результати роботи

Робота була виконана у середовищi MatLab. Код програми:

clear all;

close all;

%Згенеруємо тисячу фотонів та збережемо їх координати

N = 1000;

X = zeros(1,1000);

Y = zeros(1,1000);

for i=1:N

[res, code] = photon(0,0);

X(1,i) = res(length(res),1);

Y(1,i) = res(length(res),2);

end

%Будуємо графіки вибірок їх середні значення та середньоквадратичні

%відхилення

hold on

plot(X,'g')

plot([0 1000],[mean(X) mean(X)])

plot([0 1000],[mean(X)+std(X) mean(X)+std(X)],'--')

plot([0 1000],[mean(X)-std(X) mean(X)-std(X)],'--')

xlabel('n');

ylabel('X');

legend('mean','mean+std','mean-std');

figure

hold on

plot(Y,'g')

plot([0 1000],[mean(Y) mean(Y)])

plot([0 1000],[mean(Y)+std(Y) mean(Y)+std(Y)],'--')

plot([0 1000],[mean(Y)-std(Y) mean(Y)-std(Y)],'--')

xlabel('n');

ylabel('Y');

legend('mean','mean+std','mean-std');

figure

hold on

plot([X Y],'g')

plot([0 2000],[mean([X Y]) mean([X Y])])

plot([0 2000],[mean([X Y])+std([X Y]) mean([X Y])+std([X Y])],'--')

plot([0 2000],[mean([X Y])-std([X Y]) mean([X Y])-std([X Y])],'--')

xlabel('n');

ylabel('X, Y');

legend('mean','mean+std','mean-std');

%Будуємо гістограми

figure

hist(X)

xlabel('X');

ylabel('n');

figure

hist(Y)

xlabel('Y');

ylabel('n');

figure

hist([X Y])

xlabel('X,Y');

ylabel('n');

%Перевірка розподілу на нормальність

[h, p] = chi2gof(X)

[h, p] = chi2gof(Y)

[h, p] = chi2gof([X Y])

function [ res, code ] = photon(x0,y0)

h = 15;%товщина шару

mus = 0.1;

T = @(x) x > h; % Перевірка пропускання

alpha = @(P) P < 0.05; % Перевірка Поглинання

R = @(x) x<0; % Перевірка Відбиття

i = 2;

x = x0;

y = y0;

P = 1;

res = [x0 y0];

while not(R(x) || T(x) || alpha(P)) % Перевірте умови

res(i,1) = x;

res(i,2) = y;

P = -log(rand())/mus;

phi = 2 * pi * rand();

x = x + P * cos(phi);

y = y + P * sin(phi);

i = i + 1;

end

res(i,1) = x;

res(i,2) = y;

if R(x)

code = 1;

elseif T(x)

code = 2;

elseif alpha(P)

code = 3;

end

end

Рис. 1 – Графік пропускання фотона

Рис. 2 – Графік поглинання фотона

Рис. 3 – Графік відбиття фотона

Рис.4 – Гістограма пропускання фотона

Рис.5 – Гістограма поглинання фотона

Рис.6 – Гістограма відбиття фотона

Перевірка розподілу на нормальність:

h =1

p = 2.0805e-017

h =1

p =4.2190e-022

h =1

p =1.2263e-017

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

Робота була виконана у середовищi MatLab. Код програми:

clc

N=100; %кількість експериментів

Nphotons=1e3;% загальна кількість падаючих фотонів

Nexperiment=100;

for k=1:N

mu_a=10; mu_s=90; %mu_a - Коефіцієнт поглинання

albedo=mu_s/(mu_s+mu_a); %mu_s - Коефіцієнт пружного розсіяння

mfpl=1/(mu_s+mu_a); %Cередня відстань вільного пробігу фотона

mt=mu_s+mu_a; % Транспортний коефіцієнт взаємодії фотонів з центрами розсіяння

maxZ=0.02;

ns=50;% Максимальна кількість росіювання фотонів

g=0.75; % Параметр анізотропії

Reflected=0;

Translimitted=0;

Absorbed=0;

for i=1:Nphotons

z=0;% Первісна глибина

muz = 1;% Напрямок падаючого світла

w= 1;% Початкова вага фотона

for j=1:ns

s=-log(rand(1))/(mt);% Геометрична довжина шляху

z=z+muz*s; % Рух фотону

if(rand(1)>albedo)

Absorbed= Absorbed+1;

break

end

if(z<0)

Reflected=Reflected+1;

break

end

if(z>maxZ)

Translimitted=Translimitted+1;

break

end % Кількість фотонів, що виходять з вершини

if g>0

temp=(1-g.^2)/(1-g+2*g*rand(1));

theta = acos((1+g.^2-temp.^2)/(2*g));

else

theta= acos(2*rand(1)-1);

end

phi=2*pi*rand(1);

muz= -sin(theta)*cos(phi)*sqrt(1-((muz)*(muz)))+muz*cos(theta);

w=w*albedo;% Поглинання частини пакета фотонів

end

end

% Нормалізований результат

R(k)=Reflected/Nphotons;

T(k)=Translimitted/Nphotons;

a(k)=Absorbed/Nphotons;

end

y=1:1:Nexperiment;

Mean_R=sum(R(y))/Nexperiment;% Середнє відображення

FR=(R(y)-Mean_R).^2;

Std_RR=sum(FR)/Nexperiment;% STD відображення

figure

plot(y,R(y),'black',y,Mean_R,'o',y,Mean_R+sqrt(Std_RR),'x',y,Mean_R-sqrt(Std_RR),'*');

hold on

axis([0,100,0.06,0.12])

legend('coeff.R','meam R','mean r+std R','mean r+std R')

figure

alpha=95;% Довірчий вітсоток

[p S]=polyfit(y,R(y),1);

[Y,DELTA]=polyconf(p,R(y),S,1-(alpha/100));% поліномінальна оцінка і довірчий інтервал оцінки.

A=mean (Y-DELTA); % Мінімальний ліміт

B=mean(Y+DELTA); % Максимальний ліміт

[n,xout]=hist(R(y),50);

histfit(R(y),50,'kernel'); % Теоретична крива

hold on

xval=0:0.1:max(n);

plot(A,xval,'*',B,xval,'*');

hold off;

legend('Experimental distr.','Theoretical dist.',strcat('confidence interval, %=',num2str(alpha)))

Рис.7 – Побудова теоретичної кривої відбиття фотона в середовищі

Рис.8– Побудова обвідної гістограми

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]