ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ И НАУКЕ ГОУ ВПО «БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» ФАКУЛЬТЕТ КОМПЬЮТЕРНЫХ НАУК И ТЕЛЕКОММУНИКАЦИЙ КАФЕДРА: МАТЕМАТИЧЕСКОГО И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИНФОРМАЦИОННЫХ СИСТЕМ Отчет по лабораторной работе № 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)