Равномерное распределение в матлабе

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

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

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

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

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

Введение.

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

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

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

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

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

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

Читайте также  Почему в микроволновку нельзя ставить металлические предметы

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

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

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

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

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

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

0.035711678574190 0.933993247757551 0.757740130578333

0.849129305868777 0.678735154857773 0.743132468124916

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

0.392227019534168 0.171186687811562 0.031832846377421

0.655477890177557 0.706046088019609 0.276922984960890

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

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

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

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

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

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

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

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

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

Функции MATLAB’a ceil, fix, floor и round, вместе с rand по­рождают случайные целые числа. Здесь ceil(x) есть наименьшее целое > х, floor(x) — это наибольшее целое > х = rand(n,l); floor((k+l)*x)

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

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

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

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

Statistics and Machine Learning Toolbox™ обеспечивает функции и приложения, чтобы описать, анализировать, и данные модели. Можно использовать описательную статистику и графики для исследовательского анализа данных, подходящих распределений вероятностей к данным, сгенерировать случайные числа для симуляций Монте-Карло и выполнить тесты гипотезы. Регрессия и алгоритмы классификации позволяют вам чертить выводы из данных и создать прогнозирующие модели.

Читайте также  Программное приложение поддерживающее twain

Для анализа многомерных данных Statistics and Machine Learning Toolbox обеспечивает выбор функции, пошаговую регрессию, анализ главных компонентов (PCA), регуляризацию и другие методы сокращения размерности, которые позволяют вам идентифицировать переменные или функции, которые влияют на вашу модель.

Тулбокс предоставляет контролируемые и безнадзорные алгоритмы машинного обучения, включая машины вектора поддержки (SVMs), повышенные и сложенные в мешок деревья решений, k — самого близкого соседа, k — средние значения, k-medoids, иерархическая кластеризация, Гауссовы модели смеси и скрытые модели Маркова. Многие алгоритмы статистики и машинного обучения могут использоваться для вычислений на наборах данных, которые являются слишком большими, чтобы храниться в памяти.

Начало работы

Изучите основы Statistics and Machine Learning Toolbox

Описательная статистика и визуализация

Импорт данных и экспорт, описательная статистика, визуализация

Распределения вероятностей

Модели частоты данных, генерация случайной выборки, оценка параметра

Тесты гипотезы

t-тест, F-тест, тест качества подгонки хи-квадрата, и больше

Кластерный анализ

Безнадзорные методы изучения, чтобы найти естественные группировки и шаблоны в данных

АНОВА

Дисперсионный анализ и ковариация, многомерная АНОВА, повторились, измеряет АНОВУ

Регрессия

Линейные, обобщенные линейные, нелинейные, и непараметрические методы для контролируемого изучения

Классификация

Контролируемые алгоритмы изучения для двоичного файла и проблем мультикласса

Сокращение размерности и выделение признаков

PCA, факторный анализ, показывают выбор, выделение признаков, и больше

Промышленная статистика

Проект экспериментов (DOE); выживание и анализ надежности; статистическое управление процессами

Анализ Больших данных с длинными массивами

Анализируйте данные, которые не помещаются в память,

Ускорьте статистические вычисления

Параллельное или распределенное вычисление статистических функций

Генерация кода

Сгенерируйте код C/C++ и MEX-функции для функций Statistics and Machine Learning Toolbox

В Matlab для генерации случайных чисел предназначены специальные функции — rand, randn.

Функция rand генерирует массивы случайных чисел, значения элементов которых равномерно распределены на интервале (0; 1), т.е.

является аналогом функции табличного процессора СЛЧИС. Функция имеет следующие синтаксические конструкции:

  • — rand(n) — возвращает матрицу размера пхп. Если п — не скаляр, то появится сообщение об ошибке;
  • — rand(m, п) или rand([ra п]) — возвращают матрицу размера тхп;
  • — rand(m,n,p. ) или rand([m п р. ]) — возвращает многомерный массив;
  • — rand(size(A)) — возвращает массив того же размера и размерности, что и А, с элементами, распределенными по равномерному закону;
  • — rand (без аргументов) — возвращает одно случайное число, которое изменяется при каждом последующем вызове и имеет равномерный закон распределения;
  • — rand(‘ state’) — возвращает вектор с 35 элементами, содержащий текущее состояние генератора случайных чисел с равномерным распределением.

