Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx54 / ММкурсовая_20111220_231825.docx
Скачиваний:
57
Добавлен:
01.08.2013
Размер:
181.68 Кб
Скачать

Московский Технический Университет Связи и Информатики

Курсовая работа

по дисциплине ММ

на тему:

“Моделирование случайных величин в matlab”

Выполнил

Ясюк Егор Васильевич

Проверил:

Крейнделин Виталий Борисович

Москва 2011

Оглавление

1.Введение. 3

2.Генерация случайных чисел в matlab. 4

3.Моделирование распределений случайных величин в matlab. 9

3.1Биномиальное распределение. 9

3.2Гипергеометрическое. 10

3.3Геометрическое. 11

3.4Пуассоновское распределение. 12

3.5Экспоненциальное. 14

3.6Нормальное распределение. 15

4.Метод Монте-Карло 17

5.Использование пакета Simulink для моделирования случайных чисел. 20

6.Программа в matlab 22

7.Список литературы. 25

1.Кетков Ю. Л., Кетков А. Ю., Шульц М. М. “MATLAB 7: программирование, численные методы”, СПБ. БХВ-Петербург, 2005 — 752 с. 25

2.К. Чен, П. Джиблин, А. Ирвинг, “MATLAB в математических исследованиях”, изд. “Мир”, 2001 — 353 c. 25

3.С. П. Иглин, “Теория вероятностей и математическая статистика на базе MATLAB”,НТУ “ХПИ”, 2006—612 c. 25

4.С. В. Поршнев, “Компьютерное моделирование физических процессов в пакете MATLAB”,изд. ”Горячая линия-телеком”,2003—592 с. 25

5.Н. Н. Снетков, “Имитационное моделирование экономических процессов”, изд. центр ЕАОИ, 2008. – 228 с. 25

  1. Введение.

В любых сферах деятельности мы всегда сталкиваемся с различного рода случайностями. Они встречаются и в технике, и в экономике, и даже в обычной повседневной жизни. Из-за этого мы никогда не можем точно описать протекание какого либо процесса, работу какого либо устройства. Но для того, чтобы расчеты были хотя бы приближены к реальности, нужно то, что будет учитывать воздействие случайных факторов. Для этого мы и вводим понятие случайной величины. Это величина, которая принимает в результате опыта одно из множества значений, причём появление того или иного значения этой величины до её измерения нельзя точно предсказать.

В данной курсовой работе мы постараемся рассмотреть, как же можно смоделировать (то есть сделать упрощенное представление, учитывающее важные свойства реальных случайных величин) эти случайные величины для исследования их воздействия на какой либо процесс, используя среду Matlab. Мы рассмотрим лишь несколько основных примеров реализации и моделирования таких величин, хотя, конечно, область моделирования случайных величин настолько широкая, что ее нельзя полностью описать.

Итак, в этой работе будут рассмотрены следующие примеры моделирования случайных величин: примеры моделирования генерации случайных величин, примеры моделирования случайных величин конкретных распределений, использование метода Монте-Карло и моделирование случайных величин в Simulink,то есть пример имитационного моделирования.

  1. Генерация случайных чисел в matlab.

В начале для получения случайных чисел использовались заранее составленные таблицы и физические датчики. Очевидным недостатком таблиц является их ограниченный объем, а использование физических датчиков наталкивается на сложность реализации, медлительность датчиков, их капризность и невоспроизводимость полученных результатов.

Поэтому вместо чисто случайных чисел стали использовать псевдослучайные числа, генерируемые с помощью той или иной программы. Случайность при таком подходе заменяется непредсказуемостью для неосведомленного пользователя: наблюдая некоторое время "хорошую" последовательность псевдослучайных чисел, он не в состоянии предсказать, каким будет следующий член этой последовательности, хотя на самом деле все они вычисляются по довольно простой формуле. Прежде чем использовать для решения задач тот или иной датчик случайных чисел (табличный, физический или программный), его подвергают разнообразным тестам: на равномерность (или согласие с другим предписанным законом распределения), на независимость и т. д. [2]

