Положение О подготовке и защите курсовых работ

advertisement
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ И НАУКЕ
ГОУ ВПО
«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
ФАКУЛЬТЕТ КОМПЬЮТЕРНЫХ НАУК И ТЕЛЕКОММУНИКАЦИЙ
КАФЕДРА: МАТЕМАТИЧЕСКОГО И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
ИНФОРМАЦИОННЫХ СИСТЕМ
Отчет по лабораторной работе № 7
Тема работы: «Компьютерное моделирование физических процессов»
Выполнил:
студент очного отделения
3 курса группы 140810
Лысых К.В.
Проверила: Титова Н.С.
Белгород 2011г.
Вариант № 4
Выполненные задания:
Исходные данные:
4.
Вариант
Xmax
4
7
Na
35
dx
0.01
no
100
A
0.09
AB
0.15
Задание 1:
Построить модель прохождения частицами пучка некоторого слоя
заданной ширины и имеющим заданное эффективное сечение поглощения,
используя метод Монте-Карло.
clear all;
Na=35; k=(1:Na)'; no=100; SecA=0.09; dx=0.01; xmax = 7;
x=zeros(size(k));
% Начальный вектор координат
sc=ones(size(k));
% Начальный вектор-счетчик
dW=no*SecA*dx;
% Вероятность поглощения на шаге dx
hl=line(x,k);
% Подготовка Na точек для рисования
set(hl, 'Marker', 'o', 'MarkerSize',3);
axis([0 1 0 Na]);
% Масштабирование осей
%pause; % Пауза перед запуском основного цикла
% Далее выполняется цикл, на каждом шаге которого
% координата x возрастает на dx до тех пор, пока
% частица не пройдет путь Xmax или не ПОГЛОТИТСЯ
while (any(sc)> 0 & x < xmax)
ra=rand(size(k)); % Расчет вероятностей с помощью
% датчика случайных чисел для
% всех частиц
k1=find(ra-dW< 0);
% Определение номеров частиц
% подлежащих отбраковке
sc(k1)=0; % Зануление счетчика отбракованной частицы
x=x+sc*dx;
% Продвижение на dx остальных частиц
set(hl,'XData',x);
% Рисование
pause(0.1);
end;
% Конец цикла while
Рисунок 1. Модель прохождения пучка частиц через слой заданной ширины
Задание 2.
Построить модель (используя метод Монте-Карло) прохождения частицами
пучка некоторого слоя заданной ширины и имеющим заданное эффективное
сечение поглощения с учетом превращения частиц А пучка в частицы В
(эффективное сечение превращения задано).
Вариант
Xmax
Na
dx
no
A
AB
4
7
35
0.01
100
0.09
0.15
% Моделирующая часть программы с поглощением A
% и превращением A -> B %
% SecA - сечение поглощения A
% SecAB - сечение превращения A в B
% scA - счетчик числа частиц типа A
% scB - счетчик числа частиц типа B
clear; % Очистка рабочей области
Na=35; % Начальное число частиц A
%
L=7; k=(1:Na)'; no=100;dx=0.01; SecA=0.09; SecAB=0.15;
x=zeros(size(k));
% Начальный вектор координат
scA=ones(size(k)); % Вектор-счетчик частиц A
scB=zeros(size(k)); % Вектор-счетчик частиц B
dWa=no*dx*SecA; % Вероятность поглощения A на шаге dX
dWab=no*dx*SecAB;
% Вероятность A -> B на шаге dX
hl=line(x,k);
% Подготовка Na точек для рисования
set(hl, 'Marker', 'o', 'MarkerSize',3);
axis([0 1 0 Na]);
% Масштабирование осей
% Имитация поглощения и превращения частиц
% Пока есть частицы A и не пройден путь L
while (any(scA)> 0 & all(x)< L) ra=rand(size(k));
ka=find(ra-dWa< 0);
% Номера поглощенных частиц A
scA(ka)=0;
% Выбывание частиц типа A
kb=find(dWa< ra & ra< dWa+dWab)
scB(kb)=scA(kb);
% Превращение A в B
scA(kb)=0;
% Исчезновение этих A
x=x+scA*dx+scB*dx;
set(hl,'XData',x);
% Рисование
pause(0.1);
end;
Рисунок 2. Модель прохождении пучка частиц через слой заданной ширины с учетом
превращений
Задание 3.
Найти значение определенного интеграла методом Монте-Карло.
Построить график функции f(x) и отметить на графике «случайные»
точки, образованные при решении.
Вариант
f(x)
a
b
ymax
4
sin(2x)+1
3
7
max f(x) на [a,b]
f = 'sin(2*x)+1';
sym x;
fsym = sym(f);
%исследуемая функция
%задаем символьную переменную
%задаем символьную функцию, соот.-ю строоке f
a = 3; b = 7; %интервал интегрирования
n1 = 0;
n2 = 0;
n = 2000; %количество испытаний
xx = [a:0.1:b];
%набор координат точек для отображения графика функции
yy = zeros(1,length(xx));
%рассчитываем значения функции на заданном интервале
for i=1:length(xx)
yy(i) = subs(fsym, 'x', xx(i));
end
ymax = max(yy); %максимально допустимое значение исследуемой функции
x = zeros(1,n); %набор координат "случайных" точек
y = zeros(1,n);
for i=1:n
x(i) = a + (b-a)*rand(1);
y(i) = ymax*rand(1);
f_x = subs(fsym, 'x', x(i));
if (y(i) <= f_x)
n1 = n1 + 1;
else
n2 = n2 + 1;
end
end
figure(1);
plot(xx,yy,x,y,'.r');
s1 = (b-a)*ymax*(n1/(n1+n2));
Рисунок 3. Вычисление значения определенного интеграла методом Монте-Карло
Задание 4.
Построить фазовую траекторию математического маятника.
Визуализируйте процесс движения самого математического маятника.
Уменьшая шаг dt, убедитесь, что фазовая траектория воспроизводится
при этом без изменений в течение нескольких периодов. Увеличивая шаг,
достигните такой его величины, чтобы появилось явно видимое искажение
формы фазовой траектории. Изобразите несколько разных фазовых
траекторий.
Вариант
x1
Импульс p1
dt
4
3.1
0.1
0.02
Рисунок 4. Фазовая траектория движения мат. маятника при dt (0.02)
Рисунок 5. Фазовая траектория движения мат. маятника при dt (0.01)
Рисунок 6. Фазовая траектория движения мат. маятника при dt (0.05)
Download