Для изменения состояния генератора можно применять следующие формы этой функции:

  • — rand(‘state’ .s) — устанавливает состояние в s;
  • — rand(‘state’ ,0) — сбрасывает генератор в начальное состояние;
  • — rand(‘state’. j) — для целых), устанавливает генератор в j-e состояние;
  • — rand(‘state’ ,sum(100*clock)) — каждый раз сбрасывает генератор в состояние, зависящее от времени.

Функция randn генерирует массив со случайными элементами, распределенными по стандартному нормальному закону, т.е. с нулевым математическим ожиданием и среднеквадратическим отклонением равным 1. Для генерации чисел, распределенных по нормальному закону, отличающегося от стандартного, нужно применить следующую формулу.

Читайте также  Сколько в одном килобайте гигабайт

где d — величина стандартного отклонения;

т — математическое ожидание.

Функция randn имеет следующие синтаксические конструкции:

  • — randn(n) — возвращает матрицу размера пхп. Если п — не скаляр, то появится сообщение об ошибке;
  • — randn(m,n) или randn([m п]) — возвращают матрицу размера тхп;
  • — randn(m,n,p. ) или randn([m п р. ]) — возвращает массив с элементами, значения которых распределены по нормальному закону;
  • — randn(size(A)) — возвращает массив того же размера, что и А, с элементами, распределенными по нормальному закону;
  • — randn (без аргументов) — возвращает одно случайное число, которое изменяется при каждом последующем вызове и имеет нормальное распределение;
  • — randn(‘state’) — возвращает двухэлементный вектор, включающий текущее состояние нормального генератора.

Для изменения состояния генератора можно применять следующие формы этой конструкции:

  • — randn(‘state’,s) — устанавливает состояние в s;
  • — randn(‘state’ ,0) — сбрасывает генератор в начальное состояние;
  • — randn(‘state’, j) — для целых) устанавливает генератор в j-e состояние;
  • — randn(‘state’, sum( 100*clock)) — каждый раз сбрасывает генератор в состояние, зависящее от времени.

Кроме перечисленных функций в пакете расширения Statistics Toolbox есть множество статистических функций, в том числе для генерации случайных чисел с различными законами распределения и определения их статистических характеристик, такие как normrnd, binornd и др.

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

  • — normrnd(mu, sigma) — возвращает одно случайное число;
  • — normrnd(mu, sigma, М, N) — возвращает матрицу чисел размерностью М х N, где mu — математическое ожидание, sigma — стандартное отклонение.

Функция binornd предназначена для создания массива случайных чисел, распределенных по биноминальному закону. Функция имеет синтаксическую конструкцию:

где N — количество испытаний;

Р — вероятность благоприятного исхода одного испытания;

ММ — количество строк матрицы R;

NN — количество столбцов матрицы R.

Пример 6.3. Требуется создать массив из шести чисел, распределенных по равномерному закону на интервале от 50 до 100.

Для решения задачи применим функцию rand, а для изменения диапазона используем формулу (Ь — а) + а:

» Y — rand(l,6)*( 100-50) + 50

Y — 65.2309 59.4827 59.6716 84.1112 65.1382 77.0837

Пример 6.4. Требуется создать массив из 15 чисел, имеющих стандартный нормальный закон распределения.

Для решения задачи применим функцию randn:

Y—0.4326 1.1909-0.1867 -1.66561.1892 0.7258 0.1253 -0.0376 -0.5883 0.2877 0.3273 2.1832 -1.1465 0.1746 -0.1364

Пример 6.5. Требуется создать массив случайных чисел, распределенных по биноминальному закону с параметрами: N— 10, Р=0,1 и построить гистограмму.

R — binornd(15,0.1,l,15); hist(R,15); disp(R)

Пример 6.6. Требуется создать массив из 10 000 случайных чисел, распределенных нормально с математическим ожиданием т = 50 и стандартным отклонением sigma = 4, а также построить гистограмму плотности распределения с количеством столбцов и = 100.

Для решения задачи применим функции randn и normrnd, генерирующие случайные числа и функцию hist, выполняющую построение гистограммы:

Ссылка на основную публикацию
Adblock
detector