Функция rand используется для генерации псевдослучайных чисел, равномерно распределенных в интервале от 2-53 до 1-2-53 (примерно — [0;1]). Эти числа называются псевдослучайными, так как они выглядят случайными последовательностями, но существует метод их воспроизводства. Теоретически функция rand позволяет без повторений сгенерировать 21492 псевдослучайных чисел.[1] Обратившись к этой функции без аргумента, мы получаем очередное случайное число:

>> rand

ans =

0.814723686393179

>>

Последовательности генерируются детерминированным алгоритмом, но ему можно дать “затравку” [2] , которая позволит породить конкретную последовательность:

rand(‘seed’,13)-устанавливает в качестве “затравки” 13-ое число.

Если у функции задается один скалярный аргумент, то функция rand(n) возвращает квадратную матрицу n-го порядка, элементами которой являются случайные числа из интервала [0;1] :

>> rand(2)

ans =

0.915735525189067 0.959492426392903

0.792207329559554 0.655740699156587

Функция rand(n,m) возвращает прямоугольную матрицу размерности

n x m со случайными числами:

>> rand(2,3)

ans =

0.035711678574190 0.933993247757551 0.757740130578333

0.849129305868777 0.678735154857773 0.743132468124916

Обращение rand (size (А)) позволяет сгенерировать матрицу случайных чисел, размерность которой совпадает с размерностью массива А:

>> A=[1 2 3;3 4 5]

A =

1 2 3

3 4 5

>> rand(size(A))

ans =

0.392227019534168 0.171186687811562 0.031832846377421

0.655477890177557 0.706046088019609 0.276922984960890

Для перехода от чисто дробных случайных чисел к случайным числам из произвольного диапазона [а; b] достаточно воспользоваться преобразованием а+(b-a)*rand:

>> a=1

a =

1

>> b=3

b =

3

>> a+(b-a)*rand

ans =

1.092342781262308

В большинстве алгоритмических языков существует средство для возмущения датчика случайных чисел, в С и Pascal — это функция или процедура randomize. Она позволяет избежать повторения результатов при многократных запусках программ, использующих датчик случайных чисел. В системе MATLAB тоже имеется аналогичное средство:

rand('state',sum(100*clock))

Первый аргумент такого обращения обозначает служебный массив, определяющий состояние датчика случайных чисел. Формирование некоторых полей этого массива в зависимости от даты и текущих показаний машинного таймера приводит к случайной перенастройке параметров, влияющих на работу программы генерации случайных чисел.

Функция randn позволяет генерировать случайные числа, распределенные по нормальному закону со следующими параметрами:

• среднее значение случайной величины равно 0;

• дисперсия σ2=1;

• средняя квадратическая ошибка (стандарт) σ=1.

Пример использования:

>> randn

ans =

0.325190539456198

Форматы обращения к функции randn такие же, как и к функции rand. Если потребуются случайные числа, распределенные по нормальному закону со смещенным центром m и заданной дисперсией s, то достаточно воспользоваться преобразованием m+sqrt (s) *randn.

Кроме функций rand и randn, MATLAB предлагает и другие функции, с помощью которых можно создавать различные случайные объекты. [1] Для генерации случайных перестановок из целых чисел 1, 2, ..., п используется функция randperm(n):

≫ p=randperm(6)

Р =

2 4 3 6 5 1

Функции MATLAB'a ceil, fix, floor и round, вместе с rand по­рождают случайные целые числа. Здесь ceil(x) есть наименьшее целое > х, floor(x) — это наибольшее целое <хи round(x) бли­жайшее к х целое". Команда fix совпадает либо с ceil, либо с flооr в зависимости от знака числа, поскольку она округляет чис­ла до целого, ближайшего к нулю.

Можно получить столбец из n чисел, принимающих с равной ве­роятностью целые значения 0,1.... ,k (т.е. целые значения из зам­кнутого интервала [О, А;]), выполнив:

>> х = rand(n,l); floor((k+l)*x)

Пример:

>> b = rand(5,1); floor((5+1)*b)

ans =

5

3

1

3

1

Но мы можем получить и столбец из n чисел, принимающих с рав­ной вероятностью целые значения 1,... ,k (т.е. целые значения из замкнутого интервала [l,k]), выполнив

» ceil(k*x)

Команда round используется немного по-другому. Например.

» round(10*х)

порождает n чисел, которые принимают значения 0,1,... ,10 с не­равными вероятностями. [2]

Соседние файлы в папке docx54