Лабораторная работа 9Аппроксимация
Скачать 2.82 Mb.
|
Сочетание: №3. В ящике 15 шаров, из которых 5 голубых и 10 красных. Наугад выбирают 6 шаров. Найти вероятность того, что среди вынутых шаров 2 голубых. 50 51 Вывод В ходе данной лабораторной работы мы научились с помощью языка программирования Python проводить вычисления по комбинаторике, а именно написали код для вычисления таких конфигураций, как перестановка, сочетание и размещение с использование библиотеки math для уменьшения трудоёмкости алгоритма. 52 По лабораторной работе № 14 «Биноминальное распределение». Дискретные случайные величины. Определение дискретной случайной величины (ДСВ) . Закон и многоугольник распределения ДСВ. При бросании игральной кости могут появиться числа 1, 2, 3, 4, 5 и 6. Заранее определить возможные исходы невозможно, так как они зависят от многих случайных причин, которые не могут быть полностью учтены. В данном примере выпавшее число очков есть величина случайная, а числа 1, 2, 3, 4, 5 и 6 есть возможные значения этой величины. Случайная величина- величина, которая в результате опыта со случайным исходом принимает то или иное числовое значение, причем заранее неизвестно, какое именно. Случайные величины (кратко: СВ) обозначают большими латинскими буквами , а принимаемые ими значения - малыми буквами Из приведенного выше примера, видно, что случайная величина Х может принять одно из следующих возможных значений: 1, 2, 3, 4, 5, 6. Эти значения отделены одно от другого промежутками, в которых нет возможных значений Х. Таким образом, в этом примере СВ принимает отдельные, изолированные возможные значения. Дискретной (прерывной) называют случайную величину, которая принимает отдельные, изолированные возможные значения с определенными вероятностями. Число возможных значений дискретной случайной величины может быть конечным или бесконечным. Законом распределения дискретной случайной величины называют соответствие между возможными значениями и их вероятностями; его можно задать таблично, аналитически (в виде формулы) и графически. Закон распределения ДСВ Х удобно задавать с помощью следующей таблицы 53 X i X 1 X 2 X n P i P 1 P 2 P n называемой рядом распределения. При этом возможные значения случайной величины Х в верхней строке этой таблицы располагаются в определенном порядке, а в нижней - соответствующие вероятности Графически ряд распределения изображают в виде многоугольника (или полигона) распределения. Задача 1 В ящике 2 нестандартные и 4 стандартные детали. Из него последовательно вынимают детали до первого появления стандартной детали. Построить ряд и многоугольник распределения ДСВ от числа извлеченных деталей. В данном случае изучаем событие — вероятность появления стандартной детали от числа испытаний Решение. Рассмотрим все возможные значения, которые может принимать случайна величина (СЛ) : - первой вынули стандартную деталь; - первая вынутая деталь нестандартная, вторая стандартная; - первая деталь нестандартная, вторая деталь нестандартная, третья деталь стандартная. Соответствующие им вероятности найдем воспользовавшись правилом умножения вероятностей (заметьте, что события зависимы): Тогда закон распределения дискретной случайной величины Х примет вид: 1 2 3 Построим многоугольник распределения, отложив на оси абцисс (ОХ) значения ДСВ Х, а на оси ординат (ОY) соответствующие им вероятности: 54 Тоесть вероятность вытащить стандартную деталь при таких испытаниях падает с ростом количества испытаний. Функция распределения . Функцией распределения называют функцию , определяющую вероятность того, что случайная величина в результате испытания примет значение, меньшее некоторого фиксированного значения Функция распределения ДСВ имеет вид где суммирование ведется по всем индексам , для которых Задача2 Задан закон распределения ДСВ Х: X i -2 -1 0 2 3 P i 0.1 0.2 0.3 0.3 0.1 Найти функцию распределения и построить ее график. Решение. По определению функции распределения находим: если , то , так как значения меньше -2 ДСВ Х не принимает; если , то если , то , так как может принять значения -2 или -1 если , то если , то если , то 55 Таким образом, функция распределения имеет вид: В табличном виде X i -2 -1 0 2 3 F(X) 0 0.1 0.3 0.6 0.9 В графическом виде Биномиальный закон распределения вероятностей Пусть проводится n независимых испытаний в каждом из которых случайное событие A может появиться с вероятностью p. Тогда случайная величина X– число появлений события A в данной серии испытаний, имеет биномиальное распределение. Совершенно понятно, что эта случайная величина может принять одно из следующих значений: Например: монета подбрасывается 5 раз. Тогда случайная величина – количество появлений орла распределена по биномиальному закону. Орёл обязательно выпадет: или раз, или , или , или , или , или раз. Cоответствующие вероятности определяются формулой Бернулли : k k n k P C p q n n − = , где: n– количество независимых испытаний; 56 p – вероятность появления события в каждом испытании; 1 q p = − – вероятность непоявления события в каждом испытании; xi ={0,1,2,…,n-1,n}– сколько раз может появиться событие в данной серии испытаний (список всех возможных значений). Сведём этот закон распределения в таблицу: Вероятности pi представляют собой члены бинома Ньютона , благодаря чему распределение и получило своё название. По формуле бинома: В нашем примере с монеткой: – вероятность того, что в 5 испытаниях орёл не выпадет вообще ( ); – вероятность того, что в 5 испытаниях орёл выпадет ровно раз; – вероятность того, что в 5 испытаниях орёл выпадет ровно раза; – … ровно раза; – … ровно раза; – … ровн= C n i ∗ p i ∗ q n − i о раз. Таким образом, закон распределения числа выпавших орлов: Проверяем сумму вероятностей Задание: Многократно выполняют один и тот же набор экспериментов (подбрасывая монетку 10 раз) снова и снова, то число решек, наблюдаемых во всех экспериментах, следует биномиальному распределению. Генерируем случайное число n раз и записываем результаты в списки. Если число равно 0,5 или больше, то считать его решкой, если нет — орлом. И повторим это много раз, в нашем примере 1000. Код Python: # Моделирование биномиального распределения 57 import numpy as np import matplotlib.pyplot as plt from scipy.stats import binom import seaborn as sns # Входные данные # Число повторов trials = 1000 # Бросков в каждом повторе n = 10 # Вероятность успеха p = 0.5 # Основная функция моделирования бросков монеты # heads - это список удачных исходов def run_binom(trials, n, p): heads = [] for i in range(trials): tosses = [np.random.random() for i in range(n)] #Данная функция создает массив указанной формы и заполняет его случайными числами с плавающей точкой из непрерывного равномерного распределения в интервале [0, 1). heads.append(len([i for i in tosses if i>=0.50])) return heads # Выполняем функцию. heads = run_binom(trials, n, p) # Строим гистограмму ax = plt.subplots(figsize=(14,7))#задаем размеры ax = sns.distplot(heads, bins=10, label='simulationresults')#bins - ширина столбцов гистограм ax.set_xlabel("Количество Орлов",fontsize=16) ax.set_ylabel("ЧАСТОТА",fontsize=16) # Plot the actual binomial distribution as a sanity check from scipy.stats #import binom #Рисуем теоретические значения биномиального распределения используя #библиотеку scipy.stats x = range(0,11) ax.plot(x, binom.pmf(x, n, p), 'ro', label='actual binomial distribution') #добавляем красные(r) круги(o) биноминальное распределение на рисунок ax.vlines(x, 0, binom.pmf(x, n, p), colors='r', lw=5, alpha=0.5) #добавляем красные линиии биноминальное распределение на рисунок plt.legend() #отображаем легенду plt.show() #отображаем рисунок 58 На графике ниже показано моделируемое распределение синим цветом и биномиальное распределение — красным. Вывод: биномиальное распределение — достаточно хорошее приближение к реальности. Поэтому вместо того, чтобы тратить время на подбрасывание монеты и записывать результаты, мы можем просто использовать биномиальное распределение! Задание. Стрелок производит 4 выстрела по мишени. Вероятность попадания в мишень при каждом выстреле равна 0,3. За каждое попадание стрелку засчитывается 10 очков. Найти закон распределения числа засчитанных очков. Введем сначала дискретную случайную величину X = (Количество попаданий). Она распределена по биномиальному закону с параметрами n = 4 (число выстрелов), p = 0,3 (вероятность попадания при одном выстреле) и может принимать значения 0, 1, 2, 3 и 4. 59 0 4 0 ( 0) 0, 7 0, 3 0, 2401 4 1 3 1 ( 1) 0, 7 0, 3 0, 4116 4 2 2 2 ( 2) 0, 7 0, 3 0, 2646 4 3 1 3 ( 3) 0, 7 0, 3 0, 0756 4 4 0 4 ( 4) 0, 7 0, 3 0, 0081 4 P X C P X C P X C P X C P X C = = = = = = = = = = = = = = = Закон распределения X имеет вид: X i 0 1 2 3 4 P(Y=i) 0,2401 0,4116 0,2646 0,0756 0,0081 Код Python # Моделирование биномиального распределения import numpy as np import matplotlib.pyplot as plt from scipy.stats import binom import seaborn as sns # Входные данные # Количество стрелков trials = 1 # Количество попаданий n = 4 # Вероятность ответа ДА на вопрос p = 0.3 # Основная функция моделирования # heads - это список удачных исходов def run_binom(trials, n, p): heads = [] for i in range(trials): 60 tosses = [np.random.random() for i in range(n)] #Данная функция создает массив указанной формы и заполняет его случайными числами с плавающей точкой из непрерывного равномерного распределения в интервале [0, 1). heads.append(len([i for i in tosses if i>=0.7])) return heads # Выполняем функцию. heads = run_binom(trials, n, p) # Строим гистограмму ax = plt.subplots(figsize=(14,7))#задаем размеры ax = sns.distplot(heads, bins=1, label='simulationresults')#bins - ширина столбцов гистограм ax.set_xlabel("Количество попаданий",fontsize=16) ax.set_ylabel("ЧАСТОТА",fontsize=16) # Plot the actual binomial distribution as a sanity check from scipy.stats #import binom #Рисуем теоретические значения биномиального распределения используя #библиотеку scipy.stats x = range(0,11) ax.plot(x, binom.pmf(x, n, p), 'ro', label='actual binomial distribution') #добавляем красные(r) круги(o) биноминальное распределение на рисунок ax.vlines(x, 0, binom.pmf(x, n, p), colors='r', lw=5, alpha=0.5) #добавляем красные линиии биноминальное распределение на рисунок plt.legend() #отображаем легенду plt.show() #отображаем рисунок 61 На графике ниже показано моделируемое распределение синим цветом и биномиальное распределение — красным. Задача # Моделирование биномиального распределения import numpy as np import matplotlib.pyplot as plt from scipy.stats import binom import seaborn as sns # Входные данные 62 tosses = [np.random.random() for i in range(n)] #Данная функция создает массив указанной формы и заполняет его случайными числами с плавающей точкой из непрерывного равномерного распределения в интервале [0, 1). heads.append(len([i for i in tosses if i>=0.8])) return heads # Выполняем функцию. heads = run_binom(trials, n, p) # Строим гистограмму ax = plt.subplots(figsize=(14,7))#задаем размеры ax = sns.distplot(heads, bins=1, label='simulationresults')#bins - ширина столбцов гистограм ax.set_xlabel("Количество обанкротившихся банка ",fontsize=16) ax.set_ylabel("ЧАСТОТА",fontsize=16) # Plot the actual binomial distribution as a sanity check from scipy.stats #import binom #Рисуем теоретические значения биномиального распределения используя #библиотеку scipy.stats x = range(0,11) 63 64 В городе 4 коммерческих банка. У каждого риск банкротства в течение года составляет 20%. Составьте ряд распределения числа банков, которые могут обанкротиться в течение следующего года. РЕШЕНИЕ. Пусть X – дискретная случайная величина, равная числу банков, которые могут обанкротиться в течение следующего года. Она может принимать значения 0, 1, 2, 3 и 4. X распределена по биномиальному закону с параметрами n = 4 , p = 20% = 0, 2 0 4 0 ( 0) 0,8 0, 2 0, 4096 4 1 3 1 ( 1) 0,8 0, 2 0, 4096 4 2 2 2 ( 2) 0,8 0, 2 0,1536 4 3 1 3 ( 3) 0,8 0, 2 0, 0256 4 4 0 4 ( 4) 0,8 0, 2 0, 0016 4 P X C P X C P X C P X C P X C = = = = = = = = = = = = = = = Закон распределения X имеет вид: X i 0 1 2 3 4 P(Y=i) 0,4096 0,4096 0,1536 0,0256 0,0016 Вывод: В ходе данной лабораторной работы мы изучили, что такое биноминальное распределение, а также смоделировали его в Python, решив две задачи на данную тему и вывив на экран гистограммы, характеризующие биноминальное распределение, при этом для построения графика биноминального распределения на гистограмме, мы воспользовались библиотекой scipy.stats, а именно функцией binom. 65 Лабораторная работа №15.Распределе́ние Пуассо́на Распределе́ние Пуассо́на — распределение дискретного типа случайной величины, представляющей собой число событий, произошедших за фиксированное время, при условии, что данные события происходят с некоторой фиксированной средней интенсивностью и независимо друг от друга. На практике в случае, когда n (количество испытаний) велико, а p (вероятность события) мало (обычно p <0.1; n <10) вместо формулы Бернулли применяют приближенную формулу Пуассона где λ - означает среднее значение наступления k событий при n испытаниях (математическое ожидание количества событий). Вероятность Рn(k) при данном n сначала увеличивается при увеличении k от 0 до некоторого значения m0, а затем уменьшается при изменении k от m0 до n. Поэтому k0, называют наивероятнейшим числом наступлений успеха в опытах. Примеры решения задач в Python 1 Пример. Завод отправил в торговую сеть 500 изделий. Вероятность повреждения изделия в пути равна 0,003. Найти вероятность того, что при транспортировке будет повреждено: а) ни одного изделия, б) ровно три изделия, в) более трех изделий. Решение: По формуле Пуассона при n = 500, p = 0.003, λ = np = 500*0,003 = 1,5 При а) k=0; б) k=3; в) k>3 ! k P e k k − Среднеожидаемое количество повреждённых изделий: 500 0,003 1,5 np = = = а) k=0 0 1,5 1,5 0 1,5 0, 2231 0! P e e − − = 66 б) k=3 3 1,5 1,5 3 1,5 0,1255 3! P e e − − = в) k>3 0 1 2 3 1,5 1,5 1,5 1,5 0 1 2 3 1,5 1,5 1,5 1,5 ( 3) 0,9344 0! 1! 2! 3! ( 3) 1 ( 3) 1 0,9344 0, 0656 P k P P P P e e e e P k P k − − − − + + + = + + + = − − = Код в Python: import matplotlib.pyplot as plt from matplotlib import mlab import numpy as np import pylab def F (n): f=1 for i in range(n): f=f*(i+1) return f n = float(input("Введите, сколько всего изделий: ")) p = float(input("Введите вероятность повреждения: ")) λ=n*p rlist=[] xmax = 3.0 dx = 1 for m in range (int(xmax/dx)+1) : pr=λ**m/F(m)*np.exp(-λ) rlist.append(pr) print("p(0) =",rlist[0]) print("p(3) =",rlist[3]) 67 print("p(1) =",rlist[1]) print("p(2) =",rlist[2]) print("Вероятность повреждения более трёх изделий=",1 - (rlist[0] + rlist[3] + rlist[2] + rlist[1])) plt.ylabel('Вероятность') pylab.plot ([0,1],[rlist[0],rlist[1]]) pylab.show() 2 Пример 68 Завод отправил на базу 500 изделий. Вероятность повреждения изделия в пути 0,004. Найти вероятность того, что в пути повреждено меньше трех изделий. Решение: будем рассматривать работу каждого элемента как отдельное испытание. По формуле Пуассона при n = 500, k = 2, p = 0.004, λ = np = 500*0,004 = 2 Обозначим через P500(2) вероятность отказа не менее четырех элементов за год. Переходя к противоположному событию, вычислим P500(2) как: Код в Python будет выглядеть так: 69 import matplotlib.pyplot as plt from matplotlib import mlab import numpy as np import pylab def F (n): f=1 for i in range(n): f=f*(i+1) return f n = float(input("Введите, сколько всего предметов: ")) p = float(input("Введите вероятность поломки: ")) λ=n*p rlist=[] xmax = 4.0 dx = 1 for m in range (int(xmax/dx)+1) : pr=λ**m/F(m)*np.exp(-λ) rlist.append(pr) print("p(0) =",rlist[0]) print("p(1) =",rlist[1]) print("p(2) =",rlist[2]) print("Вероятность того, что приедет две разбитые бутылки =",(rlist[0] + rlist[1] + rlist[2])) plt.ylabel('Вероятность') pylab.plot ([0,1,2],[rlist[0],rlist[1],rlist[2]]) pylab.show() |