Friday, February 22, 2008

Matlab: статистические штучки для получения реализаций случайной величины

Это первое сообщение, отосланное через ScribeFire, аддон к браузеру FireFox.
Так-с. Исходные данные. Предполагается, что читатель знаком с:
Предположим, что у нас есть случайная прочность R с параметрами m=350, s=30. Это выглядит так:



Функции распределения и функции плотности в Матлабе соответствуют команды
cdf('norm', x, Mean1, StdDev1)
pdf('norm', x, Mean1, StdDev1)
Команда cdf(...) отвечает на вопрос "какова вероятность того, что реализация случайной переменной будет меньше, чем x?"
Но для задачи вероятностного расчета методом Монте-Карло нам нужно средство генерации множества реализаций нашей случайной прочности.
Для равномерного распределения такое средство одинаково в любом языке программирования и называется RND. И в Екселе тоже есть.
Для любого другого распределения для генерации случайных чисел нам нужна функция, обратная CDF, отвечающая на вопрос "какое число соответствует вероятности непревышения такой-то?". Такой способ получения случайных чисел называется методом обратного преобразования.
Откуда нам взять такого зверя? На помощь приходит замечательный статистический пакет Stixbox, о котором я обещал написать :
>> MonteCarloData1 = rnorm(1000, 350, 30);
>> Mean1 = mean(MonteCarloData1)
Mean1 =
349.9133
>> StdDev1 = std(MonteCarloData1)
StdDev1 =
30.7880
Функция rnorm(количество_реализаций, среднее, стд_отклонение) выдает столько реализаций случайной величины с нормальным распределением, сколько нам заблагорассудится. С ее помощью и построена наложенная на рисунок гистограмма реализаций случайной величины (красненьким).
Аналогичные функции есть в этом пакете и для других известных распределений. Для задач вероятностного анализа расчетных моделей конструкций более чем достаточно. Спасибо за этот замечательный инструмент Андерсу Хольтсбергу.

No comments: