Оглавление
Введение
. Теоретическая часть
.1 Законы распределения
.2 Характеристики распределения порошков по размерам
.3 Алгоритм метода Моте-Карло
.4 Метод линейных итераций
.5 Алгоритм метода вязкой суспензии
. Практическая часть
.1 Разработка программы
.2 Первая вкладка
.3 Вторая вкладка
Выводы
Список литературы
Введение
Дисперсные системы - это системы, состоящие из двух или более фаз, которые имеют четкую границу раздела и не вступают в химическое взаимодействие друг с другом [1].
фаза - называется дисперсной фазой, частицы.
фаза - среда, в которой размещены частицы первой фазы (непрерывная). Называется дисперсионной фазой.
Дисперсные системы могут иметь и более сложное строение, например, представлять собой двухфазное образование, каждая из фаз которого, будучи непрерывной, проникает в объем другой фазы. К таким системам относятся твердые тела, пронизанные разветвленной системой каналов-пор, заполненных газом или жидкостью, некоторые микрогетерогенные полимерные композиции и другие. Нередки случаи, когда дисперсионная среда "вырождается" до тончайших слоев (пленок), разделяющих частицы дисперсной фазы [1].
Для исследования дисперсных систем удобно
использовать компьютерное моделирование, оно позволяет рассчитать параметры
таких систем, а также визуально отобразить полученные данные.
1. Теоретическая часть
.1 Законы распределения
Гамма распределение - это двухпараметрическое семейство абсолютно непрерывных распределений. Если параметр принимает целое значение, то такое гамма-распределение также называется распределением Эрланга.
Пусть распределение случайной
величины ![]()
задаётся плотностью вероятности,
имеющей вид:
где - гамма-функция Эйлера.
Тогда говорят, что случайная
величина ![]()
имеет гамма-распределение с
параметрами ![]()
и ![]()
. Пишут ![]()
[2].
Математическое ожидание -
Дисперсия -
Экспоненциальное или показательное распределение - абсолютно непрерывное распределение, моделирующее время между двумя последовательными свершениями одного и того же события
Случайная величина
<#"784205.files/image009.gif"> имеет
экспоненциальное распределение с параметром
, если её плотность
<#"784205.files/image011.gif">.
Математическое ожидание -
Дисперсия -
Усеченное нормальное распределение.
Нормальное распределение, также
называемое распределением Гаусса
<#"784205.files/image015.gif">
Математическое ожидание -
.
Дисперсия -
.
Нормальное распределение зависит от двух параметров - смещения и масштаба, то есть является с математической точки зрения не одним распределением, а целым их семейством. Значения параметров соответствуют значениям среднего (математического ожидания) и разброса (стандартного отклонения).
Стандартным нормальным
распределением называется нормальное распределение с математическим ожиданием 0
и стандартным отклонением 1.[2]
Логнормальное распределение в теории
вероятностей - это двухпараметрическое семейство абсолютно непрерывных
распределений. Если случайная величина имеет логнормальное распределение, то её
логарифм имеет нормальное распределение [2].
Математическое ожидание -
Дисперсия -
.2 Характеристики распределения
порошков по размерам
Допустим, в порошке содержится N частиц, их диаметры Di. i=1,2,…,N.
![]()
- плотность распределения частиц по
размерам.(D) - математическая плотность распределения частиц по размерам.(D)dD
- относительное число частиц, которые имеют размер [D,D+dD].
![]()
- относительное число частиц, у
которых величина меньше, чем заданное число D[1].
.3 Алгоритм метода Монте-Карло
1) С помощью генератора случайных чисел задается случайное число R∈[0,1].
) Записывается уравнение F(D)=R, где F(D) - заданная функция распределения по размерам. Уравнение решается, находится значение D.
) Пункты 1 и 2 повторяются для каждой частицы. В результате получается набор N частиц, имеющих заданное распределение f(D).
В случаях, когда F(D) имеет простое
аналитическое выражение (экспоненциальная функция), то уравнение F(D)=R может
быть решено аналитически и используется зависимость D(R).
.4 Метод линейных итераций
Метод трапеций - метод численного интегрирования функции одной переменной, заключающийся в замене на каждом элементарном отрезке подынтегральной функции на многочлен первой степени, то есть линейную функцию.
1. Генерируется число R и в массиве
находится ячейка F=R. Если такой ячейки нет, то находятся значения двух ячеек,
между которыми находится R. С помощью метода линейной интерполяции находится
значение D равное соответствующему R[1].
.5 Алгоритм метода вязкой суспензии
Для заданной объемной концентрации частиц ц и заданной плотности распределения f(D) происходит генерирование частиц. Определяется суммарный объем частиц:
= ц*Lx*Ly.
В цикле i=1,..,N методом Монте-Карло генерируются частицы.
Для вновь генерированной степени
определяем их объем ![]()
и объем уже существующих частиц ![]()
.
Если ![]()
, процесс продолжается; если ![]()
, процесс прекращается. В результате
имеем набор частиц, имеющих заданный закон распределения по размерам и заданную
объемную концентрацию ц.
1. Все связанные частицы размещаются в
заданном объеме LxLyLz с помощью метода Монте-Карло, т.е. для каждой созданной
частицы создаются координаты:
Эти координаты частиц используются в качестве начальных условий для метода вязкой суспензии [1].
![]()
- некий параметр, меняющийся от 0
до 1.
Организуется цикл и вычисляется ![]()
для i=1,..,N.
После этого во втором цикле
происходит корректировка:
3.
Расчет заканчивается, когда в системе не останется ни одной пары пересекающихся
частиц, то есть, когда все ![]()
Существуют граничные условия: границы расчетной
области - твердая непроницаемая поверхность. Это означает, что частицы не могут
выходить за пределы области, а могут только соприкасаться с ней.
2. Практическая часть
2.1 Разработка программы
В качестве языка программирования был выбран язык C#. C# - объектно-ориентированный язык программирования. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы [2].
Лучшей средой разработки для данного языка является Microsoft Visual Studio 2013. Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования или инструментов для прочих аспектов процесса разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server).исходного кода (как например, Subversion и Visual SourceSafe) [2].
Программа состоит из 3 вкладок: «Состав порошковой смеси», «Распределение частиц» и «Справка».
Рисунок 1. Вкладки приложения
дисперсный программа итерация суспензия
Каждая вкладка представляет собой окно с полями
для ввода и отображением информации - результатов работы программы.
Рисунок 2. Поле первой вкладки «Состав
порошковой смеси»
Начальные условия:
Ø N - число частиц;
Ø M - число отрезков;
Ø L - число отрезков для метода трапеций;
Ø Dmax - максимальный размер частиц(мат.ожидание);
Ø Dcp - средний размер частиц;
Ø Dis - дисперсия;
Поле для выбора вида распределения:
Ø Логнормальное распределение;
Ø Экспоненциальное распределение;
Ø Гамма распределение;
Ø Усечено нормальное распределение;
Рисунок 3. Поле второй вкладки «Распределение
частиц»
Размер области:
Ø Lx,Ly - размеры области для генерации частиц;
Ø ![]()
- концентрация частиц;
Ø а - скорость размещения;
Значения параметров:
Ø Dcp - средний размер частиц(мат.ожидание);
Ø ![]()
- дисперсия;
Ø Dmax - максимальный размер частиц;
Ø ![]()
- шаг по времени;
Ø ![]()
- число отрезков;
Ø L - число отрезков для метода трапеций;
Ø Количество созданных частиц;
Ø Количество тактов;
Рисунок 4. Поле третьей вкладки «Справка»
2.2 Первая вкладка
Первая вкладка - «Состав порошковой смеси».
Здесь содержатся поля для ввода начальных условий, выбор распределения, по
которому будет производиться расчет, график данного распределения и данные,
полученные в результате генерации. Выбор распределения осуществляется с помощью
компонента ComboBox, в котором содержатся названия распределений. Для каждого
распределения необходимо задать начальные условия.
Рисунок 5. Первая вкладка «Состав порошковой
смеси»
После ввода начальных условий необходимо нажать кнопку «Построить гистограмму» для построения графика и вывода на экран.
Программа создает L диаметров D, высчитывает соответствующие им значения F. Значения F нормируются, т.е. каждое значение делится на последний элемент массива. Далее с помощью генератора случайных чисел генерируется число от 0 до 1 и сравнивается со значениями F. Берутся значения двух ближайших точек к данному случайному числу, и с помощью метода линейной интерполяции высчитывается диаметр частицы.
После этого строится график плотности распределения. Для вывода графика распределений используется модуль ZedGraph - компонент для рисования графиков под.NET Framework. Преимуществом данного модуля является возможность изменения масштаба графика одной кнопкой. Так же, в ZedGraph можно строить различные графики на одной панели (в данном случае нам необходимы гистограмма и кривая) [2]. Гистограмма показывает плотность созданных частиц, согласно указанному закону, а кривая - теоретически определенная плотность распределения.
Для построения гистограммы использовался следующий алгоритм:
1. Пользователь задает число М - число отрезков для построения гистограммы;
2. Рассчитывается шаг a,a1 для построения диаграммы;
3. Диаметр частицы, полученный методом Монте-Карло делится на шаг a,a1;
4. От полученного значения берется целая часть встроенным методом Math.Truncate(x). Составляем массив, смотрим, в какую ячейку попала частица, и увеличиваем счетчик на единицу в этой ячейке;
5. Шаги 4-5 повторяются N раз;