С.Н. БОЗИЕВ
MATLAB 2006a в примерах
Москва 2006
УДК 519.2 + 622.276.031:53(075.8) Бозиев С.Н. MATLAB 2006a в примерах. РГУ нефти и газа им. И.М. Губкина, 2006 – 150 с. Книга основана на примерах, рассматриваемых в рамках версии MATLAB 2006a. Она написана в режиме M-книги. Рекомендуется учащимся и работникам высших технических учебных заведений.
Рецензенты: В.Б. Нагаев, к.ф.-м.н., профессор, заведующий кафедрой физики РГУ нефти и газа им. И.М. Губкина, действительный член РАЕН А.И. Ермолаев, д.т.н., профессор, заведующий кафедрой разработки газовых и газоконденсатных месторождений РГУ нефти и газа им. И.М. Губкина
© РГУ нефти и газа им. И.М. Губкина, 2006 © С.Н. Бозиев, 2006
СОДЕРЖАНИЕ
Введение…..……………………………………………………. ….. 5 Глава 1 1.1. Рабочее окно ……………………………………………………. 7 1.2. MATLAB как научный калькулятор ………………………….. 8 1.3. Использование переменных …………………………………... 10 1.4. Векторы ………………………………………………………… 11 1.5. Построение графиков …………………………………………. 16 1.6. Трехмерные графики ………………………………………….. 34 1.7. Расчет и построение графиков функций ……………………... 37 1.8. Воспроизведение и анализ распределений …………………... 43 1.9. Чтение и запись файлов ……………………………………….. 54 Литература к первой главе ……………………………………. 77 Глава 2 2.1. Проницаемость горных пород и ее распределение ………….. 79 2.2. Графическое представление данных и их характеристики ….. 82 2.3. Вычисление погрешности средней величины………….. 87 2.4. Распределение Стьюдента ……………………………………... 93 2.5. Вычисление погрешности дисперсии …………………………. 99 2.6. Вычисление статистических ошибок для отдельных ячеек гистограммы….…………………………………………………. 102 2.7. Аппроксимация данных по распределению коэффициента проницаемости логнормальным распределением …………..107 2.8. Сравнение с логнормальным распределением по критерию
χ 2 ………………………………………………………………...111 2.9. Критерий Колмогорова – Смирнова …………………………. 122
2 2.10. Сравнение с гамма-распределением по критерию χ …….. 125
2.11. Аппроксимация данных по распределению коэффициента проницаемости полиномом …………………………….……… 129 2.12. Интерполяция кубическим сплайном …………………..... 135 2.13. Метод Монте-Карло …………………………………………... 137 Приложение ………………………………………………………... 141 Биномиальное распределение ……………………………………..... 141 Распределение Пуассона …………………………………………..... 143 Нормальное распределение ………………………………………......145 Литература ко второй главе ……………………………………….... .149
Введение Система MATLAB
(Matrix Laboratory) является продуктом
американской фирмы MathWorks, и создается с 1970 г. Она состоит из большого количества специальных программ, позволяющих решать широкий спектр математических и технических задач из разных областей науки. Главный ее элемент – это ядро системы MATLAB. В дополнение к нему система содержит около 60-ти различных комплектов команд (т.н. "Toolboxes"), соответствующие различным разделам математики, математической физики, проектирования, связи, экономики и т.д. Система постоянно совершенствуется. Новая версия системы выходит примерно каждые год – полтора. Данное пособие выполнено в рамках версии MATLAB R2006a, которая вышла в свет весной 2006 г. Она укомплектованная пакетами Curve Fitting Toolbox, Optimization Toolbox, Partial Differential Equation Toolbox, Statistics Toolbox
и Symbolic Math Toolbox. В нем рассмотрены примеры
составления программ разного уровня сложности, и оно может служить пособием для практических занятий и дополнением к существующим руководствам для пользователей системы (см., например, [1-6]). MATLAB совместима с различными системами и текстовыми редакторами, в том числе, и с Microsoft Word. Он может быть запущен вместе с MATLAB с помощью приложения notebook. В результате
5
программные
файлы
(т.н.
m-файлы),
которые
выполняются
в
директории Work системы, могут быть перенесены в текстовый файл в редакторе Word и, запускаться непосредственно из него, т.е. работа производится в режиме создания т.н. M-книги.
Одним из удобств
работы в режиме M-книги является то, что результат выполнения программы вставляется в текст книги сразу после программы, что позволяет исключить недоразумения, связанные с опечатками в текстах программ. Книга состоит из двух глав. Она основана на семестровом курсе лекций для аспирантов технических факультетов РГУ нефти и газа им. И.М. Губкина. В первой главе приводятся примеры составления программ разного уровня сложности. Вторая
глава основана на
примерах статистического анализа конкретного распределения. Она может также послужить введением в теорию ошибок.
6
Глава 1 1. 1. Рабочее окно MATLAB запускается с помощью иконки
(matlab.exe). При
этом появляется рабочее окно системы.
Рис. 1.1. Рабочее окно системы MATLAB.
7
Строка меню (File, Edit, View и т.д.) во многом схожа с аналогичной строкой редактора Microsoft Word. Расположенный ниже ряд иконок также выполняют те же операции, что и в редакторе Word (за исключением 2-х последних). Поэтому, имея навыки работы в Word, достаточно просто ориентироваться в рабочем окне MATLAB. На рис.1.1
в верхнем окне слева приводится содержимое директория
Current Directory. А так все эти папки содержатся в каталоге Work системы. В нижнем окне приводится последовательность выполненных команд. Форму рабочего окна можно менять с помощью меню View. Размеры окон регулируются перетаскиванием границы с помощью мыши. В командном окне после знака ">>" набирается командная строка, которая выполняется после "Enter".
1.2. MATLAB как научный калькулятор MATLAB позволяет создавать программные файлы, аналогичные другим языкам программирования высокого уровня. Наряду с тем, он обладает
свойствами
мощного
программируемого
калькулятора.
Формат числа задается меню File (рис. 1.1) в разделе Preferences с помощью функции Numeric Format. Наиболее часто используемыми из 12-ти возможных являются форматы Short и Long – краткая и длинная форматы чисел. Основные арифметические операции выполняются с помощью традиционных знаков: "+", "-", "*", "/" (деление слева направо), "\" (деление
справа налево), "^" (возведение в степень). Вычисления
выполняются в командном окне после команды "Enter". Результат присваивается параметру "ans". 8
Пример 1.1 ⎛
Вычислим выражение ln ⎜⎜1 + 5 ⎝
lg 2 100 − 0,2π ⎞ ⎟ . Для этого в командном ⎟ 1 + e3 ⎠
окне набирается следующая программа: log(1+5*((log10(100))^2-0.2*pi)/sqrt(1+2.71828^3)) ans = 1.5414 Примечание:
Исходная формула и ответы заключены в прямые
скобки т.к. вычисление производилось в режиме "notebook", когда система Word интегрирована в
MATLAB, и процедуру вычисления
можно запустить прямо в тексте командой
"Evaluate Cell"
в
"Notebook" из строки меню. В режиме калькулятора MATLAB позволяет работать как с элементарными, так и с тригонометрическими функциями. Пример 1.2 Вычислим sin(π / 3) : sin(pi/3) ans = 0.8660 Пример 1.3 Изменим формат числа: format long sin(pi/3) ans = 0.86602540378444 Пример 1.4 Число π :
9
pi ans = 3.14159265358979
1.3. Использование переменных Пример 1.5 Вычислим массу жидкости с плотностью 800кг / м3 и объемом V = 0,01м3 как m = ρ ⋅ V :
format short rho=800 V=0.01 m=rho*V rho =
800 V =
0.0100
m = 8 Примечание: Видно, что в ответе значения плотности и дублируются.
Чтобы
объем
информация не дублировалась нужно
завершить строку символом ";". Т.к. в MATLAB символ ";" означает конец строки, то предыдущую программу можно записать в одну строчку: Пример 1.6 rho=800; V=0.01; m=rho*V m = 8 Количество переменных не ограничено, что позволяет считать более сложные формулы. Отметим, что для воспроизведения в командном
10
окне уже выполненных команд удобно воспользоваться клавишей "↑" ("NumPad 8"). Каждое ее нажатие воспроизводит строки в обратном порядке, и их можно редактировать. Последовательность выполненных программ также выводится в окне Command History на рис.1.1.
1.4. Векторы Компоненты вектора могут быть заданы как элементы матрицы, разделенные либо пробелом, либо запятым, и заключенные в квадратные скобки. Пример 1.7 Вектор скорости в декартовой системе координат имеет вид →
→
→
→
→
→
v = vx i + vy j + vz k . →
Пусть
заданы
2
→
→
v 2 = 4 i + 5 j + 6 k . Вычислим вектор
вектора
→
→
→
→
→
v1 = 2 i + 3 j + 4 k ,
→
u = v1+ v 2 .
v1=[2 3 4]; v2=[4 5 6 ]; u=v1+v2 u = 6
8
10 →
→
→
→
Мы получили вектор u = 6 i + 8 j + 10 k . Разность векторов вычисляется аналогично. Пример 1.8 →
→
Вычислим скалярное произведение c = v 1 ⋅ v 2 из предыдущего примера. v1*v2 ??? Error using ==> mtimes Inner matrix dimensions must agree.
Примечание: Команда не выполнена.
Система выдает ошибку о
несогласованности размерностей перемножаемых матриц, т.к. правилу умножения матриц
элементы строки первой
по
матрицы
11
умножаются
на
элементы
первого столбца
второй,
и
их
сумма присваивается первому элементу результирующей матрицы и т.д. Для выполнения этого правила нужно транспонировать вторую матрицу. Операция
транспонирования
выполняется с помощью
символа " ' ": v1*v2' ans = 47 Ответ очевиден: с = 2 ⋅ 4 + 3 ⋅ 5 + 4 ⋅ 6 = 47 . Пример 1.9 Вычислим модуль вектора скорости v1 из примера 1.7 по формуле →
→ →
| v |= v1 v 2 :
sqrt(v1*v1') ans = 5.3852 Аналогичный результат получается с помощью команды norm вычисления нормы вектора: norm(v1) ans = 5.3852 r Ответ легко проверить | v1 |= 2 2 + 3 2 + 4 2 = 29 ≈ 5,3852 . Матрицы можно также перемножать поэлементно. Пример 1.10 Вычислим результат поэлементного умножения, деления, сложения и вычитания матриц a и b. Точка после переменной является признаком поэлементного умножения. a=[1 2 3]; b=[2 2 3]; c=a.*b 12
d=a./b e=a-b f=a+b c = 2
4
9
d = 0.5000
1.0000
1.0000
e = -1
0
0
f = 3 4 Примечание: При
6 необходимости
можно
вывести
на
экран
переменные, которые уже заданы. Для этого используется команда "whos". Приводятся переменные, их размерности и занимаемый ими объем памяти: whos Name Class
Size
Bytes
V double a double ans double b double c double m double rho double u double
1x1
8
1x3
24
1x1
8
1x3
24
1x3
24
1x1
8
1x1
8
1x3
24
array array array array array array array array
13
v1 double array v2 double array xqxqxq1234 logical array xqxqxq1235 char array
1x3
24
1x3
24
1x1
1
1x3
6
Grand total is 26 elements using 183 bytes Количество
команд
и
операций,
выполняемых
в
режиме
калькулятора достаточно велико. Рассмотрим некоторые из них. Пример 1.11 Пусть известны округленные среднесуточные значения температуры воздуха в течение недели (в °С). Эти данные заданы в виде матрицы t. Определим минимальную температуру: t=[-1 0 2 3 -5 -7 -4]; min(t) ans = -7 Определим максимальную температуру: max(t) ans = 3 Определим среднюю температуру: mean(t) ans = -1.7143 Пример 1.12 Проверим
полученное
значение
средней
температуры,
воспользовавшись определением средней величины – отношение суммы элементов матрицы к их числу: 14
sum(t)/length(t) ans = -1.7143 Пример 1.13 Расположим элементы матрицы t по возрастанию или убыванию: sort(t) ans = -7
-5
-4
-1
0
2
3
-2
0
1
4
5
7
sort(-t) ans = -3
Рассмотрим пример матриц большего ранга. В MATLAB строки матрицы можно записать в стандартном виде строк и столбцов, или в одну длинную строку, разделив строки знаком ";". Пример 1.14 Найдем корни системы линейных алгебраических уравнений: 2 x1 + 3 x 2 + 4 x3 = 14 2 x1 − x 2 − 5 x3 = −15 x1 − 2 x 2 − 3 x3 = −4
a=[2 3 4; 2 -1 -5; 1 -2 -3]; b=[14; -15; -4]; x=a\b x = 3 -4 5 При вычислении корней применяется операция обратного деления. Можно проверить, что при вычислении по правилу Крамера ответ тот же. 15
1.5. Построение графиков Рассмотрим пример построения гистограмм. Только в данном случае удобнее работать не в режиме калькулятора, а создать программный файл, который называется в MATLAB m-файл. Новый m-файл создается по аналогии с редактором Word посредством первой иконки на панели инструментов рабочего окна системы (рис. 1.1). При этом открывается окно, в котором можно создавать и редактировать программу. Программа запускается иконкой Run или Run and Save. Пример 1.15 Предположим, что охранник фиксирует количество автомобилей, въезжающих во двор университета каждые 10 минут. В результате, за 2,5 часа он набрал статистику по 15-ти десятиминутным интервалам. Представим данные в виде строки матрицы [1 1 2 1 2 3 1 2 3 4 1 2 3 4 5] (через пробел). Построим распределение по числу машин в виде гистограммы.
Для
этого
воспользуемся
командой
hist.
Текст
программы имеет вид: cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5]; hist(cars,5), grid; xlabel('Number of cars'); ylabel('Number of intervals'); title('Cars in yard', 'FontSize',14);
16
Cars in yard
5 4.5 4
Number of intervals
3.5 3 2.5 2 1.5 1 0.5 0 0.5
1
1.5
2
2.5 3 Number of cars
3.5
4
4.5
5
Рис. 1.2. Распределение по числу машин в 15-ти десятиминутных интервалах. Примечание: Цифра 5 в команде
hist
задает количество
ячеек
гистограммы. Команда grid накладывает сетку на график. Последние 3
строки
программы
(xlabel,
ylabel,
title) подписывают
координатные оси и оглавление рисунка. В команде title задан размер шрифта. Аналогично задается размер xlabel
и ylabel.
шрифта
для
команд
Если английский текст заменить русским, то
надписи к рисунку читаться не будут: Пример 1.16 cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5]; hist(cars,5), grid xlabel('Число машин'); ylabel('Число интервалов'); title('Распределение по числу машин', 'FontSize',14);
17
Ðàñïðåäåëåíèå ïî ÷èñëó ìàøèí
5 4.5 4
×èñëî èíòåðâàëîâ
3.5 3 2.5 2 1.5 1 0.5 0 0.5
1
1.5
2
2.5 3 ×èñëî ìàøèí
3.5
4
4.5
5
Рис. 1.3. Кириллица на графике не воспроизводится.
Для того чтобы русский текст воспроизводился необходимо задать код шрифта командой set. Команда gca позволяет выбрать шрифт для координатных осей. Пример 1.17 %% Исходные данные cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5]; hist(cars,5), grid %% Подписи к рисунку set(gca,'FontName','Arial Cyr'); xlabel('Число машин'); ylabel('Число интервалов'); title('Распределение по числу машин','FontSize',14);
18
Распределение по числу машин
5 4.5 4
Число интервалов
3.5 3 2.5 2 1.5 1 0.5 0 0.5
1
1.5
2
2.5 3 Число машин
3.5
4
4.5
5
Рис. 1.4. Программа корректно воспроизводит русский язык. Примечание: В режиме M-книги не реализуется. Текст, набранный после одного знака "%", не выполняется, и может послужить комментарием к строке или фрагменту программы. Опция "%%" введена в версии MATLAB 2006a, и позволяет, как комментировать, так и окрашивать фрагменты программы в разные цвета. На рис. 1.2-1.4 числовая разметка по оси x несколько смещена по отношению к центрам соответствующих ячеек. Откорректировать разметку можно заданием центра ячеек матрицей centers (рис. 1.5): Пример 1.18 cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5]; centers=[1 2 3 4 5]; hist(cars,centers), grid set(gca,'FontName','Arial Cyr'); xlabel('Число машин'); ylabel('Число интервалов'); title('Распределение по числу машин','FontSize',14);
19
Распределение по числу машин
5 4.5 4
Число интервалов
3.5 3 2.5 2 1.5 1 0.5 0
1
2
3 Число машин
4
5
Рис. 1.5. Значения по оси координат задаются по середине ячейки.
Ячейки
гистограммы
можно
объединять.
Приведем
пример
распределения по трем ячейкам на рис. 1.6.
Пример 1.19 cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5]; hist(cars,3), grid set(gca,'FontName','Arial Cyr'); xlabel('Число машин'); ylabel('Число интервалов'); title('Распределение по числу машин','FontSize',14);
20
Распределение по числу машин
9 8
Число интервалов
7 6 5 4 3 2 1 0 0.5
1
1.5
2
2.5 3 Число машин
3.5
4
4.5
5
Рис. 1.6. Укрупнение ячеек. Можно менять цвета колонок гистограмм и их границ. Для этого используются команды findobj и set (третья и четвертая строчки программы). Результат приводится на рис. 1.7. Пример 1.20 cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5]; hist(cars,5), grid h=findobj(gca,'Type','patch'); set(h,'FaceColor','r','EdgeColor','b'); set(gca,'FontName','Arial Cyr'); xlabel('Число машин'); ylabel('Число интервалов'); title('Распределение по числу машин','FontSize',14);
21
Распределение по числу машин
5 4.5 4
Число интервалов
3.5 3 2.5 2 1.5 1 0.5 0 0.5
1
1.5
2
2.5 3 Число машин
3.5
4
4.5
5
Рис. 1.7. Колонки гистограммы красные, их окантовка – синяя. Мы рассмотрели возможность построения гистограмм с помощью команды hist, но в MATLAB имеются и другие возможности построения гистограмм, в частности, с помощью команды bar. Заменим в предыдущем примере hist на bar. Пример 1.21 cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5]; bar(cars), grid %h=findobj(gca,'Type','patch'); %set(h,'FaceColor','r','EdgeColor','b'); set(gca,'FontName','Arial Cyr'); xlabel('Число машин'); ylabel('Число интервалов'); title('Распределение по числу машин','FontSize',14); 22
Распределение по числу машин
5 4.5 4
Число интервалов
3.5 3 2.5 2 1.5 1 0.5 0
1
2
3
4
5
6
7 8 9 10 11 12 13 14 15 Число машин
Рис. 1.8. Распределение по числу машин за последующие 10-ти минутные интервалы. Из рис. 1.8 следует количество машин, въезжающих во двор каждые 10 минут последовательно. Рассмотрим пример воспроизведения результатов на рис. 1.5 с помощью команды bar. Для этого нужно предварительно обработать вектор cars, и задать координаты x,y (рис. 1.9): Пример 1.22 x=1:5; y=[5 4 3 2 1]; bar(x,y), grid set(gca,'FontName','Arial Cyr'); xlabel('Число машин'); ylabel('Число интервалов'); title('Распределение по числу машин','FontSize',14);
23
Распределение по числу машин
5 4.5 4
Число интервалов
3.5 3 2.5 2 1.5 1 0.5 0
1
2
3 Число машин
4
5
Рис. 1.9. Распределение по числу машин в 15-ти десятиминутных интервалах. Примечание: Величина x принимает 5 значений с шагом 1, принимаемым по умолчанию. Если, например, x=1:0.5:5, то шаг равен 0,5, и мы задаем 9 значений переменной x. Ширину колонок на рис. 1.9 можно менять, задавая в команде bar соответствующий параметр – 0,2 в нашем случае (рис. 1.10): Пример 1.23 x=1:5; y=[5 4 3 2 1]; bar(x,y,0.2), grid set(gca,'FontName','Arial Cyr'); xlabel('Число машин'); ylabel('Число интервалов'); title('Распределение по числу машин','FontSize',14);
24
Распределение по числу машин
5 4.5 4
Число интервалов
3.5 3 2.5 2 1.5 1 0.5 0
1
2
3 Число машин
4
5
Рис. 1.10. То же, что на рис. 1.9, но ширина колонок другая. Рассмотрим пример построения нескольких гистограмм на одном рисунке. Пример 1.24 Предположим, что имеются данные по машинам, въезжающим во двор за три дня. Их можно представить в виде матрицы из трех строк, каждая из которых содержит данные за 2,5 часа наблюдения: cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2]; bar(cars), grid set(gca,'FontName','Arial Cyr'); xlabel('Число машин'); ylabel('Число интервалов');
25
5 4.5 4
Число интервалов
3.5 3 2.5 2 1.5 1 0.5 0
1
2 Число машин
3
Рис. 1.11. Данные за три 2,5 часовых сеанса наблюдения по числу въезжающих во двор автомобилей. Переливание в цвете производится автоматически, а их последовательность соответствует цветам радуги. Данные на рис. 1.11 можно представить иначе с помощью команд barh (рис. 1.12) и stack (рис. 1.13): Пример 1.25 cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2]; barh(cars), grid set(gca,'FontName','Arial Cyr'); xlabel('Число машин'); ylabel('Число интервалов');
26
Число интервалов
3
2
1
0
1
2 3 Число машин
4
5
Рис. 12. Горизонтальное представление данных на рис. 1.11.
Пример 1.26 cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2]; bar(cars,'stack'), grid; set(gca,'FontName','Arial Cyr'); xlabel('Число машин'); ylabel('Число интервалов');
27
40 35
Число интервалов
30 25 20 15 10 5 0
1
2 Число машин
3
Рис. 1.13. То же, что и на рис. 1.11. Толщина полоски пропорциональна числу машин.
Представим результаты на рис. 1.11, 1.12 в виде трехмерного графика с помощью команды bar3: Пример 1.27 cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2]; bar3(cars), grid set(gca,'FontName','Arial Cyr'); xlabel('Число машин'); ylabel('Дни'); zlabel('Число интервалов');
28
Рис. 1.14. Представление данных на рис. 1.11-1.13 в виде трехмерного графика.
Результаты, приведенные на рис. 1.11-1.14, можно скомпоновать в один рисунок с помощью команды subplot, которая содержит три параметра. Первые два задают матрицу расположения рисунков, третий – номер конкретного рисунка (рис. 1.15): Пример 1.28 cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2]; subplot(2,2,1); bar(cars); set(gca,'FontName','Arial Cyr'); title('Рис.11'); subplot(2,2,2); barh(cars); set(gca,'FontName','Arial Cyr'); title('Рис.12');
29
subplot(2,2,3); bar(cars,'stack');set(gca,'FontName','Arial Cyr'); title('Рис.13'); subplot(2,2,4); bar3(cars); set(gca,'FontName','Arial Cyr'); title('Рис.14');
Рис. 1.15. Представление данных на рис. 1.11-1.14 в одном окне. Обратимся теперь к исходной матрице cars, и вычислим сумму элементов каждой строки. Получим количество машин, в трех сеансах наблюдения – 35, 35 и 36 соответственно (см. рис. 1.13). Представим в виде круговой диаграммы долю машин за сеанс. Она строится с помощью команды pie ( рис. 1.14): Пример 1.29 cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2]; sm=sum(cars'); pie(sm)
30
33%
34%
33%
Рис. 1.16. Представление данных командой pie. На рис. 1.17. приводится пример выделения сектора "пирога" с помощью команды explode: Пример 1.30 clear cars=[1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2]; sm=sum(cars'); explode=[0
1
0];
%
Выделяется
сектор,
которому
присвоено значение "1" pie(sm,explode)
31
33%
34%
33%
Рис. 1.17. Выделение сектора с помощью команды explode. Рассмотрим пример формирования многогранников с помощью функции patch. Пример 1.31 Программа рисует шестигранник (рис. 1.18). Меняя шаг по переменной t можно нарисовать другие многогранники: % Полный круг делится на 6 равных частей t=0:2*pi/6:2*pi; x=sin(t); y=cos(t); h=patch(x,y,[0 0 1]); axis equal
32
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1
-1
-0.5
0
0.5
1
Рис. 1.18. Шестигранник. Примечание: Числа в прямых скобках в команде patch принимают значения 0 или 1, и определяют цвет фигуры. Приведем пример построения на экране красного треугольника с катетами, лежащими на осях координат. Для этого нужно задать массивы x(i) и y(i) ( i=1,2,3), элементы которых задают координаты трех точек на плоскости. Пример 1.32 x=[0 1 0]; y=[0 0 1]; patch(x,y,'r')
33
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Рис. 1.19. Красный треугольник.
1.6. Трехмерные графики MATLAB дает широкие возможности построения трехмерных графиков. Рассмотрим основные команды – mesh, surf, plot3, contour3. Приведем их краткие характеристики: mesh – дает трехмерное изображение в виде сетки; surf – сегменты сетки окрашиваются в разные цвета; plot3 – через точки с координатами x, y, z проводятся линии; contour3 – через точки с координатами x и y проводит линии с постоянным значением z или т.н. изолинии. Каждая из приведенных команд имеет свои модификации, с которыми можно познакомиться в разделе Help системы MATLAB. Пример 1.33 Построим график функции z = x 2 + y 2 для 0 ≤ x ≤ 10 и 0 ≤ y ≤ 10 (рис. 1.20). Для этого плоскость покрывается координатной сеткой, и значение функции определяется в ее узлах. Плотность сетки
34
определяется шагом разбиения координатных осей, равным 2 в рассматриваемом случае. Сама сетка задается командой meshgrid. [X, Y] = meshgrid(0:2:10, 0:2:10); Z=3*X.^2+Y.^2; subplot(2,2,1); mesh(X, Y, Z); title ('mesh'); xlabel('x'); ylabel('y') subplot(2,2,2); plot3(X, Y, Z); title ('plot3'); xlabel('x'); ylabel('y') subplot(2,2,3); surf(X, Y, Z); title ('surf'); xlabel('x'); ylabel('y') subplot(2,2,4); contour3(X, Y, Z); title ('contour'); xlabel('x'); ylabel('y')
mesh
plot3
400
400
200
200
0 10 5 y
0 0
5
10
0 10 5 y
x
surf 400
200
200
0 10 5 0 0
10
x
contour
400
y
0 0
5
5 x
10
0 10 5 y
0 0
5
10
x
Рис. 1.20. Примеры построения трехмерных графиков.
35
Рассмотрим пример построения куба с помощью команды patch. Пример 1.34 Для построения куба нужно задать две матрицы - матрицу координат вершин и матрицу вершин, образующих соответствующие грани (рис. 1.21): % Координаты вершин v=[0 0 0; 1 0 0; 1 0 1; 0 0 1; 0 1 0; 1 1 0; 0 1 1]; % Матрица вершин, образующая соответствующие f=[1 2 3 4; 1 2 6 5; 2 3 7 6; 1 4 8 5; 3 4 8 7 8]; patch('Vertices', v, 'Faces',f, 'FaceColor', 0]) axis equal view(3)
1 1 1; грани 7; 5 6 [1 1
1 0.8 0.6 0.4 0.2 0 1
1 0.5
0.5 0
0
Рис. 1.21. Желтый куб.
36
1.7. Расчет и построение графиков функций Рассмотрим пример построения графиков непрерывных функций на примере распределения Максвелла молекул идеального газа по скоростям. Функция плотности вероятности этого распределения имеет вид 3
⎛ mv 2 ⎞ 4 ⎛ m ⎞2 2 ⎟⎟ , f ( v) = ⎜ ⎟ v ⋅ exp⎜⎜ − π ⎝ 2kT ⎠ ⎝ 2kT ⎠
где v – скорость частицы газа, m – ее масса, T – температура газа, k = 1,38 ⋅ 10 − 23
Дж - постоянная Больцмана. Функция f ( v ) К
является
∞
нормированной: ∫ f ( v ) dv = 1 . 0
Пример 1.35 Построим график функции f ( v ) для газа, состоящего из молекул водорода H 2 с m = 3,32 ⋅ 10 −27 кг при T = 350 K . Для этого используется команда plot, команда grid накладывает сетку на график. % Распределение Максвела молекул по скоростям m=3.32e-27; k=1.38e-23; T=250; % Задаются количество шагов и шаг по оси ординат n=2500; step=2; % Начальные значения скорости и функции распределения v(1)=0; f(1)=0; a=m/(2*k*T); b=4/sqrt(pi); % В цикле создатся массивы скорости и функции распределения for i=2:n v(i)=v(i-1)+step;
37
f(i)=b*a^1.5*v(i)^2*exp(-a*v(i)^2); end plot(v,f), grid set(gca,'FontName','Arial Cyr'); title('Распределение Максвелла','FontSize',14) xlabel('Скорость'); ylabel('Плотность вероятности'); v1=sqrt(8*k*T/pi/m) v2=sum(v.*f)/sum(f) sm=sum(f*step) v1 = 1.6267e+003 v2 = 1.6266e+003 sm = 1.0000
6
x 10
Распределение Максвелла
-4
Плотность вероятности
5
4
3
2
1
0
0
500
1000
1500
2000
2500 Скорость
3000
3500
4000
4500
5000
Рис. 1.22. Распределение Максвелла для молекул водорода.
38
Наряду с графиком функции приводятся результаты расчета трех величин: v1 – средней скорости частиц газа, вычисленной по формуле v =
8kT ; v 2 – та же величина, но определенная путем усреднения πm
скорости
по
расчетной
кривой;
sm
–
площадь
под
кривой
распределения, которая близка к единице. Видно незначительное отличие скоростей v1 и v 2 . При формате Format long величина sm будет отлична от единицы, что связано с погрешностью численных расчетов. Для увеличения точности расчетов нужно увеличить число шагов n и уменьшить их длину step. Примечание: В этой программе используется операция цикла for i=2:n … end Т.е. командные строки, содержащиеся между указанными строками, будут выполнены циклически для
переменной i, меняющейся в
указанных пределах с шагом 1 по умолчанию. Пример 1.36 Построим на одном графике распределение Максвелла для молекул водорода и двух значений температур (300 и 500 K). % Распределение Максвела молекул по скоростям m=3.32e-27; k=1.38e-23; T1=300; T2=500; % Задаются количество шагов и шаг по оси ординат n=3000; step=2; % Начальные значения скорости и функции распределения v(1)=0; f1(1)=0; f2(1)=0; 39
% В цикле создаются массивы скорости и функции распределения for i=2:n v(i)=v(i-1)+step; f1(i)=4/sqrt(pi)*(m/(2*k*T1))^1.5*v(i)^2*exp(m*v(i)^2/(2*k*T1)); f2(i)=4/sqrt(pi)*(m/(2*k*T2))^1.5*v(i)^2*exp(m*v(i)^2/(2*k*T2)); end plot(v,f1,v,f2), grid set(gca,'FontName','Arial Cyr'); title('Распределение Максвелла','FontSize',14) xlabel('Скорость'); ylabel('Плотность вероятности'); hgt=gtext('T=300K'); hgt=gtext('T=500K'); 6
x 10
Распределение Максвелла
-4
5
Плотность вероятности
T=300K
4
3
T=500K
2
1
0
0
1000
2000
3000 Скорость
4000
5000
6000
Рис. 1.23. Распределение Максвелла для молекул водорода. Примечание: Надписи на двумерных графиках делаются с помощью команды gtext.
Нужно указать курсором на место в основном
рисунке. Результат передается на график в тексте m-книги.
40
Распределения на рис. 1.23 отвечают двум значениям температур. По существу они получаются как линии постоянной температуры трехмерного графика зависимости f ( v , T ) . В следующем примере приводятся
зависимости f ( v , T ) для молекул водорода в широком
интервале скоростей и температур: Пример 1.37 m=3.32e-27; k=1.38e-23; p=sqrt(pi); a=4/p; b=m/2/k; [v, t] = meshgrid(30:30:3000, 203:3:500); z3=v.^2; z4=t.^(-1); z1=log(a*b^1.5*z4.^1.5); z2=log(z3); z5=b*z3.*z4; z6=z1+z2-z5; % Исходная фунция логарифмируется, а затем экспонируется z=exp(z6); mesh(v, t, z) set(gca,'FontName','Arial Cyr'); title('Распределение Максвелла','FontSize',14) xlabel('Скорсть (м/с)'); ylabel('T(K)')
Рис. 1.24. Распределение Максвелла для молекул водорода.
41
Пример 1.38 Построим на одном графике трехмерные распределения для водорода и кислорода (рис. 1.25): clear; k=1.38e-23; p=sqrt(pi); a=4/p; % Задается координатная сетка, в узлах которой опредеяется значение функции [v, t] = meshgrid(30:30:3000, 203:3:500); for i=1:2 if i==1; m=3.32e-27; end ; if i==2; m=8*3.32e-27; end ; b=m/2/k; z3=v.^2; z4=t.^(-1); z1=log(a*b^1.5*z4.^1.5); z2=log(z3); z5=b*z3.*z4; z6=z1+z2-z5; z=exp(z6); mesh(v, t, z); hold on; mesh(v, t, z) end set(gca,'FontName','Arial Cyr'); title('Распределение Максвелла','FontSize',14) xlabel('Скорсть (м/с)'); ylabel('T(K)') % Надписи к поверхностям на рисунке text(400,350,1.55e-3,'O_2') text(300,100,1.3e-3,'H_2')
Рис. 1.25. Распределение Максвелла для молекул кислорода и водорода. 42
Примечание: Команда text позволяет подписывать как двумерные, так и трехмерные графики. Числа соответствуют координатам. Команда hold on "удерживает" первую зависимость при построении второй.
1.8. Воспроизведение и анализ распределений На
примере
распределения
Максвелла
рассмотрим
пример
случайной выборки скоростей заданного числа частиц методом МонтеКарло. Напомним сущность метода. Исходная функция f (v ) , по ∞
которой ведется розыгрыш, нормированна, т.е. ∫ f (v )dv = 1 . Случайная 0
выборка производится с помощью команды rand, которая возвращает равновероятно случайные числа в пределах 0 ≤ ξ ≤ 1 . Следовательно, разыгрывая число ξ , мы получаем случайное значение площади. Скорость v , соответствующая значению ξ , определяется из условия v
∫ f (v )dv = ξ . Повторяя процедуру случайной выборки, можно построить 0
распределение молекул по скоростям для заданного количества частиц. Пример 1.39 Проведем розыгрыш скоростей 500 частиц и построим их распределение. В цикле while … end производится вычисление площади под распределением Максвелла, пока она не превысит случайное число rand. В конце программы командой cftool запускается прикладной пакет Curve fitting toolbox – пакет для аппроксимации расчетного распределения. Результат приводится на рис. 1.26.
43
m=3.32e-27; k=1.38e-23; T=250; % Приращение скорости (шаг) step=1; % Число частиц number=500; % Число ячеек гисограммы np=20; d=m/2/k/T; a=4/sqrt(pi)*d^1.5; x=zeros; hz=zeros; nv=zeros; for mv=1:number y=rand(1); s=0;
v=0;
f=0;
while s
44
Maxwell distribution 80 70
T=250K N=500
60
f(v)
50 40 30 20 10 0
0
500
1000
1500
2000
2500 3000 v(m/s)
3500
4000
4500
5000
Рис. 1.26. Распределение Максвелла для ограниченной выборки.
Примечание: При
повторном запуске программы при тех же
исходных данных реализуется другая выборка скоростей.
Команда
rand(1) генерирует случайную матрицу размерностью 1 × 1 , т.е. число.
45
Команда cftool открывает следующее окно.
Рис. 1.27. Окно запуска пакета аппроксимации данных.
Рис. 1.28. Аппроксимация данных. Нужно выбрать переменные, соответствующие координатным осям.
46
Рис. 1.29. Окно запуска пакета аппроксимации данных. После команды Data (рис. 1.27) производится выбор переменных, которые будут отложены вдоль соответствующих координатных осей (рис. 1.28). В расчетной программе мы присвоили параметру x массив скоростей частиц, а
hz – функцию плотности вероятности,
отвечающую этим скоростям. Эти переменные и присваиваются координатным осям, после чего нужно выполнить команду создания массива данных – Create data set. В результате формируется график, подобный исходной гистограмме на рис. 1.26 (рис. 1.29). После этого командой Fitting на рис. 1.27 открывается окно на рис. 1.30. После команды New fit можно выбрать аппроксимационную зависимость, и применить ее командой Apply. На рис. 1.31 приводится пример фитирования расчетной гистограммы распределением Гаусса, хотя в отличие от него распределение Максвелла является несимметричным.
47
Из рис. 1.32 следует, что мы выбрали самую простую его модификацию. Ниже, на том же рисунке, приводятся коэффициенты a1, b1, c1 распределения. Видно, что параметр b1, имеющий смысл средней величины в распределении Гаусса, близок к значению средней скорости частиц (пример 1.35). После a1, b1, c1 в скобках приводятся пределы, в которых меняются эти величины с доверительной вероятностью 95% (см. главу 2).
48
Рис. 1.30. Выбор аппроксимационной зависимости.
49
Рис. 1.31. Сравнение расчетных точек с распределением Гаусса.
50
Рис. 1.32. Вид аппроксимационной функции, значения коэффициентов a1, b1, c1 и пределы их изменения. В
заключение
данного
параграфа
рассмотрим
несколько
отвлеченный пример, связанный с графическим представлением данных.
51
Пример 1.40 Уравнение ⎛
вид ⎜⎜ p + ⎝
a V μ2
Ван-дер-Ваальса
состояния
реальных
газов
имеет
⎞ ⎟(V μ − b) = RT , где p - давление, V μ - молярный объем, T ⎟ ⎠
абсолютная температура, R - универсальная газовая постоянная, a, b постоянные Ван-дер-Ваальса. Зависимость p( V μ ) имеет три корня. Нарисуем график p( V μ ) для азота. % Универсальная газовая постоянная r=8.31; % Температура t=110; % Шаг step=1.02; % Постоянные Ван-дер-Ваальса для азота a=0.135; b=3.86e-5; v(1)=step*b; p(1)=r*t/(v(1)-b)-a/v(1).^2; for i=2:200 v(i)=v(i-1)*step; p(i)=r*t/(v(i)-b)-a/v(i).^2; end plot(v,p), grid on set(gca,'FontName','Arial Cyr'); title ('Уравнение Ван-дер-Ваальса') xlabel('V (м^3)'); ylabel('P (Па)')
52
12
x 10
8
Уравнение Ван-дер-Ваальса
10
P (Па)
8
6
4
2
0
0
0.5
1
1.5
2
2.5
V (м 3 )
x 10
-3
Рис. 1.33. Зависимость P ( V μ ) в линейном масштабе. Несмотря на то, что выбран сравнительно малый логарифмический шаг по оси абсцисс, график на рис. 1.33 является невыразительным и малоинформативным. Если выполнить эту же программу, но график представить в двойном логарифмическом масштабе, т.е. заменить plot(v,p) на plot(log(v),log(p)) то видно, что одному значению давления могут соответствовать три значения объема: Van-Der-Vaals equation
21 20 19
log(P) (Pa)
18 17 16 15 14 13 12 -10.5
-10
-9.5
-9
-8.5
-8
-7.5
-7
-6.5
-6
log(V)(m3)
Рис. 1.34. Зависимость P ( V μ ) в двойном логарифмическом масштабе. 53
Примечание: Особенности уравнения Ван-дер-Ваальса на рис. 1.33 можно "разглядеть" с помощью опции zoom на основном рисунке или при построении графика для малых объемов.
1.9. Чтение и запись файлов В системе MATLAB символьные данные представлены в виде матриц. На каждый символ отводится по 2 байта в кодировке ASCII (American Standard Code for Information Interchange). Символы распознаются с помощью команды char. Например, код любого символа задается в виде числовых кодов, как правило - бинарных. Соответствие кодов и символов в версии MATLAB 2006a отличается от MATLAB 6.5 в зависимости от языка клавиатуры. Для англоязычной клавиатуры кодировка сохранилась. Пример 1.41 Коды символов, дополненных англоязычным шрифтом, соответствуют числам в пределах 32:127. Выведем эти символы в три строчки по 32 символа в каждой строке. ascii=char(reshape(32:127,32,3)') ascii = !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ `abcdefghijklmnopqrstuvwxyz{|}~ Пример 1.42 Русскоязычному шрифту соответствуют коды в пределах 1040:1119. scii=char(1040:1103) scii = АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрст уфхцчшщъыьэюя 54
Примечание: В версии MATLAB 6.5 представленным символам соответствуют коды 224:255. Однако отметим, что в MATLAB R2006a наблюдается совместимость. Например, программа, которая читает текстовые файлы в версии MATLAB 6.5, читает их также в MATLAB R2006a. Пример 1.43 Рассмотрим программу чтения текстовых файлов и построения распределения по длинам слов. Ниже приводится простой вариант программы, которая является частью более сложной, позволяющей строить частотное распределение букв, двухбуквенных корреляций и т.д. % ПРОГРАММА строит распределение по длинам слов в тексте for kw=1:4 % Открытие и чтение исходного файла if kw==1; fid1 = fopen('work\Лингвистика\Tolstoj_ViMir.m','r'); end if kw==2; fid1 = fopen('work\Лингвистика\Dostoevskiy_BratyaK.m','r') ;end if kw==3; fid1 = fopen('work\Лингвистика\Gogol.m','r'); end if kw==4; fid1 = fopen('work\Лингвистика\Pushkin_KapD.m','r'); end F = fread(fid1'); % Перевод кодов в буквы s = char(F'); s5 = char(F',10); grow=-1;
nml=0; 55
%Минимальное и максимальное значение кодов, и их количество xmin=min(F); xmax=max(F); sz=size(F,1); n=0; n4=0; for i=1:300; sl2(i)=0; s2(i)=0; L4(i)=0; worlen(i)=0; end; len=0; met=0; F(sz+1)=0; % Перебор всех букв (полный цикл) for i=1:sz; x(i)=F(i); y(i)=F(i); % Перевод кодов заглавных букв (А=192, Я=223) к строчным if and (x(i)>191, x(i)<224); x(i)=x(i)+32; end; % Для строчных букв (а=224, я=255) if and (x(i)>223, x(i)<256) s2(x(i))=s2(x(i))+1.; % Общее число букв n=n+1; % Длина слова len=len+1; end if len>0 % После слова пробел - 32 if x(i)==32 % Несколько пробелов подряд if x(i)-x(i-1)< 0; worlen(len)=worlen(len)+1; if len == nml for j=1:nml; L4(x(i-j))=L4(x(i-j))+1; end; n4=n4+nml; end; len=0; end; end;
56
13
% После слова переход на новую строку (Enter) % После слова переход на новую строку (Enter) -
10 % После слова "!" - 33, -"- - 34, "-" - 63 % После слова "," - 44, "." - 46, ":" - 59 zx=x(i); if or (zx==10, zx==13); met=1; end; if or zx==34); met=1; end; if or (zx==44, zx==45); met=1; end; if or zx==58); met=1; end; if or (zx==59, zx==63); met=1; end;
45, "?" 58, ";" (zx==33, (zx==46,
if met == 1; worlen(len)=worlen(len)+1; if len == nml for j=1:nml; L4(x(i-j))=L4(x(i-j))+1; end; n4=n4+nml; end; len=0; end; met=0; end; end; % Распределение по длине слов y=1:20; sumwor=sum(worlen(y)); subplot(2,2,kw) bar(y,worlen(y)),grid; set(gca,'FontName','Arial Cyr'); xlabel('Число букв'); ylabel('Число слов'); if if if if
kw==1; kw==2; kw==3; kw==4;
title('"Война и мир"'); end title('"Братья Карамазовы"'); end title('"Мертвые души"'); end title('"Капитанская дочка"'); end
disp(kw); disp('Всего букв:');disp(n); disp('Всего слов:');disp(sumwor);
57
fclose(fid1); end 1 Всего букв: 35614 Всего слов: 7083 2 Всего букв: 48155 Всего слов: 9896 3 Всего букв: 18368 Всего слов: 3599 4 Всего букв: 31389 Всего слов: 6317 "Война и мир"
500
0
0
200
0
10 20 Число букв
500
0
1000
400
0
1000
0
30
Число слов
Число слов
600
10 20 Число букв "Мертвые души"
"Братья Карамазовы"
1500 Число слов
Число слов
1000
30
10 20 30 Число букв "Капитанская дочка"
500
0
0
10 20 Число букв
30
Рис. 1.35. Распределение по числу слов фиксированной длины в произведениях классиков отечественной литературы.
58
Все произведения на рис. 1.35 написаны в жанре прозы. В них просматривается
закономерность
–
из
гладкого
распределения
выпадают слова, состоящие из 4-х букв. Объяснить эту закономерность сложно, но можно повторить этот опыт для поэтических произведений. На рис. 1.36 приводятся произведения классиков русской поэзии. Представленные гистограммы содержат также слабый намек на дефицит слов из четырех букв в исходных текстах, за исключением последней ("Руслан и Людмила"). На рис. 1.37 приведены результаты анализа авторов, как современных, так и более ранних, которые пользовались в своих произведениях бытовым сленгом (С.И. Барков и, отчасти, И.М. Губерман). Видно, что в распределениях упомянутых авторов частота слов из четырех букв не выпадает из общего распределения, тогда,
как
в
произведениях
В.С. Высоцкого и
Т.С. Шаова наблюдается их недостаток. Хотя, по-видимому, имеет место не только дефицит слов из 4-х букв, но, возможно, и некоторый избыток слов из 5-ти (В.С. Высоцкий) и 6-ти (Т.С. Шаов) букв. В конце программы выводятся общие количества прочитанных слов и букв в текстах.
59
"Е. Онегин"
400 200 0
0
200
0
10 20 Число букв
200 100 0
1000
400
0
300
0
30
Число слов
Число слов
600
10 20 Число букв "Мцыри"
"С. Есенин"
400 Число слов
Число слов
600
30
10 20 30 Число букв "Руслан и Людмила"
500
0
0
10 20 Число букв
30
Рис. 1.36. Распределение по числу слов фиксированной длины в произведениях классиков отечественной литературы.
60
И. Губерман
1200
200
800
Число слов
Число слов
1000
600 400
0
5
10 15 Число букв
20
0
5
10 15 Число букв
20
25
20
25
С. Барков
400
200
300 Число слов
Число слов
100
0
25
Т. Шаов
250
150 100
200 100
50 0
150
50
200 0
В. Высоцкий
250
0
5
10 15 Число букв
20
25
0
0
5
10 15 Число букв
Рис. 1.37. Распределение по числу слов фиксированной длины в текстах известных авторов.
61
Примечание: В примере 1.39 используется команда fopen, которая открывает файл для чтения. Если в ней вместо 'r' задать 'w', то файл будет
открыт
идентификатором
для
записи.
файла.
идентификатора указывают
Параметр Положительные
на
успешное
fid1
является значения
выполнение операции
чтения или записи, в обратном случае ему присваивается "-1". После выполнения операции файл закрывается командой fclose(fid1). После открытия файла, его содержимое читается с помощью команды fread. Приведенный пример 1.43 является частью программы, которая позволяет, наряду с распределением по длинам слов, находить распределение по частоте букв в зависимости от их кодов (рис. 1.38), располагать их в порядке убывания частоты (рис. 1.39), строить двухбуквенные корреляции (рис. 1.40) и т.д.
Рис. 1.38. Частота букв в фрагменте текста "Евгений Онегин". 62
Рис. 1.39. Частота букв, расположенных в порядке убывания (Евгений Онегин, то же, что и на рис. 1.38).
Рис. 1.40. Парные корреляции букв в сочетании с букой "А" (код 224, "Евгений Онегин").
63
Рассмотрим другой пример чтения и записи файлов. Пример 1.44 Следующая программа формирует экзаменационные билеты для студентов методом случайной выборки из отдельных файлов вопросов и задач, которые сформированы в виде М-файлов. Отдельный вопрос или задача записывается в одну строку, которая заканчивается командой окончания абзаца в редакторе LATEX - \par. В рассматриваемом случае формируются билет из трех вопросов и двух задач по пяти темам. По каждой теме созданы два файла – по теории и задачам. Сначала проводится случайная выборка трех файлов задач из пяти. Задачи выбираются из двух файлов по темам, не затронутым при выборке вопросов. Случайная выборка из каждого файла производится без повторений, до тех пор, пока число обращений в файл не будет равно числу вопросов. В случае если число обращений превышает число вопросов в файле, то начинается новый цикл случайной выборки задач из данного файла. Аналогичная процедура выполняется для каждого из десяти файлов. Файлы желательно поместить в директорий, где находится программа розыгрыша. Иначе при чтении нужно указать не только имя файла, но и его адрес.
В
текстовых файлах, содержащих специальную символику (формулы, буквы греческого алфавита и т.д.) при чтении в системе MATLAB распознается лишь часть, написанная в ASCII кодах. Поэтому исходные M-файлы написаны на языке LATEX. При формировании билетов создается файл с расширением .tex. После чего с помощью
64
оболочки WinTeXShell32 он транслируется и создается конечный файл с расширением .dvi. Основные комментарии приводятся в тексте программы. Приведем пример розыгрыша пяти билетов. % Программа розыгрыша экзаменационных вопросов и задач % Каждому преподавателю присваивается свой номер %disp('Бекетов В.Г. - 1') %disp('Любутина Л.Г. - 2') %disp('Серебряков С.Г. - 3') %disp(' ') %disp('--------------------------------- ') %disp(' ') % Запрашивается номер, присвоенный выше %numname=input('ВВЕДИТЕ ВАШ КОД ИЗ СПИСКА: ') numname=1; % Запоминается if numname==1; if numname==2; if numname==3;
имя преподавателя name='Бекетов В.Г.';end; name='Любутина Л.Г.'; end; name='Серебряков С.Г.'; end;
% Выбор уровня сложности задач %disp('СТРУКТУРА БИЛЕТА: 3 ВОПРОСА + 2 ЗАДАЧИ'); %numb0=input('ВВЕДИТЕ КОЛИЧЕСТВО ЭКЗАМЕНАЦИОННЫХ БИЛЕТОВ: ') numb0=5; % Служебная информация для Tex - редактора sl0='\begin{document}'; sl1='\documentclass[12pt,russian]{article}'; sl4='\usepackage[russian]{babel}'; 65
sl2='\usepackage[T2A]{fontenc}'; sl3='\usepackage[cp1251]{inputenc}'; sl5='\parindent=0cm'; sl6='\end{document}'; txhg='\textheight=27.0cm'; txwd='\textwidth=18.0cm'; left='\oddsidemargin=-10mm'; top='\topmargin=-2.5cm'; vsp='\vspace{4.0cm}'; pgst='\pagestyle{empty}'; ct50='\newcounter{ct1}'; % Дата составления билета strdate=date; % Общая информация при оформлении билета a2='\underline{\bf{РГУ нефти и газа им. И.М. Губкина \hspace{2.5cm} Кафедра физики }}'; c1='\underline{{\it Зав. кафедрой В.Б. Нагаев:\hspace{3.0cm} }} '; c10='\underline{{\it Экзаменатор';c2=name; c11='\hspace{3.0cm}}}'; npg='\newpage'; flash=' '; npg='\newpage'; pgst='\pagestyle{empty}'; bc='\begin{center}'; ec='\end{center}'; fl='\centerline{ }'; fl='\centerline{ }'; % Открываются файлы для определения числа строк в файле fid11=fopen('THEORY\THEORY_1.m','r'); fid12=fopen('THEORY\THEORY_2.m','r'); fid13=fopen('THEORY\THEORY_3.m','r'); fid14=fopen('THEORY\THEORY_4.m','r'); fid15=fopen('THEORY\THEORY_5.m','r'); fid21=fopen('PROBLEMS\PROBLEM_1.m','r'); fid22=fopen('PROBLEMS\PROBLEM_2.m','r'); fid23=fopen('PROBLEMS\PROBLEM_3.m','r'); fid24=fopen('PROBLEMS\PROBLEM_4.m','r');
66
fid25=fopen('PROBLEMS\PROBLEM_5.m','r'); % Определение числа строк в файле n1=zeros(1,10); for tema=1:10 t1=1; if tema==1; while t1 > 0; t1 = fgetl(fid11); if t1 > 0; n1(tema)=n1(tema)+1; end; end if tema==2; while t1 > 0; t1 = fgetl(fid12); if t1 > 0; n1(tema)=n1(tema)+1; end; end; end if tema==3; while t1 > 0; t1 = fgetl(fid13); if t1 > 0; n1(tema)=n1(tema)+1; end; end if tema==4; while t1 > 0; t1 = fgetl(fid14); if t1 > 0; n1(tema)=n1(tema)+1; end; end if tema==5; while t1 > 0; t1 = fgetl(fid15); if t1 > 0; n1(tema)=n1(tema)+1; end; end if tema==6; while t1 > 0; t1 = fgetl(fid21); if t1 > 0; n1(tema)=n1(tema)+1; end; end if tema==7; while t1 > 0; t1 = fgetl(fid22); if t1 > 0; n1(tema)=n1(tema)+1; end; end if tema==8; while t1 > 0; t1 = fgetl(fid23); if t1 > 0; n1(tema)=n1(tema)+1; end; end if tema==9; while t1 > 0; t1 = fgetl(fid24); if t1 > 0; n1(tema)=n1(tema)+1; end; end if tema==10;while t1 > 0; t1 = fgetl(fid25); if t1 > 0; n1(tema)=n1(tema)+1; end; end end
end;
end; end; end; end; end; end; end; end;
fclose(fid11);fclose(fid12);fclose(fid13);fclose(fi d14);fclose(fid15);
67
fclose(fid21);fclose(fid22);fclose(fid23);fclose(fi d24);fclose(fid25); %Разыгрывается 10 случайных чисел, соответствующие номеру задачи в файле for tema=1:10 cnt=0; s=zeros(1,n1(tema)); sum_s=0; while sum_s
68
nvar1=0; nvar2=0; nvar3=0; nvar4=0; nvar5=0; nvar6=0; nvar7=0; nvar8=0; nvar9=0; nvar10=0; % Основной цикл розыгрыша вопросов и формирования билетов while nvar
69
номера файлов, соответствующих номерам нулевых элементов матрицы ntheor (трем единицам соответствуют теоретические вопросы) % Открываются папки, из которых берутся вопросы и задачи if ntheor(1)==1; fid11=fopen('THEORY\THEORY_1.m','r'); end if ntheor(2)==1; fid12=fopen('THEORY\THEORY_2.m','r'); end if ntheor(3)==1; fid13=fopen('THEORY\THEORY_3.m','r'); end if ntheor(4)==1; fid14=fopen('THEORY\THEORY_4.m','r'); end if ntheor(5)==1; fid15=fopen('THEORY\THEORY_5.m','r'); end if ntheor(1)==0; fid21=fopen('PROBLEMS\PROBLEM_1.m','r'); end if ntheor(2)==0; fid22=fopen('PROBLEMS\PROBLEM_2.m','r'); end if ntheor(3)==0; fid23=fopen('PROBLEMS\PROBLEM_3.m','r'); end if ntheor(4)==0; fid24=fopen('PROBLEMS\PROBLEM_4.m','r'); end if ntheor(5)==0; fid25=fopen('PROBLEMS\PROBLEM_5.m','r'); end if nvar > k1*n1(1); k1=k1+1; nvar1=0; cnt=0; s1=zeros(1,n1(1)); sum_s1=0; while sum_s1
k2*n1(2); k2=k2+1; nvar2=0;
70
cnt=0; s2=zeros(1,n1(2)); sum_s2=0; while sum_s2 k3*n1(3); k3=k3+1; nvar3=0; cnt=0; s3=zeros(1,n1(3)); sum_s3=0; while sum_s3 k4*n1(4); k4=k4+1; nvar4=0; cnt=0; s4=zeros(1,n1(4)); sum_s4=0; while sum_s4 k5*n1(5); k5=k5+1; nvar5=0; cnt=0; s5=zeros(1,n1(5)); sum_s5=0; while sum_s5
71
s5(rnd)=1; sum_s5=sum(s5); end; end; end if nvar > k6*n1(6); k6=k6+1; nvar6=0; cnt=0; s6=zeros(1,n1(6)); sum_s6=0; while sum_s6 k7*n1(7); k7=k7+1; nvar7=0; cnt=0; s7=zeros(1,n1(7)); sum_s7=0; while sum_s7 k8*n1(8); k8=k8+1; nvar8=0; cnt=0; s8=zeros(1,n1(8)); sum_s8=0; while sum_s8 k9*n1(9); k9=k9+1; nvar9=0; cnt=0; s9=zeros(1,n1(9)); sum_s9=0; while sum_s9
72
for i=1:n1(9); rnd=int8(random('Uniform',1,n1(9),1,1)); if s9(rnd)==0; cnt=cnt+1; % Случайная матрица. n10(9,cnt)=rnd; end s9(rnd)=1; sum_s9=sum(s9); end; end; end if nvar > k10*n1(10); k10=k10+1; nvar10=0; cnt=0; s10=zeros(1,n1(10)); sum_s10=0; while sum_s10
73
fprintf(fid2,'\n%s',cnt2); fprintf(fid2,'\n%s',line); fclose(fid14); end; nvar5=nvar5+1; if ntheor(5)==1; for numb=1:n10(5,nvar5); line = fgetl(fid15); end; fprintf(fid2,'\n%s',cnt2); fprintf(fid2,'\n%s',line); fclose(fid15); end; nvar6=nvar6+1; if ntheor(1)==0; for numb=1:n10(6,nvar6); line = fgetl(fid21); end; fprintf(fid2,'\n%s',cnt2); fprintf(fid2,'\n%s',line); fclose(fid21); end; nvar7=nvar7+1; if ntheor(2)==0; for numb=1:n10(7,nvar7); line = fgetl(fid22); end; fprintf(fid2,'\n%s',cnt2); fprintf(fid2,'\n%s',line); fclose(fid22); end; nvar8=nvar8+1; if ntheor(3)==0; for numb=1:n10(8,nvar8); line = fgetl(fid23); end; fprintf(fid2,'\n%s',cnt2); fprintf(fid2,'\n%s',line); fclose(fid23); end; nvar9=nvar9+1; if ntheor(4)==0; for numb=1:n10(9,nvar9); line = fgetl(fid24); end; fprintf(fid2,'\n%s',cnt2); fprintf(fid2,'\n%s',line); fclose(fid24); end; nvar10=nvar10+1; if ntheor(5)==0; for numb=1:n10(10,nvar10); line = fgetl(fid25); end; fprintf(fid2,'\n%s',cnt2); fprintf(fid2,'\n%s',line); fclose(fid25); end; % Счетчик нумерации вопросов в билетах cnt3='\addtocounter{ct1}{-5}'; fprintf(fid2,'\n%s',cnt3); fprintf(fid2,'\n%s',fl);
74
fprintf(fid2,'\n%s',fl); fprintf(fid2,'\n%s',c1); fprintf(fid2,'\n%s',c10); fprintf(fid2,'\n%s',c2); fprintf(fid2,'\n%s',c11); fprintf(fid2,'\n%s',fl); % Параметр k используется для записи двух билетов на одной странице if k==1; fprintf(fid2,'\n%s',vsp); fprintf(fid2,'\n%s',flash); end if k==2; fprintf(fid2,'\n%s',npg); fprintf(fid2,'\n%s',flash); k=0; end end
fprintf(fid2,'\n%s',sl6); fclose(fid2);
nvar = 1 nvar = 2 nvar = 3 nvar = 4 nvar = 5 На странице формата А4 печатаются 2 билета. На рис. 1.41 приводится первый вариант из пяти сформированных билетов. Рассмотренный алгоритм составления билетов используется также для формирования контрольных работ, тестов и т.д.
75
Рис. 1.41. Вариант экзаменационного билета. Приведем краткую характеристику некоторых команд в программе розыгрыша билетов: disp – вывод сообщения в командное окно системы; input – ввод данных. В приведенной программе она не используется так же, как и команда disp, т.к. программа запускается в режиме m-книги. Эти
команды
удобны
при
запуске
исходной
программы
непосредственно в директории work; zeros – матрица из нулевых элементов; random – розыгрыш случайного числа; fgetl – чтение одной строки текстового файла; while … end – выполнение цикла, пока не сформируется заданное количество билетов;
76
fprinf – форматная запись данных в файл (%s – запись строки, \n – новая строка); random('Uniform',1,n1(10),1,1)
–
розыгрыш
случайных
чисел
размерностью 1 × 1 , распределенных равномерно; n1 – число строк (вопросов) в каждом файле - в данном случае десятом.
Литература к главе 1. 1. Потемкин В.Г. Вычисления в среде MATLAB. М., Диалог МИФИ, 2004. 2. Ануфриев И., Смирнов А., Смирнова Е. MATLAB 7 в подлиннике. С.-П., БХВ-Петербург, 2005. 3. Кетков Ю., Кетков А., Шульц М. MATLAB 7 программирование, численные методы. БХВ-Петербург, 2005. 4. Чен К., Джиблин П., Ирвинг А. MATLAB в математических исследованиях. М, Мир, 2001. 5. Поршнев
С.В.
Компьютерное
моделирование
физических
процессов в пакете MATLAB. М., Горячая линия – Телеком, 2003. 6. Мартынов
Н.Н.
MATLAB
7:
Элементарное
введение.
КУДИЦ-Образ, 2005г.
77
Глава 2
Во второй главе рассмотрены некоторые аспекты статистического анализа результатов измерений на конкретном примере. В качестве объекта анализа выбрана таблица 2.1, приведенная в монографии [1]. В ней представлены различные геофизические данные по измерению проницаемостей образцов горных пород. Практическая важность обсуждаемой в таблице характеристики пород, а также большая совокупность приведенных в ней данных делают ее привлекательной, в методическом плане, для подробного статистического анализа. надеемся, что приведенный
Мы
анализ будет полезной при обработке и
анализе опытных данных, и, отчасти, послужит своего рода дополнением к статистическим методам, рассмотренным в [1]. С другой стороны, приведенные здесь примеры применения MATLAB, могут быть полезны как начинающим пользователям системы, так и тем, кто занимается анализом статистических распределений.
78
2.1. Проницаемость горных пород Прежде чем перейти к анализу данных приведем небольшое введение относительно характера движения нефти или газа к забою добывающей скважины. Он определяется двумя основными факторами: - физико-химическими свойствами этих углеводородов; - структурой порового пространства среды – коллектора, в которой они распространяются. Для описания течения углеводородов с учетом этих факторов, наряду с другими характеристиками, вводится понятие проницаемости горной породы, характеризующей ее способность пропускать жидкости и газы. Для оценки проницаемости пород обычно пользуются законом фильтрации
Дарси,
согласно
которому
скорость
фильтрации
(просачивания) жидкости в среде пропорциональна градиенту давления и обратно пропорциональна ее динамической вязкости μ : →
v =−
k
μ
grad ( p) .
Перепишем эту формулу в скалярной форме для одномерной задачи. Для этого выделим образец породы длиной L , и предположим, что ее фильтрационные свойства одинаковы по всей длине. Тогда имеем
v=
Q 1 Δp =k , S μ L
(1.1)
где v - скорость линейной (плоскопараллельной) фильтрации, Q ⎛ м3 ⎞ объемный расход жидкости в единицу времени ⎜⎜ ⎟⎟ , ⎝ с ⎠
S - площадь
фильтрации, Δp - перепад давления на выделенном участке пористой среды.
Коэффициент
пропорциональности
в
(1.1)
называется
коэффициентом проницаемости:
79
Q μL . Δp ⋅ S
k=
(1.2)
Величина k имеет размерность площади: ⎡ м3 ⎤ ⎢ с ⋅ Па ⋅ с ⋅ м⎥ ⎥ = м2 . [k ] = ⎢ 2 ⎢ Па ⋅ м ⎥ ⎢⎣ ⎥⎦
[ ]
Часто используется единица Дарси: 1Д ≈ 1,02мкм2 ≈ 1мкм2 . Совокупность результатов, приведенных в [1] для проницаемостей пород, приводится в табл. 2.1. Еще раз отметим, что данные, приведенные в этой таблице, выбраны в качестве объекта для анализа изза
важности рассматриваемой характеристики. В силу специфики
представления материала, в [1] отсутствует ссылка на первоисточники этой таблицы. Не понятно также, являются ли эти результаты обобщением различных данных, полученных разными авторами, или же они относятся к конкретному месторождению. В последнем случае, рассуждения, которые приводятся
ниже, могли бы представить
практический интерес. Опишем параметры, приведенные в табл. 2.1: i=1,2…10, –
номера интервалов, на которые разбивается весь
наблюдаемый диапазон значений проницаемостей; Ni – число пород, проницаемости которых лежат в i-том интервале; pi – относительное число пород, проницаемости которых попадают в i–тый интервал:
pi =
исследованных пород.
10 Ni , где N 0 = iΣ=1 N i = 1000 – общее число N0
Величина pi есть относительная доля образцов
с выделенной проницаемостью.
Или же p i равна вероятности
попадания проницаемости одной случайно выбранной породы из тысячи в интервал шириной Δk = 0,2мкм2 .
80
Таблица 2.1 i 1 2 3 4 5 6 7 8 9 10
Проницаемость (мкм2) 0 – 0,2 0,2 – 0,4 0,4 – 0,6 0,6 – 0,8 0,8 – 1,0 1,0 – 1,2 1,2 – 1,4 1,4 – 1,6 1,6 – 1,8 1,8 - 2,0
Ni
pi
4 126 230 260 130 120 50 30 30 20
0,004 0,126 0,230 0,260 0,130 0,120 0,050 0,030 0,030 0,020
2.2. Графическое представление данных и их характеристики На рис. 2.1 приводится гистограмма, построенная по данным таблицы 1. По оси абсцисс отложена проницаемость пород, а по ординате число образцов, попадающих в данный интервал проницаемостей. Эта гистограмма построена с помощью команды hist. В массиве x(i) за абсциссу выбраны середины интервалов проницаемостей. Пример 2.1 Программа построения распределения коэффициента проницаемости по данным таблицы 2.1 с помощью команды hist (рис. 2.1): for for for for for for for for for for
i=1:4; x(i)=0.1; end i=5:130; x(i)=0.3; end i=131:360; x(i)=0.5; end i=361:620; x(i)=0.7; end i=621:750; x(i)=0.9; end i=751:870; x(i)=1.1; end i=871:920; x(i)=1.3; end i=921:950; x(i)=1.5; end i=951:980; x(i)=1.7; end i=981:1000; x(i)=1.9; end hist(x) 81
set(gca,'FontName','Arial Cyr'); xlabel('Проницаемость, мкм^2'); ylabel('Число образцов') title('Экспериментальная гистограмма','FontSize',14) hgt=gtext('=0.783 mkm^2'); hgt=gtext('D=0.144 mkm^4'); % Определяется медианное значение m1 = median(x) % Определяется среднее значение m2 = mean(x) % Дисперсия D=var(x) m1 = 0.7000 m2 = 0.7832 D = 0.1444 Экспериментальная гистограмма
300
=0.783 mkm2
Число образцов
250
D=0.144 mkm4
200
150
100
50
0
0
0.5
1 Проницаемость, мкм 2
1.5
2
Рис. 2.1. Распределение образцов пород по коэффициенту проницаемости. В качестве численных характеристик статистических распределений обычно рассматривают два параметра – среднюю величину и дисперсию, и реже используют такие величины как наиболее вероятная и медиана. Определим два последних понятия. Наиболее вероятная величина 82
распределения определяется как значение переменной, на которую приходится максимум распределения. Медианой называют такое значение переменной, относительно которой полная площадь под распределением делится на две равные части. Для симметричных распределений наиболее вероятная величина и медиана совпадают. В идеальном эксперименте, когда проводится неограниченное число высокоточных
измерений,
математическим
средняя
ожиданием.
величина
Средняя
совпадает
величина
с
т.н.
характеризует
положение центра тяжести распределения вдоль оси абсцисс, а дисперсия – ширину распределения. Вычислим эти характеристики по данным табл. 2.1. По определению, средняя величина вычисляется как 10
< k >=
∑k N i =1
i
N0
i
10
= ∑ k i ⋅ pi ,
(2.1)
i =1
где 10
∑k N i =1
i
i
= 0,1 ⋅ 4 + 0,3 ⋅ 126 + 0,5 ⋅ 230 + 0,7 ⋅ 260 + 0,9 ⋅ 130 + 1,1 ⋅ 120 + 1,3 ⋅ 50 +
+ 1,5 ⋅ 30 + 1,7 ⋅ 30 + 1,9 ⋅ 20 = 783,2 мкм 2 ;
N0 =
10
∑N i =1
i
= 4 + 126 + 230 + 260 + 130 + 120 + 50 + 30 + 30 + 20 = 1000;
< k >=
783,2 ≈ 0,783мкм2 . 1000
(2.2)
Формула (2.1) применяется для вычисления средней величины в случае, когда исходные данные предварительно распределены по ячейкам, т.е. в виде табл. 2.1. Тогда данные по отдельным измерениям отсутствуют. В
83
случае, когда известны проницаемости каждой из тысячи рассмотренных образцов пород, средняя проницаемость определяется как средняя 1000
арифметическая < k >=
∑k i =1
N0
i
.
Таким образом, (2.2) есть средняя проницаемость пород, хотя и для достаточно большой, но ограниченной выборки (N 0 = 1000 ) . Поэтому, полученная величина < k > является приближенной. Т.е., если имеется возможность выбора образцов из неограниченно большого набора пород, то, повторяя измерения для другой выборки из 1000 образцов, можно получить результат, близкий, но не совпадающий с (2.2). Увеличивая
число исследуемых образцов в одной выборке можно
повысить точность определения средней величины. При бесконечно большом числе исследуемых образцов она неограниченно приближается к истинной средней величине m , т.е. к математическому ожиданию. Величина < k > часто используется в уравнениях
подземной
гидродинамики в качестве основного параметра фильтрации. В ряде случаев она может
оказаться малоинформативной характеристикой
грунта. Например, в случае, если в горную породу ввести тонкую перегородку со сравнительно низкой проницаемостью, то средняя величина < k > может измениться несущественно, тогда, как скорость фильтрации будет определяться, в основном,
проницаемостью этой
перегородки. В аналогичных случаях бывает полезным использование метода сопряженных уравнений, содержащих наряду со средними величинами и моменты более высоких порядков, как правило, дисперсию. Она характеризует степень «рассеяния»
измеряемой
величины относительно среднего значения. Вычислим дисперсию проницаемости по данным таблицы 2.1. По определению
84
10
D =
∑(k
i
i =1
− m) 2 ⋅ N i N0
=
10
∑(k
i
i =1
− m) 2 ⋅ pi ,
(2.3)
где m - математическое ожидание. В формуле (2.3) математическое ожидание m неизвестно, и, поэтому вычислим приближенное значение дисперсии с использованием средней проницаемости (2.2), определенной из опыта: 10
~ D=
∑ ( k − < k >) i =1
i
2
⋅ Ni
10
= ∑ ( k i − < k >) 2 ⋅ p i .
N0
(2.4)
i =1
Распишем (2.4) применительно к табл. 2.1. 10
∑ ( k − < k >) i =1
i
2
⋅ N i = (0,1 − 0.783) 2 ⋅ 4 + (0,3 − 0.783) 2 ⋅ 126 + (0,5 − 0.783) 2 ⋅ 230 +
+ (0,7 − 0,783) 2 ⋅ 260 + (0,9 − 0,783) 2 ⋅ 130 + (1,1 − 0,783) 2 ⋅ 120 +
+ (1,3 − 0,783) 2 ⋅ 50 + (1,5 − 0,783) 2 ⋅ 30 + (1,7 − 0,783) 2 ⋅ 30 + + ( 1,9 − 0,783) 2 ⋅ 20 = 144,422мкм4 .
~ 144,442 D = ≈ 0,144мкм4 . 1000
(2.5)
Формулы (2.3) и (2.4) справедливы только в случае больших значений N 0 . Для сравнительно малых N 0 нужно пользоваться более точной формулой: 10
~ D=
∑ ( k − < k >) i =1
i
N0 −1
2
⋅ Ni
.
(2.6)
Отличие знаменателей в формулах (2.6) и (2.4) обусловлено тем, что числитель должен быть отнесен не к числу образцов N 0 , а к числу ~ независимых значений N i . Но в (2.6) D выражается через среднюю
проницаемость < k > , которая определена по тем же данным. Поэтому
85
~ при вычислении D независимых N i равно N 0 − 1 = 999 . В этом смысле
величину N 0 − 1 в (2.6) называют числом степеней свободы. Как уже отмечалось, дисперсия является одной из важнейших характеристик статистического распределения, и характеризует ее ширину. Перечислим ее основные свойства. 1. Дисперсия постоянной величины равна нулю: D ( C ) = 0 . 2. Постоянный множитель можно выносить за знак дисперсии, 2 возводя его в квадрат: D (C ⋅ X ) = C ⋅ D (X ) .
3. Дисперсия суммы независимых случайных величин X, Y, Z равна сумме дисперсий: D (X + Y + Z ) = D (X ) + D (Y ) + D (Z ) . Примечание: В примере 2.1 сначала
данных
x(i),
задается
исходный
массив
где i=1,2,…, 1000. В программе также определены
медианная и средняя величины (сравните с расчетом по формуле (2.2)). Для
этого
используются
команды
median
и
mean.
Дисперсия
вычисляется с помощью команды var. Результат совпадает с расчетом по формуле (2.5). Из рис. 2.1 следует, что команда hist сопоставляет середину интервала левому краю соответствующего столбца. Пример 2.2 Другой способ
вычисления
средней
величины
и дисперсии.
Исходные данные можно задать в виде двух одномерных массивов: x=[0.1 0.3 0.5 0.7 0.9 1.1 1.3 1.5 1.7 1.9]; y=[4 126 230 260 130 120 50 30 30 20]; mx=sum(x.*y)/sum(y) sy=sum(y); D=(sum((x.^2).*y)-2*mx*sum(x.*y)+mx^2*sy)/(sy-1) mx = 0.7832 D = 0.1444 Значения mx и D совпадают с результатами предыдущего примера.
86
2.3. Вычисление погрешности средней величины Величины средней проницаемости и дисперсии, вычисленные по формулам (2.1) и (2.6), являются приближенными, т.к. они получены по ограниченному числу измерений. Вычислим величину погрешности, с которой определена средняя проницаемость (2.2). Поскольку дисперсия характеризует ширину распределения, или степень отклонения данных от средней величины, то она является мерой абсолютной погрешности
Δk в определении средней проницаемости < k > ( Δk часто называют просто погрешностью). Но отождествление абсолютной величины ~ экспериментальной дисперсии D с погрешностью Δk невозможно, т.к. они имеют разные размерности (см. формулы (2.2) и (2.5)). Поэтому используется величина, размерность которой совпадает с размерностью
< k > , т.е. σ = D~ ≈ 0,380мкм2 .
(3.1)
В литературе эту величину называют по-разному – среднеквадратичным отклонением, среднеквадратичной погрешностью или стандартом. Стандарт
σ
проницаемости
характеризует одной
вероятность
случайно
попадания
выбранной
< k > ±σ = 0,783 ± 0,380 . Величина δk =
породы
σ
величины в
интервал
≈ 0,485 называется
относительной дисперсией, а иногда относительной погрешностью. По величине σ не совпадает с абсолютной погрешностью Δk . В частности, такое утверждение
следует из того, что стандарт σ , также, как и
< k > , имеют конечные предельные значения при больших
N0 .
Следовательно, погрешность Δk также должна иметь предельное значение, но это не так. С ростом N 0 , средняя величина должна определяться с большей точностью, т.е. Δk должна уменьшаться.
87
Получим зависимость Δk ( N 0 ) . Средняя проницаемость вычисляется по N0
k =
формуле (2.1):
10
∑k
i =1
N0
∑ pi ⋅ ki =
i
i =1
.
Вычислим теперь дисперсию средних величин k
N0
, полученных в
N 0 испытаниях. Используя свойства дисперсии, приведенные в конце
предыдущего пункта, получаем ⎛ k + k2 + ... + kN 0 D( k ) = D⎜ 1 ⎜ N0 ⎝ N ⋅D D ≈ 0 2 = . N0 N0
(
⎞ D ( k1 ) + D ( k2 ) + ... + D kN 0 ⎟= 2 ⎟ N0 ⎠
)≈
Следовательно, величина относительной погрешности распределения средних проницаемостей равна D( k k
т.
е.,
относительная
проницаемостей в
)
=
1 N0
⋅
D , k
погрешность
распределения
средних
N 0 раз меньше относительной погрешности одного
отдельного измерения. Следовательно, с ростом числа испытуемых пород N 0 погрешность Δk уменьшается, и для данных, приведенных в табл. 2.1, получаем Δk =
σ N0
=
~ D = N0
0. 144 ≈ 0,012мкм2 . 1000
(3.2)
Таким образом, средняя величина проницаемости, определенная по данным 2.1, равна < k >= 0,783 ± 0,012 ,
(3.3)
т.е. она определена с относительной погрешностью
88
Δk 0,012 = ⋅ 100% ≈ 1,53% . < k > 0,783
(3.4)
Изложенный способ вычисления погрешности средней проницаемости является приближенным и имеет оценочный характер. При более точном вычислении
Δk
погрешности
вводится
понятие
доверительного
интервала и доверительной вероятности, которые характеризуют точность и надежность оценки < k > . По данным табл. 2.1 < k >= 0,783 .
Зададим некоторую вероятность α . Пусть истинная
средняя проницаемость m пород отличается от вычисленной величины
< k > на величину ε с вероятностью P ( < k > −m < ε ) = α ,
(3.5)
т.е. с вероятностью α неизвестное значение средней проницаемости попадает в интервал I α = (< k > −ε ; < k > +ε ) .
(3.6)
Вероятность α называется доверительной вероятностью, а интервал I α - доверительным интервалом.
Рассмотрим общий случай. Величина < k > в (3.3), получена по данным одной серии измерений проницаемости для 1000 образцов горных пород. Предположим, что мы располагаем результатами большого числа серий измерений, каждая из которых характеризуется средней величиной < k > i
(i – номер серии). Тогда, согласно
центральной предельной теореме теории вероятностей, распределение средних < k > i будет описываться нормальным распределением (см. Приложение). − 1 Φ( x ) = e σ 2π
( x − m)2 2σ 2
,
где x ≡< k > i .
(3.7)
Функция
89
1 Κ( x0 ) = σ 2π
x0
−
∫e
( x − m) 2 2σ 2
dx
(3.7')
−∞
представляет собой кумулятивную функцию нормального распределения и характеризует вероятность того, что случайно выбранная величина x имеет значение, меньшее чем x 0 . Отметим, что +∞
∫ Φ ( x ) dx
= 1,
(3.8)
−∞
т.е. площадь под функцией плотности вероятности нормального распределения нормирована и равна единице. Поэтому функция Φ ( x ) имеет смысл плотности вероятности. Поскольку, в рассматриваемом примере,
проницаемость
величины
k
является
положительной
величиной,
то
и σ могут принимать произвольные положительные
значения. Величина 1 − F ( x0)
(3.9)
имеет смысл вероятности того, что средняя проницаемость < k > превышает некоторую критическую величину x 0 . Эта вероятность соответствует затененной части площади под функцией плотности вероятностей на рис. 2.2. Тогда в силу симметрии F ( x ) , величина < k > попадает в интервал m ± x с вероятностью
F ( x ) − (1 − F ( x ) ) = 2F ( x ) − 1 .
(3.10)
Пример 2.3 Построим нормальное распределение с k = 0,783 и Δk = 0,012 . Вычислим вероятность того, что случайная выборка будет иметь значение, превышающее критическую величину 0,8. Расчет и построение графика осуществлется с помощью команды normspec. p=normspec ([0.8 Inf],0.783,0.012) hgt=gtext('F(x)'); hgt=gtext('1-F(x)'); 90
p = 0.0783 Probability Greater than Lower Bound is 0.07829 35
30
Density
25
20
15
F(x)
10
1-F(x)
5
0 0.74
0.75
0.76
0.77
0.78 0.79 Critical Value
0.8
0.81
0.82
0.83
Рис. 2.2. Нормальное распределение. Иллюстрация к формулам (3.9, 3.10).
Перепишем (3.10) используя формулы (3.5, 3.9, 3.10) ⎛ε P ( m− < k > < ε ) = 2Φ⎜ ⎝σ
⎞ ⎟ − 1. ⎠
(3.11)
Приравнивая правые части (2.11) и (3.11) получаем уравнение для границ доверительного интервала ⎛ε ⎞ α = 2Φ ⎜ ⎟ − 1 , ⎝σ ⎠
откуда ⎛1 + α ⎞ ⎟ , ⎝ 2 ⎠
ε = σ ⋅ arg Φ⎜
(3.12)
где arg Φ ( x ) – обратное выражение функции Φ ( x ) . Выше отмечалось, что истинное значение σ нам не известно, и поэтому в (3.12) подставляют ее
приближенное значение σ = D~ ,
определяемое из опыта. Вычисляя по (3.12) величину ε можно
91
определить доверительный интервал (3.5). При вычислении ε , как ⎛1 + α ⎞ ⎟ в правило, используют табличные данные функции t = arg Φ⎜ ⎝ 2 ⎠
зависимости от α . Величина t , приведенная в табл. 2.2, определяет для нормального закона число среднеквадратических отклонений от средней величины, чтобы вероятность попадания в полученный участок была равна α :
I α = (< k > −t ⋅ Δk ; < k > +t ⋅ Δk ) ,
(3.13)
где Δk вычисляется по формуле (3.2). Используя результаты, приведенные в табл. 2.2 можно сказать, что средняя проницаемость горных пород, определяемая по данным табл. 2.1, с доверительной вероятностью α = 95%
попадает в интервал с доверительными
границами k1 = 0,783 + 1,96 ⋅ 0,012 = 0,807 , k 2 = 0,783 − 1,96 ⋅ 0,012 = 0,759 . Из табл. 2.2 следует, что чем больше доверительная вероятность α , тем больше величина t , и тем сильнее отличаются границы доверительного интервала. Таблица 2.2 α
t
α
t
α
t
0,8
1,282
0,86
1,475
0,92
1,750
0,81
1,310
0,87
1,513
0,93
1,810
0,82
1,340
0,88
1,554
0,94
1,880
0,83
1,371
0,89
1,597
0,95
1,960
0,84
1,404
0,90
1,643
0,96
2,053
0,85
1,439
0,91
1,694
0,997
3,000
Рассмотренный метод построения доверительного интервала является приближенным,
т.к.
истинная
зависимость
f ( k)
исходного
распределения не известна. В случае, когда функция f ( k ) известна, 92
задача построения доверительного интервала решается точно, т.к. при вычислении дисперсии, вместо (2.6) можно воспользоваться точной формулой 10
D =
∑(k
i
i =1
− m) 2 ⋅ N i
N0 − 1
,
(3.14)
где m – математическое ожидание, вычисляемое как первый момент распределения f ( k ) : ∞
m=
∫ k ⋅ f ( k) dk 0
∞
∫ f ( k) dk
.
(3.15)
0
Например, если бы распределение проницаемостей k горных пород описывалось нормальным распределением, то задача построения точного доверительного интервала для средней проницаемости < k > свелась бы к соответствующему анализу распределения Стьюдента.
2.4. Распределение Стьюдента В случае если распределение горных пород по проницаемости описывалось нормальным распределением, то оно было бы симметрично относительно наиболее вероятной величины. Но из рис.1 следует, что это не так. Тем не менее, допуская такую неточность, определим доверительный
интервал
для
средней
проницаемости
с
использованием распределения Стьюдента (псевдоним английского математика В. Госсета). Независимой переменной в этом распределении является величина
t =
< k > −m , Δk
(4.1)
где m - математическое ожидание (3.15) Δk - среднеквадратичное отклонение (3.2). Видно, что величина t является безразмерной и 93
характеризует степень отклонения экспериментальной величины < k > от m в единицах среднеквадратичного отклонения Δk . Функция плотности вероятности распределения Стьюдента по переменной t имеет вид:
S( t , n) =
⎛n⎞ Γ⎜ ⎟ ⎝2⎠
−
n
⎛ t2 ⎞ 2 ⎜1 + ⎟ n − 1 ⎟⎠ , ⎛ n − 1 ⎞ ⎜⎝ ( n − 1) π ⋅ Γ⎜ ⎟ ⎝ 2 ⎠
(4.2)
где +∞
∫ S(t , n )dt
= 1,
(4.3)
−∞
∞
Γ( x ) = ∫ u x −1e−u du – гамма-функция, n - целое положительное число, 0
которое отождествляют с числом измерений. Величину r = n − 1 называют числом степеней свободы распределения (4.2).
Вычислим
теперь вероятность того, что значение < k >= 0,783 попадет в интервал
t = ±1 . Для этого в (4.1) положим m = 0,771 . Тогда t =
0,783 − 0,771 = 1. 0,012
Вероятность того, что < k > дает значение t , лежащее в интервале
(1,+∞) выражается через (4.2): +∞
p1 ( n) =
∫ S( t , n) dt .
(4.4)
1
На рис. 2.3 приводится вид функции S( t , n) для двух значений n . Пример 2.4.
Программа построения распределения Стьюдента на (рис.2.3): tmax=7; t=-tmax:tmax/300:tmax; x=0:0.1:200; for i=1:2 94
if i==1,n=8; end; if i==2,n=3; end % Вычисление гамма-функции y1=(n-1)/2; y2=n/2; G1=gamma(y1); G2=gamma(y2); s1=-n/2; t1=t.^2; t2=1+t1/(n-1); f1=t2.^s1; f2=sqrt((n-1)*pi); if i==1, St1=G2*f1/G1/f2; end if i==2, St2=G2*f1/G1/f2; end end plot(t,St1,t,St2),grid set(gca,'FontName','Arial Cyr'); xlabel('t','FontSize',12) ylabel('Плотность вероятности','FontSize',12) title('Рис.3. Распределение Стьюдента','FontSize',14) hgt=gtext('n=8'); hgt=gtext('n=3');
Рис.3. Распределение Стьюдента
0.4 0.35
Плотность вероятности
n=8
0.3 0.25 0.2 n=3
0.15 0.1 0.05 0 -8
-6
-4
-2
0
2
4
6
8
t
Рис. 2.3. Распределение Стьюдента для двух значений степеней свободы.
Видно, что оно, как и нормальное распределение, симметрично относительно вертикальной оси, проходящей через наиболее вероятное значение. Используя это сходство распределений, можно провести рассуждения, аналогичные тем, которые проделаны при получении
95
формулы
(3.10).
Следовательно,
искомая
вероятность
попадания
случайной величины в интервал t = ±1 равна
p(n) = 1 − 2 ⋅ p1 (n) ,
(4.5)
где p1 определяется по (4.4). Попадание параметра t в интервал ± 1 соответствует попаданию средней величины в одной серии измерения в интервал
[( 0,783 − 0,012)
÷ ( 0,783 + 0,012) ] ,
определяемый
из
опыта.
Рассмотрим программу, которая позволяет вычислять доверительную вероятность для заданного числа степеней свободы: Пример 2.5.
По нормальному распределению с средним 0,783 и стандарта 0,38 разыгрываются 1000 значений k . По ним определяется средняя величина ~ 0,783 − k ~ k и соответственно t = . Таких повторных сеансов 0,012
проводится
10 4 , в каждой из которых определяется значение t . Получаемое таким
образом распределение и есть распределение Стьюдента для 1000 − 1 степеней свободы. % Число степеней свободы. Почти то же, что и число испытуемых образцов в одном опыте n=1000-1; % Число опытов numb=10000; st1=0; st2=0; % Критическое значение параметра t tkr=1.96; for i=1:numb % Генерируется матрица столбец с данными средним и сигма n2 = normrnd(0.783,0.38,[1 n]); % Определятся средняя величина m=mean(n2); t(i)=(.783-m)/0.012; if t(i)>tkr; st1=st1+1; end 96
if t(i)<-tkr; st2=st2+1; end end hist(t,100), grid; prob=1-(st1+st2)/numb set(gca,'FontName','Arial Cyr'); title ('10^4 опытов. В каждом опыте 10^3 образцов') xlabel('t','FontSize',12) ylabel('Плотность вероятности','FontSize',12) prob = 0.9518 104 опытов. В каждом опыте 103 образцов
350
Плотность вероятности
300 250 200 150 100 50 0 -5
-4
-3
-2
-1
0
1
2
3
4
t
Рис. 2.4. Распределение по параметру t (4.1) в 10 4 опытах, в каждом из которых исследовано 1000 образцов. Примечание: Команда normrnd(0.783,0.38,[1 n]) производит выборку n
случайных чисел для нормального распределения со средним 0,783 и стандартом 0,38.
Если в примере 2.5 задано критическое значение t кр , то по распределению на рис. 2.4 можно определить вероятность p его превышения. Таким образом можно воспроизвести данные таблицы 2.2. Для сравнения в табл. 2.3 приводятся значения p, соответствующие некоторым
значениям
t
из
табл.
2.2.
Небольшое
отличие
97
соответствующих значений р в таблицах 2.2 и 2.3 объясняется статистическими
погрешностями
величин
в
табл.
2.3,
из-за
ограниченности числа повторных сеансов испытаний ( 10 4 ): Таблица 2.3
1 0,685
t p
1,282 0,797
1,439 0,849
1,643 0,894
1,960 0,952
Используя данные табл. 2.3 можно определить доверительный интервал, в
который
с
вероятностью
95%
попадает
средняя
величина,
определенная из опыта: k = 0,783 ± 1,96 ⋅ 0,012 = 0,783 ± 0,024 . Отметим, что вероятность p может быть определена с помощью специальных команд системы, в частности команды tcdf, позволяющей определить площадь под кумулятивной функцией распределения в пределах (− ∞, t ] для заданного числа степеней свободы: Пример 2.6. t=1.96; prob=2*tcdf(t,1000-1)-1 prob = 0.9497 Пример 2.7.
С помощью команды tinv можно вычислить значения t в таблицах 2.2, 2.3. Для этого задаются доверительная вероятность p и несколько значений числа степеней свободы, в нашем случае – 5: p=0.95; pf=(1+p)/2; t=tinv (pf,998:1002) t = 1.9623 1.9623
1.9623
1.9623
1.9623
Примечание: Параметр pf определяется как площадь под функцией
98
плотности вероятности распределения 1 − p⎤ 1 + p⎤ ⎛ или ⎛⎜ − ∞ ; . ⎜ − ∞ ;1 − ⎥ 2 ⎦ 2 ⎥⎦ ⎝ ⎝
Стьюдента в пределах
Для указанных значений числа степеней
свободы значения t совпадают с высокой точностью.
Их отличие
выявляется в формате long format.
2.5. Вычисление погрешности дисперсии Процедура вычисления погрешности дисперсии σ D распределения проницаемости пород, определяемой по формуле (2.6), во многом аналогична задаче вычисления погрешности среднего < k > . Ее вывод не приводится по следующим причинам. Во-первых, анализируя эмпирические распределения, исследователи, как правило, интересуются его средней величиной, а дисперсия, в основном, вычисляется для оценки погрешности среднего. Во-вторых, вывод формулы для σ D требует громоздких математических выкладок (см., например, [2]). Здесь отметим, что для вычисления σ D нужно сделать предположение о нормальном распределении дисперсий D i , каждая из которых вычисляется по результатам отдельной совокупности опытов. Это утверждение следует из центральной предельной теоремы теории вероятностей. По-существу, мы вычисляем дисперсию распределения по дисперсии. Такая величина выражается через четвертый центральный момент μ 4 распределения исследуемой величины, а в нашем случае – результатов табл. 2.1 ( рис. 2.1):
D [D i ] =
μ4 N0
−
N0 − 3 ~ D2, N 0 ( N 0 − 1)
(5.1)
где 10
μ4 =
∑ (k − < k > ) i =1
i
N0 − 1
4
⋅ Ni
,
99
~ < k >= 0,783мкм2 , а дисперсия D = 0,144мкм4 и вычисляется по
формуле (2.6).
Вычислим значение μ4 :
Пример 2.8.
Вычислим четвертый центральный момент распределения коэффициента проницаемости двумя способами: 1. По формуле μ 4 =
4
10
∑ (k − < k > ) N i =1
i
i
по данным табл. 2.1;
2. С помощью команды moment(x,4). sm=(.1-.783)^4*4+(.3-.783)^4*126+(.5.783)^4*230+(.7-.783)^4*260+(.9-.783)^4*130+(1.1.783)^4*120+(1.3-.783)^4*50+(1.5-.783)^4*30+(1.7.783)^4*30+(1.9-.783)^4*20; m4=m1/999 for for for for for for for for for for m =
i=1:4; x(i)=0.1; end i=5:130; x(i)=0.3; end i=131:360; x(i)=0.5; end i=361:620; x(i)=0.7; end i=621:750; x(i)=0.9; end i=751:870; x(i)=1.1; end i=871:920; x(i)=1.3; end i=921:950; x(i)=1.5; end i=951:980; x(i)=1.7; end i=981:1000; x(i)=1.9; end moment(x,4)
m4 = 0.0744 m = 0.0743 Видно, что результаты в обоих случаях одинаковые и равны μ 4 ≈ 0,0744мкм4 . Примечание: Значения m4 и m совпадают, если в программе m4 =
m1 . 1000
Тогда искомая погрешность σ D вычисляется по формуле (5.1):
100
σ D = D [ D i ] ≈ 0,0073мкм4 .
Мы
получили
оценку
стандарта
(5.2)
дисперсии.
Ее
относительная
погрешность равна
σD
~ ⋅ 100% ≈ 5,07% . D
(5.3)
Из сравнения относительных погрешностей (2.10) и (5.3) следует, что для дисперсии она вычисляется с меньшей точностью, чем для средней проницаемости. Это объясняется тем, что «хвост» распределения по проницаемости на рис. 2.1 дает больший вклад в дисперсию по сравнению со средней, а он, как следует из табл. 2.1, статистически менее обеспечен. 2.6. Вычисление статистических ошибок для отдельных ячеек гистограммы
Гистограмма на рис. 2.1 состоит из десяти колонок, высоты которых соответствуют числу образцов, проницаемости которых попадают в интервал, соответствующий ширине основания колонки по оси абсцисс. Как
уже
отмечалось,
эта
гистограмма
отражает
данные
по
проницаемостям N 0 = 1000 образцов. Если проделать аналогичные измерения для другой совокупности такого же количества образцов, то для них мы получим гистограмму, которая будет подобна приведенной на рис. 2.1, но не будет с
ней совпадать. Это означает, что число
образцов пород, проницаемости которых лежат в интервале, скажем, от 0,2 до 0,4, будет различна для данных по разным совокупностям пород из
N 0 = 1000
образцов.
Если
ширина
выбранного
интервала
существенно уже полного интервала измеряемых проницаемостей (на рис. 2.1, примерно, от 0 до 2 мкм 2 ), то вероятность того, что проницаемость одной породы из тысячи, попадет в выделенный узкий
101
интервал, будет мала. В этом случае, флуктуации числа попадающих в узкий интервал Δk проницаемостей пород описывается распределением Пуассона (см. Приложение) e−N ⋅ N N Π (N , N ) = . N!
(6.1)
Распределение Пуассона позволяет вычислить вероятность попадания
N образцов пород в интервал проницаемостей Δk при
ожидаемом
среднем N . В отличие от нормального распределения (6.1) относится к классу так называемых дискретных распределений, т.е. переменная N принимает только положительные целочисленные значения. Важным свойством распределения Пуассона является то, что оно определяется одним параметром N , который по величине совпадает с дисперсией: N = D N . Такое равенство возможно в силу того, что величина N
является безразмерной. В том случае, когда среднее число образцов превышает значение N ≈ 10 распределение (6.1) является нормальным со стандартом σ = N (см. Приложение). Следовательно, отобрав в процессе измерения проницаемостей N образцов, можно утверждать, что с вероятностью p ≈ 0,68 (см. Приложение) математическое ожидание попадает в интервал N ± N . Правда, величина N не известна. Поэтому за стандарт измеряемой величины принимают
σ= N.
N:
(6.2)
Таким образом, по одному измерению статистической величины определяется и экспериментальная средняя величина N и ее стандарт N . Как правило, рисуя гистограмму, аналогичную рис. 2.1, многие
авторы указывают статистические ошибки для каждой из колонок в виде вертикальной палочки, середина которой совпадает с вершиной колонки
N , а ее длина совпадает с интервалом N ± N . Было бы целесообразно 102
привести
эти ошибки на рис. 2.1, но команда hist не располагает
соответствующей функцией. Данные табл. 2.1 по распределению пород по их проницаемостям с указанием статистических ошибок приводится на рис. 2.5, построенной с помощью команды errorbar. Оно подобно распределению на рис. 2.1, и является из кусочно-гладкой кривой, а именно, состоит из отрезков, соединяющих середины вершин колонок на рис. 2.1. Пример 2.9.
Программа
построения
экспериментального
распределения
с
указанием статистических ошибок в отдельных ячейках. x=0.1:0.2:1.9; y=[4 126 230 260 130 120 50 30 30 20]; e=sqrt(y); errorbar(x,y,e) set(gca,'FontName','Arial Cyr'); xlabel('Проницаемость, мкм^2') ylabel('Число образцов') title('Данные с указанием статистических ошибок','FontSize',14)
103
Данные с указанием статистических ошибок
300
Число образцов
250
200
150
100
50
0
0
0.5
1 Проницаемость, мкм 2
1.5
2
Рис. 2.5. Приводятся статистические ошибки в отдельных ячейках распределения. Пример 2.10.
Можно сравнить распределение на рис.2.5 с гистограммой, построенной по команде bar: x=0.1:0.2:1.9; y=[4 126 230 260 130 120 50 30 30 20]; e=sqrt(y); errorbar(x,y,e) hold on bar(x,y) set(gca,'FontName','Arial Cyr'); xlabel('Проницаемость, мкм^2') ylabel('Число образцов') title('Данные с указанием статистических ошибок','FontSize',14)
104
Данные с указанием статистических ошибок
300
Число образцов
250
200
150
100
50
0
0
0.5
1 Проницаемость, мкм 2
1.5
2
Рис. 2.6. Сравнение графиков, построенных командами bar и errorbar. Первая точка на рис. 2.5, 2.6 соответствует первой строчке табл. 2.1. Следовательно, в первый интервал ( 0 ≤ k ≤ 0,2 ) попало N1 = 4 образцов горных пород из общего числа N 0 = 1000 . Если мы проведем повторные измерения проницаемости другой совокупности такого же количества пород, то для них мы получим значение N1 , с вероятностью 68% попадающий в интервал N 1 ± N 1 = 4 ± 2 . Аналогично определены стандартные ошибки для остальных девяти точек на рис. 2.5, 2.6. Рассмотрим теперь другой способ представления данных табл. 2.1. На рис.2.5 приводится зависимость абсолютного числа горных пород в зависимости от их проницаемости. Часто для
графической
иллюстрации данных делают нормировку на общее число испытаний. Значения pi = удобный
Ni N0
способ
приводятся в четвертой колонке табл. 2.1. Это представления
данных,
т.
к.
он
показывает
относительную долю образцов, проницаемости которых лежат в данном интервале проницаемостей. В этом случае требуется определить
105
стандартную
ошибку
частного
pi =
Ni N0
.
Проблема
вычисления
погрешности Δp i величины pi является сложной задачей, несмотря на кажущуюся ее простоту. Мы рассмотрим два частных случая: 1. Число N 0 = const , т. е. не является случайной величиной. Тогда в формуле ⎛N Δpi = Δ⎜⎜ i ⎝ N0
т.е. pi ± Δpi =
Ni Ni ± , где ΔN i = N0 N0
⎞ ΔN i ⎟⎟ = ⎠ N0 N i . Для
(6.3) первой строчки табл.
2.1 имеем
p1 ± Δp1 = 0,004 ± 0,002 .
(6.4)
2. Случайное число N 0 распределено по закону Пуассона и N 0 . В этом случае знаменатель
определяется с погрешностью
(6.3) не является постоянной и для вычисления Δp i пользуются теоремой сложения дисперсий, согласно которой, наложение двух случайно распределенных величин X и Y дает третье с распределением случайной величины Z, дисперсия которой есть DZ = D X + DY + 2 K X Y .
(6.5)
Величина K XY называется коэффициентом корреляции. Если X и Y являются независимыми, то K XY равен нулю. Предположим, что случайные числа N i и N 0 независимы. Тогда для дисперсии p i имеем D pi = D N i + D N 0 . Аналогичное равенство справедливо и для квадратов относительных дисперсий:
δ p 2 = δN 2 +δN 2, i
i
0
(6.6)
106
⎛ Δp ⎞
δ p = ⎜⎜ i ⎟⎟ , ⎝ pi ⎠
где
i
ΔN i = N i ,
⎛ ΔN ⎞
⎛ ΔN ⎞
δ N = ⎜⎜ i ⎟⎟ , δ N = ⎜⎜ 0 ⎟⎟ , ⎝ Ni ⎠ ⎝ N0 ⎠ i
(6.7)
0
ΔN 0 = N 0 ,
pi =
Ni . No
(6.8)
Подставляя (6.6) и (6.7) в (6.5) получим формулу для погрешности частного Δpi =
Ni N0
1 1 + . Ni N0
(6.9)
По (6.9) для первой строчки табл. 2.1 получим:
Δp1 =
1 4 1 1 + ≈ 0,004 ⋅ = 0,002 . 2 1000 4 1000
Мы получили значение Δp1 , близкое к (6.4). Как видно из (6.9), такое совпадение возможно только для значений N 0 >> N i . 2.7. Аппроксимация данных по распределению коэффициента проницаемости логнормальным распределением
Для совокупности опытных данных, аналогичных приведенным в табл. 2.1, можно подобрать аппроксимационную функцию. Часто наряду с термином аппроксимация (approximation – аппроксимация, приближение) используются такие его синонимы, как интерполяция (interpolation – интерполяция, вставка) и фитирование (fit – приспосабливать, соответствующий). Очевидно, что выбор аппроксимационной формулы зависит от формы
распределений
анализируемых
данных.
При
этом
исследователи, как правило, пытаются описывать свои данные стандартными,
хорошо
распределениями.
В
случаях,
изученными когда
статистическими
стандартные
функции
распределения дают неудовлетворительное согласие, проводится
107
аппроксимация
данных
полиномами
различных
степеней,
или
другими формулами. В нашем случае, в качестве аппроксимационной зависимости, описывающей данные на рис. 2.1, авторы работы [1] выбрали логнормальное распределение. Здесь отметим, что выбор этого распределения не случаен, и исторически восходит к работе А.Н. Колмогорова [3]. В ней
впервые была указана общая
математическая схема, в рамках которой распределения логарифмов размеров частиц (золотин в золотоносных россыпях, частиц горных пород при их дроблении) подчиняются приближенно закону Гаусса. Функция плотности вероятности этого распределения задается в системе MATLAB командой lognpdf и имеет вид ⎛ (ln x − m )2 L( x) = exp⎜⎜ − 2σ 2 xσ 2π ⎝ 1
⎞ ⎟, ⎟ ⎠
(7.1)
где x > 0 , а ее математическое ожидание и дисперсия определяются формулами
⎛σ 2 ⎞ m = exp⎜⎜ + m ⎟⎟ , ⎝ 2 ⎠
D = eσ
и Для
2
+2m
(e
σ2
(7.2)
)
−1 .
функции L( x ) выполняется условие нормировки:
(7.3) ∞
∫ L(x )dx = 1 . 0
Поэтому, для сравнения L ( x ) с экспериментальным распределением на рис. 2.1 нужно помножить L ( x ) на N 0 . Такое сравнение делается рис. 5. Параметры m и σ распределения (7.1) можно выразить через m и
D , решая совместно (7.2) и (7.3): ⎞ ⎛ m2 ⎟, m = ln⎜⎜ ⎟ 2 ⎝ m +D⎠
(7.4)
108
⎛ ⎝
σ = ln⎜1 +
D ⎞ ⎟. m2 ⎠
(7.5)
Заменим в формулах (7.4) и (7.5) математическое ожидание m и дисперсию
D экспериментальным средним < k >= 0,783 мкм 2 и
~ экспериментальной дисперсией D = 0,144 мкм 4 (см. (2.2, 2.5)), и
подставим полученные значения параметров m и σ в (7.1): ⎛ ⎞ 0,783 2 ⎜ ⎟ ≈ −0,350 , m = ln ⎜ 0,783 2 + 0,144 ⎟ ⎝ ⎠
⎛
0,144 ⎞
⎝
⎠
σ = ln⎜⎜1 + ⎟ ≈ 0,459 . 0,783 2 ⎟
Таким образом, мы получим распределение (7.1), которое имеет те же значения средней проницаемости и дисперсии, что и опытные данные на рис. 2.1, 2.5. Следовательно, мы можем, отождествляя в (7.1) переменную x с проницаемостью k , наложить аппроксимационное распределение (7.1) на один из этих рисунков. К сожалению, команда errorbar системы MATLAB, по которой нарисован рис. 2.5 не
допускает построение двух кривых на одном рисунке, а другая команда
plot, которая имеет
такую возможность, не рисует
статистические ошибки на экспериментальных точках. Совместить результаты этих команд можно с помощью команды hold on, использованной в примере (2.10). Пример 2.11. clear; for i=1:4, x(i)=0.1;end for i=5:130, x(i)=0.3;end for i=131:360, x(i)=0.5;end for i=361:620, x(i)=0.7;end for i=621:750, x(i)=0.9;end for i=751:870, x(i)=1.1;end for i=871:920, x(i)=1.3;end for i=921:950, x(i)=1.5;end for i=951:980, x(i)=1.7;end
109
for i=981:1000, x(i)=1.9;end %Вычисление среднего и дисперсии mx=mean(x); v=var(x); x=0.1:0.2:1.9; y=[4 126 230 260 130 120 50 30 30 20]; e=sqrt(y); errorbar(x,y,e) hold on %Построение графика логнормального распределения и опытного распределения проницаемостей. m2=mx^2; m1=log(m2/(m2+v)^.5); s1=sqrt(log((v+m2)/m2)); f=lognpdf(x,m1,s1)*.2*1000; plot(x,f),grid set(gca,'FontName','Arial Cyr'); xlabel('Проницаемость, мкм^2','FontSize',12) ylabel('Число образцов','FontSize',12) title('Аппроксимация данных логнормальным распределением','FontSize',14)
Аппроксимация данных 300
логнормальным распределением
Число образцов
250
200
150
100
50
0
0
0.5
1
Проницаемость, мкм
1.5
2
2
Рис. 2.7. Сравнение экспериментального распределения с логнормальным.
110
На
рис.
2.7
делается
сравнение
экспериментальной
и
аппроксимационной распределений по проницаемости горных пород. Их визуальное сравнение позволяет сделать вывод об их достаточно удовлетворительном согласии. Такой же вывод о справедливости применения логнормального распределения для описания данных табл. 2.1 делается в монографии [1]. Правда в ней сравниваются не сами исходные распределения, а рассматривается
диаграмма
квантилей этих распределений. Очевидно, что наш вывод о согласии данных на рис. 2.7, так же как и вывод авторов [1] является качественным, т. к. не определены количественные характеристики, являющиеся критерием согласия сравниваемых распределений. Для этих целей часто пользуются критериями согласия, наиболее популярным из которых является критерий Пирсона или критерий
χ 2 (хи-квадрат).
2.8. Сравнение с логнормальным распределением по критерию
χ2 Cлучайные
величины,
подчиняющиеся
нормальному
распределению, часто сопряжены с другими распределениями. В первую очередь это распределение Стьюдента, рассмотренное в п. 2.4, 2 2 и распределение χ . χ - распределение с r степенями свободы
определяется распределением квадратов r независимых случайных величин, каждая из которых подчинена нормальному закону с математическим ожиданием, равным нулю, и дисперсией, равной единице. Функция плотности вероятности распределения имеет вид
111
Pχ 2 (u, r ) =
∞
1 r 2
⎛r⎞ 2 Γ⎜ ⎟ ⎝2⎠
u
r u −1 − 2 2
e
,
(8.1)
r
−1 ⎛r⎞ −x где u > 0 , Γ⎜ ⎟ = ∫ x 2 e dx - гамма-функция, r = n − 2 . ⎝2⎠ 0
Математическое ожидание и дисперсия этого распределения равны r и 2r соответственно. Для
того
чтобы
сравнить
опытное
распределение
по
проницаемостям пород с логнормальным распределением (рис. 2.7) введем величину U , которая характеризует их относительное отклонение в каждой из десяти точек: 10
(N i − N 0 Li )2
i =1
N 0 Li
U ≡χ =∑ 2
где
,
(8.2)
N i - ордината экспериментального распределения на рис. 2.7,
приведенные в табл. 2.1; N 0 = 1000 - общее число исследованных горных пород; Li - функция плотности вероятности логнормального распределения
(7.1),
отвечающие
значениям
аргумента
x ,
отождествляемого с проницаемостью пород k . Отметим, что число степеней свободы r в (8.1) определяется через число
экспериментальных
гистограмма).
В
(8.1)
n (или колонок, если это
точек r =n−2
,
т.к.
подстановка
в
(8.2)
экспериментальной средней и дисперсии накладывает на исходные данные два условия связи, и число независимых данных уменьшается. 2 Из тождественной замены величины U на χ в (8.2) следует, что
правая часть (8.2) является случайным числом, подчиняющимся распределению (8.1). Величина
N i − N 0 Li в формуле (8.2) является
искомой мерой отклонения теоретического и экспериментального распределений,
но
она
является
знакопеременной,
и
при 112
суммировании по всем значениям компенсируются отчасти. Поэтому эта разность возводится в квадрат. Произведение
N 0 Li
дает
теоретическое значение числа горных пород, проницаемости которых лежат в i - том интервале (см. табл. 2.1). В (8.2) разность квадратов 2 сравниваемых величин относится к N 0 Li , чтобы величина χ 2 отражала реальный масштаб величин. По-существу, χ определяется
как сумма относительных дисперсий. В силу громоздкости вычислений мы не будем прослеживать все 2 этапы вычисления χ по формуле (8.2), Приведем первое слагаемое
χ : 2
U1
(4 − 10 =
⋅ 2,109 ⋅ 10 −4 10 3 ⋅ 2,109 ⋅ 10 − 4 3
)
2
≈ 68,09 . В табл. 2.3 приводятся
значения U i для каждой из десяти точек рис. 2.7. Таблица 2.3
1
i
68,09
Ui
2
3
4
5
5,07 4,08
0,59
8,33
6
7
4,61 0,45
8 0
9
10
11,51 13,79
Просуммируем эти данные по всем ячейкам: 10
χ = ∑ U i = 68,09 + 5,071 + 4,077 + 0,594 + 8,333 + 4,607 + 0,451 + 0 + 2
i =1
+ 11,51 + 13,79 ≈ 116 ,51 .
Величина
χ 2 = 116,51
характеризует
(8.3) степень
отклонения
экспериментального и теоретического распределений. Очевидно, что чем она больше, тем больше расхождение между сравниваемыми распределениями. Но достаточно ли она мала, чтобы принять утверждение о совпадении сравниваемых распределений? Для ответа 2 на вопрос вычислим, используя (8.1), критическую величину χ кр ,
вероятность превышения которой составляет всего 0,1%:
113
χ 2 кр
0,001 = 1 −
∫ Pχ (u, r )du ,
(8.4)
2
0
где r = 10 − 2 = 8 . Такое вычисление легко проделать с использованием команды chi2cdf. Пример 2.12.
Определим критическую величину
χ 2 кр , вероятность превышения
которой составляет 1 − 0,999 = 0,001 . Число степеней свободы r = 8 . x = chi2inv(0.999,8) x = 26.1245 Пример 2.13.
Решим задачу, обратную 2.12. Определим вероятность превышения заданной критической величины: p1=chi2cdf(26.1,8); p=1-p1 p = 0.0010
Следовательно, для распределений на рис. 2.7 критическое значение составляет
χ 2 кр = 26,124 .
(8.5)
Из сравнения (8.3) и (8.5) следует, что величина χ 2 = 116,51 существенно превышает критическую величину, и мы не можем утверждать, что распределение числа образцов горных пород по проницаемости Соответствующая
описывается величине
логнормальным
χ 2 = 116,51
распределением.
значение
вероятности
настолько мала, что команда chi2cdf выдает нулевое значение. 2 Отметим, что для χ кр = 80 вероятность составляет всего 4,9 ⋅ 10 −14 :
114
Пример 2.14. format long p1=chi2cdf(80,8); p=1-p1 p =
На
4.884981308350689e-014 первый взгляд низкий уровень
согласия
распределений
представляется неправдоподобным, т.к. из рис. 2.7 визуально следует удовлетворительное согласие эксперимента и аппроксимационной функции. Если проанализировать вклад каждой из десяти точек на рис. 2.7 в величину χ 2 = 116,51 , то из (8.3) видно, что существенный вклад в нее вносят первая и две последние точки. Здесь отметим следующую особенность представления данных рис. 2.7. Они представлены в линейном масштабе и в силу малости их абсолютной разности значения ординат в первой точке кажутся совпадающими: 4 − 0,211 = 3,789
.
Если
представить
те
же
данные
в
полулогарифмическом масштабе (см. рис. 2.8), то мы увидим сравнительно большое относительное отклонение данных в первой и 2 двух последних точках. Это значит, что в критерии χ на степень
согласия данных влияют их относительные отклонения друг от друга, что также следует из (8.2). Пример 2.15. clear; mx=0.783; v=0.144; x=0.1:0.2:1.9; y=[4 126 230 260 130 120 50 30 30 20]; %Построение графика логнормального распределения и опытного распределения проницаемостей в полулогарифмическом масштабе. m2=mx^2; m1=log(m2/(m2+v)^.5); s1=sqrt(log((v+m2)/m2)); f=lognpdf(x,m1,s1)*.2*1000; 115
plot(x,log(f),x,log(y)),grid set(gca,'FontName','Arial Cyr'); xlabel('Проницаемость, мкм^2','FontSize',12) ylabel('Число образцов','FontSize',12) title('Аппроксимация данных логнормальным распределением','FontSize',14) Аппроксимация данных 6
логнормальным распределением
5
Число образцов
4 3 2 1 0 -1 -2
0
0.5
1
Проницаемость, мкм
1.5
2
2
Рис. 2.8. Сравнение экспериментального распределения с логнормальным в полулогарифмическом масштабе. 2 Говоря о критерии χ , хотелось бы отметить одну ее особенность.
Для вычисления искомых вероятностей он предполагает наличие специальных таблиц, которые с разной степенью полноты приводятся в специальных справочниках. Или же, как в нашем случае, нужно иметь соответствующее математическое обеспечение на компьютере. В случае, когда такие источники информации отсутствуют, но 2 значение χ и число степеней свободы r известны, критерием
хорошего согласия распределений может служить приближенное 2 2 равенство χ ≈ r . Если же χ << r , то согласие сравниваемых
распределений считается неправдоподобно хорошим.
116
Пример 2.16. 2 Если χ = r , то вероятность превышения критической величины
составляет примерно 43%: format short p1=chi2cdf(8,8); p=1-p1 p = 0.4335 Пример 2.17. 2 Приведем χ -распределение для r = 8 .
x = 0:0.2:40; y = chi2pdf(x,8); plot(x,y), grid xlabel('{\chi}^2'); ylabel('y');
0.12
0.1
y
0.08
0.06
0.04
0.02
0
0
5
10
15
20
25
30
35
40
χ2
2 Рис.2.9. χ -распределение для r = 8 . Из рисунка следует низкая вероятность превышения критической величины χ 2 = 116,51 .
Примечание: Ось обсцисс подписана с помощью редактора Latex.
117
2 В заключение отметим, что критерий χ является одним из
наиболее популярных тестов, который используется для анализа данных. Наряду с ним нередко используется критерий КолмогороваСмирнова. Пример 2.18.
Определим параметры логнормального распределения. Используя параметры m1 и s1 предыдущего расчета, проведем фитирование зависимости y ( x )
логнормальным распределением с помощью
приложения Curve Fitting Toolbox. clear; % Средняя величина и дисперсия mx=0.783; v=0.144; x=0.1:0.2:1.9; y=[4 126 230 260 130 120 50 30 30 20]; m2=mx^2; m1=log(m2/(m2+v)^.5) s1=sqrt(log((v+m2)/m2)) % f=lognpdf(x,m1,s1)*.2*1000; cftool m1 =
-0.3501 s1 = 0.4593
В рабочем окне Curve Fitting Toolbox→Data выводится зависимость y ( x ) , которую можно аппроксимировать функцией, не входящей в
стандартный набор функций, приведенных в New Fit. Для этого в опции Type of fit нужно выбрать Custom Equations. После команды New Equation
открывается
логнормальное
окно
на
распределение
рис. с
2.10,
в
которой
параметрами
m1
задается и
s1
.
Аппроксимационная зависимость сохраняется в окне Fitting на рис. 2.11, и после команды Apply логнормальное распределение накладывается на 118
экспериментальные точки (рис. 2.13). Значения коэффициентов a и c, а также
их
доверительные
интервалы
приводятся
на
рис.
2.12.
Доверительная вероятность равна 95%. Видно, что в пределах ошибок коэффициент a согласуется со значением 200, а с – с нулем.
Рис. 2.10. Задается вид аппроксимационной функции.
119
Рис. 2.11. Аппроксимационная функция задана.
120
Рис. 2.12. Определение коэффициентов аппроксимационной функции.
121
Рис. 2.13. Сравнение аппроксимационной функции с результатми измерений. 2.9. Критерий Колмогорова - Смирнова
Проанализируем
степень
согласия
опытного
и
аппроксимационного распределений на рис. 2.7 с помощью критерия Колмогорова-Смирнова. Он основан на сравнении кумулятивных распределений,
соответствующих
исходным
сравниваемым
распределениям на рис. 2.7. Для этого исходные распределения должны быть нормированы так, чтобы они имели смысл плотности вероятности. В такой форме и представлены данные в четвертой колонке ( p i ) табл. 2.1 по проницаемостям горных пород.
122
Кумулятивная
функция,
определяется как Fj =
соответствующая
распределению
pi ,
10
∑p i =1
i
. Например,
F3 = p1 + p 2 + p3 = 0,004 + 0,126 + 0,230 = 0,360 .
Аналогично
определяется
кумулятивная
логнормального распределения приведены в табл. 4. экспериментальным
функция
Zj
для
(7.1). Значения этих функций
В качестве меры расхождения между
и
аппроксимационным
распределениями,
в
данном методе рассматривается максимальное значение модуля их разности. В табл. 2.4 приводятся значения разностей этих функций: Di = Fi − Z i .
Таблица 2.4 i
pi
Fi
Li
Zi
Di = Fi − Z i
1
0,004
0,004
2,109 ⋅ 10 −4
2,109 ⋅ 10 −4
3,789 ⋅ 10 −3
2
0,126
0,130
0,103
0,1032
2,666 ⋅ 10 −2
3
0,230
0,360
0,263
0,366
6,073 ⋅ 10 −3
4
0,260
0,620
0,248
0,614
6,063 ⋅ 10 −3
5
0,130
0,750
0,167
0,781
3,128 ⋅ 10 −2
6
0,120
0,870
9,868 ⋅ 10 −2
0,880
9,958 ⋅ 10 −3
7
0,050
0,920
5,498 ⋅ 10 −2
0,935
1,494 ⋅ 10 −2
8
0,030
0,950
2,999 ⋅ 10 −2
0,965
1,493 ⋅ 10 −3
9
0,030
0,980
1,630 ⋅ 10 −2
0,981
1,229 ⋅ 10 −3
10
0,020
1,000
8,914 ⋅ 10 −3
0,990
9,857 ⋅ 10 −3
Видно,
что
максимальная
D = D5 = 3,128 ⋅ 10 −2 .
разность
приходится
на
величину
Определив, таким образом, величину
D
сформулируем основную сущность критерия согласия Колмогорова123
Смирнова в виде следующего утверждения. Для любой теоретической функций распределения Z i , при неограниченном возрастании числа измерений N 0 вероятность неравенства D N0 ≥ λ
(9.1)
стремится к пределу W (λ ) = 1 −
∞
∑ (−1)
k
e −2k
2 2
λ
.
(9.2)
k = −∞
Значения W (λ ) , определенные по (9.2) приведены в табл. 2.5.
λ = D N 0 = 3,128 ⋅ 10 −2 1000 ≈ 0,989 ≈ 1 .
Определим величину
Соответствующая ей величина искомой вероятности определяется по данным табл. 2.5: W (λ = 1) = 0,27 . Или, если вероятность определяется в процентах, то W (λ = 1) = 27% . Таблица 2.5 λ
W (λ )
λ
W (λ )
λ
W (λ )
0,0
1,000
0,7
0,711
1,4
0,040
0,1
1,000
0,8
0,544
1,5
0,022
0,2
1,000
0,9
0,393
1,6
0,012
0,3
1,000
1,0
0,270
1,7
0,006
0,4
0,997
1,1
0,178
1,8
0,003
0,5
0,964
1,2
0,112
1,9
0,002
0,6
0,864
1,3
0,068
2,0
0,001
Таким образом, мы получили сравнительно высокую степень согласия экспериментальной и аппроксимационной распределений на 2 рис. 2.7 по критерию Колмогорова-Смирнова, тогда как критерий χ
практический исключает возможность аппроксимации данных опыта логнормальным распределением.
124
В критерии согласия Колмогорова-Смирнова, также как и в критерии
χ 2 , нет выделенной величины вероятности W (λ ) , начиная с которой гипотеза о согласии двух распределений становится правдоподобной, или наоборот. Критерием согласия в обеих методах является вероятность W (λ ) .
Критерий Колмогорова-Смирнова следует применять только в
тех случаях, когда вид аппроксимационного распределения известен заранее из каких-либо теоретических соображений. В нашем случае, выбирая в качестве такой функции логнормальное распределение (7.1), мы подставляем в нее приближенные значения средней проницаемости и ее дисперсии, которые определены из опыта. В таких случаях критерий Колмогорова-Смирнова дает, как
правило, завышенное значение
вероятности W (λ ) , т.е. степени согласия. 2 2.10. Сравнение с гамма-распределением по критерию χ
В этом параграфе проводится тест по аналогии с п. 2.8. Только вместо логнормального распределения в качестве аппроксимационной кривой рассматривается гамма-распределение с функцией плотности вероятностей
λα G( x) = x α −1e− λx , Γ( α )
(10.1)
∞
где
Γ(α ) = ∫ x α −1e− x dx – гамма-функция, 0
m =
α α – математическое ожидание, D = 2 – дисперсия. λ λ
Выразим α и λ через m и D :
m2 m α = , λ= . D D
(10.2)
125
Заменим m и D в (10.2) через среднюю проницаемость и дисперсию, определенные из опыта (см. (2.2) и (2.5)):
0,783 α = ≈ 4,258 , 0,144
0,7832 λ= = 5,437мкм−1 . 0,144
(10.3)
Пример 2.19.
Сравнение распределения коэффициента проницаемости горных пород с гамма-распределением (10.1) с параметрами (10.3). Результат приводится на рис. 2.14: x=0.1:0.2:1.9; y1=[.004 .126 .23 .26 .13 .12 .05 .03 .03 .02]; mx=.783; D=.144; %Гамма-распределение alpha=mx^2/D lm=mx/D x1=200*x.^(alpha-1); x2=exp(-lm*x); x3=lm^(alpha); g=gamma(alpha); f=x1.*x2*x3/g; plot(x,f,x,1000*y1),grid set(gca,'FontName','Arial Cyr'); xlabel('Проницаемость, мкм^2','FontSize',12) ylabel('Число образцов','FontSize',12) title('Аппроксимация данных гаммараспределением','FontSize',14) cftool alpha = 4.2576 lm = 5.4375
126
Аппроксимация данных гамма-распределением
300
Число образцов
250
200
150
100
50
0
0
0.5
1
Проницаемость, мкм
1.5
2
2
Рис. 2.14. Фитирование распределения по проницаемости образцов горных пород гамма-распределением.
Рис. 2.15. Фитирование экспериментальных точек гамма распределением с помощью приложения cftool. 127
На рис. 2.15 делается сравнение экспериментальных точек с гаммараспределением. Аппроксимационная кривая построена с помощью cftool (см. рис. 2.10−2.13 для логнормального распределения). Только
вместо lognpdf(x,-0.3501,0.4593) нужно задать команду построения гамма-распределения: b=
1
λ
=
gampdf(x,a,b),
a = α = 4,2576
где
и
1 = 0,1839 . 5,4375
2 Вычисления по критерию χ делаются здесь по той же схеме, что и в
п. 2.8. Поэтому приводятся основные результаты расчетов. В табл. 2.6 приводятся значения параметра U i =
(N i
− N 0Li ) N 0Li
2
для каждой из
десяти точек табл. 2.1. Таблица 2.6 i
1
2
Ui
4,00
0,0028
3
4
5
6
7
8
0,24 0,56 10,09 0,67 3,35 0,69
9
10
8,59
15,23
Сумма данных по всем ячейкам дает:
χ = 2
10
∑U i =1
i
= 48,47 .
(10.4)
Соответствующую этой величине вероятность можно вычислить по χ2
формуле (8.3):
1−
∫ Pχ (u, r )du = 8,032 ⋅ 10 2
−8
.
(10.5)
0
Пример 2.20.
Вычислим (10.5) по аналогии с примером (2.14). p1=chi2cdf(48.47,8); p=1-p1 p = 8.0321e-008
128
Из сравнения полученного результата с тем, что получено для логнормального распределения в примере (2.14) следует, что данные таблицы 2.1 лучше описываются гамма-распределением, нежели логнормальным, хотя в обоих случаях степень согласия является низкой. 2.11. Аппроксимация данных по распределению коэффициента проницаемости полиномом
Желание
исследователей
стандартными основные
статистическими
характеристики
описывать
результаты
распределениями
хорошо
изучены.
В
опытов
понятно. ряде
Их
случаев,
статистические функции, согласующиеся с экспериментальными данными,
позволяют
выявлять
динамические
процессы,
обуславливающие флуктуации физических величин. Но в тех случаях, когда экспериментальное распределение имеет сложную форму и не описывается стандартной функцией распределения, все-таки удобно иметь
аппроксимационную
описывающую
данные.
аппроксимационной
В
функции
формулу, таких выбирают
удовлетворительно
случаях,
в
полиномы
качестве различных
степеней:
Pn ( x ) = p1x n + p2 x n −1 + ... + pn x + pn +1 .
(11.1)
Полиномами пользуются не случайно. Их легко вычислять, совершать над
ними
арифметические
операции,
дифференцировать
и
интегрировать. Дальнейшее описание сводится к тому, что выбирается степень n полинома,
и
определяются
соответствующие
коэффициенты
p1 , p2 ,..., pn + 1 , для которых получается наилучшее согласие (11.1) с
опытом. Очевидно, что для описания данных на рис. 2.1 полином
129
первой степени ( n = 1 ) не подходит, т. к. P1 ( x) = p1 x + p 2 является уравнением прямой. Естественно, что чем большее значение n (11.1),
тем
больше
неопределенных
коэффициентов.
в
Значит,
возрастает число степеней свободы, позволяющих более точно «подогнать» (11.1) под экспериментальное распределение. Наиболее сложная часть этой задачи – это вычисление коэффициентов. Но в нашем случае она упрощена из-за того, что система MATLAB располагает соответствующей командой polyfit, которая вычисляет коэффициенты в (11.1) для заданной степени n , обеспечивающие возможное наилучшее согласие полинома с данными эксперимента. На рис. 2.16 приводится полином третьей степени, полученный по команде polyfit по данным таблицы 2.1. Видно, что полином примерно повторяет ход экспериментальной кривой. Пример 2.21. x=0.1:0.2:1.9; y1=1000*[.004 .126 .23 .26 .13 .12 .05 .03 .03 .02]; d=polyfit(x,y1,3) f=polyval(d,x) plot(x,f,x,y1) set(gca,'FontName','Arial Cyr'); title('Аппроксимация данных полиномом степени n','FontSize',14) xlabel('Проницаемость, мкм^2','FontSize',12) ylabel('Число образцов','FontSize',12) d = 1.0e+003 * 0.3799 -1.3039 1.1798 -0.1016 f = Columns 1 through 5 3.7203 145.2448 209.8089 215.6480 180.9977 Columns 6 through 10 124.0932 63.1702 16.4639 2.2098 38.6434
130
Аппроксимация данных полиномом степени n
300
Число образцов
250
200
150
100
50
0
0
0.5
1
Проницаемость, мкм
1.5
2
2
Рис. 2.16. Аппроксимация экспериментальных данных полиномом третьей степени. Соответствующее аналитическое выражение, полученное с помощью polyfit, имеет вид
P3 ( x ) = 379,90 x n − 1303,92 x n −1 + 1179,80 x − 101,60 .
(11.2)
Видно, что полином примерно повторяет ход экспериментальной кривой. Проверим степень их согласия, по аналогии с пп. 2.8, 2.10. 2 Для числа степеней свободы r = 8 получается значение χ ≈ 400 . Т.к.
χ 2 >> r полином (11.2) дает плохое согласие с экспериментом. Степень согласия уменьшается для полиномов более высокого порядка, например, n = 7 : Пример 2.22. x=0.1:0.2:1.9; y1=1000*[.004 .126 .23 .26 .13 .12 .05 .03 .03 .02]; d=polyfit(x,y1,7) f=polyval(d,x) plot(x,f,x,y1) set(gca,'FontName','Arial Cyr'); title('Аппроксимация данных полиномом степени n','FontSize',14) xlabel('Проницаемость, мкм^2','FontSize',12) 131
ylabel('Число образцов','FontSize',12) d = 1.0e+004 * Columns 1 through 5 -0.1443
1.0983
-3.4062
5.4788
-4.7614
244.7775
232.3594
161.2008
29.8799
29.2972
20.1595
Columns 6 through 8 2.0582
-0.3276
0.0169
f = Columns 1 through 5 4.5733
121.5728
Columns 6 through 10 99.0593
57.1204
Аппроксимация данных полиномом степени n
300
Число образцов
250
200
150
100
50
0
0
0.5
1
Проницаемость, мкм
1.5
2
2
Рис. 2.17. Аппроксимация экспериментальных данных полиномом седьмой степени. В этом случае имеем
P7 ( x ) = −1,443 ⋅ 10 3 x 7 + 1,098 ⋅ 10 4 x 6 − 3,406 ⋅ 10 4 x 5 + 5,479 ⋅ 10 4 x 4 −
− 4,761 ⋅ 10 4 x 3 + 2,058 ⋅ 10 4 x 2 − 3,276 ⋅ 103 x + 169 .
(11.3) 132
Визуальная оценка расчетной и экспериментальной кривых на рисунках 2.16 и 2.17 показывает, что согласие в 2.17 лучше. 2 Количественный анализ согласия данных на рис. 2.17 по критерию χ
дает
χ 2 ≈ 15,8
величину
правдоподобности
гипотезы
.
Соответствующая описания
вероятность
экспериментального
распределения полиномом (11.3) вычисляется аналогично (10.5): χ2
1 − ∫ Pχ 2 (u , r )du ≈ 0,045 ,
(11.4)
0
где r = 8 . Таким образом, мы получили, что гипотеза о совпадении данных таблицы 1 с полиномом (11.3) выполняется с вероятностью ≈ 4,5% . Это достаточно хорошее совпадение, по крайней мере, если сравнивать с соответствующими оценками для логнормального и гамма-распределений, рассмотренными выше. Мы привели результаты аппроксимации данных полиномами третьей и седьмой степени. Анализ полиномов с другими степенями показывает, что с ростом n , имеется тенденция к лучшему описанию опыта полиномом. Такое утверждение следует из таблицы 2.7, где 2 приведены результаты сравнения по χ , полученные для различных 2 значений n . Из таблицы 2.7 также следует, что величины χ падают 2 не монотонно с ростом n . Например, из сравнения величин χ для
n = 2 и n = 3 следует, что полином меньшей степени как бы лучше согласуется с опытом, хотя из сравнения
χ 2 с числом степеней
свободы r = 8 следует, что оба полинома дают низкую степень согласия. Хотелось бы также указать на отрицательное значение
χ 2 = −127,1 , полученное для n = 5 , чего на самом деле быть не должно, т.к. при этом вероятностная интерпретация данного теста 133
теряет смысл. Как выяснилось, такая ситуация связана с тем, что полином P5 ( x) принимает в одной из десяти фитируемых точек отрицательное значение, малое по абсолютной величине. Повидимому, это связано с тем, что команда polyfit возвращает приближенные результаты, так же, как и любая компьютерная программа. Из таблицы 2.7 также следует, что в случае n ≥ 9 полиномы
практически
сливаются
с
экспериментальным
распределением, и их невозможно различить на графике. Таблица 2.7 4 5
n
1
2
3
χ2
455,4
178,9
400,5
21,1
-127,1
n
6
7
8
9
10
χ2
22,3
15,8
20,2
1,87 ⋅ 10 −15
4,47 ⋅ 10 −17
Аппроксимация данных полиномами, или как иначе говорят, полиномальная интерполяция является глобальной задачей. Это значит, что одна полиномальная функция должна проходить через все заданные точки на графике. Если количество точек сравнительно мало, то такой метод достаточно эффективен, но с увеличением числа точек возникает необходимость введения полиномов более высоких степеней. Из таблицы 7 следует, что начиная примерно с n = 4 и выше, полиномы начинают повторять форму экспериментальной кривой и вплоть до n = 8 степень согласия существенно не меняется. Вообще говоря, специалисты по численному анализу предостерегают от идеи использования интерполянтов степени выше 4 или 5. Альтернативным методом аппроксимации экспериментальных данных является метод так называемых сплайн функций.
134
Примечание: В
возможность
Curve
Fitting
фитирования
Toolbox
данных
предусмотрена
полиномами
с
n≤9
.
Коэффициенты полиномов определяются в окне Fitting →Results. 2.12. Интерполяция кубическим сплайном
Введение сплайнов в методику анализа экспериментальных данных явилось развитием так называемого метода кусочно-линейной интерполяции данных. Название этого метода удачно настолько, что поясняет суть метода: данные интерполируются отрезками, которые соединят между собой исходные точки. Иллюстрацией кусочнолинейной интерполяции является, например, рис. 2.17, на которой десять экспериментальных точек соединены между собой отрезками прямой. В результате получается ломаная линия, производная которой терпит разрыв в точках излома, или, как их иначе называют, в узлах. Следующий
шаг
интерполяции
в
развитии
состоит
во
методики введении
кусочно-линейной кусочно-кубических
интерполянтов, т. е. экспериментальные точки соединяются не отрезками, а полиномами третьей степени. Кубическим сплайном называется кусочно-кубический интерполянт с непрерывными первым и вторым производными. Под термином сплайн в научной литературе подразумевается, как правило, кубический сплайн, если это не оговаривается. На практике встречаются сплайны как низких, так и более
высоких
степеней.
Система
MATLAB
позволяет
интерполировать данные, которые задаются в виде численного массива данных кубическим сплайном с помощью команды spline. На рис. 2.18 приводится результат интерполяции данных таблицы 1 по этой
команде.
иллюстрацию
Команда и
не
сплайн
позволяет
выдает
только
получить
графическую
коэффициенты
в
аппроксимационной функции, которую можно было бы использовать 135
в
дальнейшем.
Но
система
MATLAB
располагает
такими
возможностями. В частности коэффициенты можно получить с помощью вспомогательной функции unmkpp. В рассматриваемом нами случае число интерполируемых точек равно десяти, и они соединяются девятью полиномами третьей степени. Для каждого из них нужно вычислить три коэффициента (без свободного члена). Таким образом, для аналитического описания сплайна на рис. 2.18 требуется
27
коэффициентов,
которые
можно
привести
при
необходимости. Пример 2.23. x=[0.1 .3 .5 .7 .9 1.1 1.3 1.5 1.7 1.9]; y=[.004 .126 .23 .26 .13 .12 .05 .03 .03 .02]; xi=0.1:.001:1.9; f=1000.*spline(x,y,xi); plot(x,1000*y,'o',xi,f,'g'),grid set(gca,'FontName','Arial Cyr'); title('Интерполирование данных кубическим сплайном','FontSize',14) xlabel('Проницаемость, мкм^2','FontSize',12) ylabel('Число образцов','FontSize',12) Интерполирование данных кубическим сплайном
300
Число образцов
250
200
150
100
50
0
0
0.5
1
Проницаемость, мкм
1.5
2
2
Рис. 2.18. Аппроксимация экспериментальных данных сплайном.
136
Примечания:
1.
Параметр xi задает количество точек, через которые
проводится интерполяционная функция; 2.
В
Curve Fitting Toolbox
предусмотрена
возможность
фитирования сплайном с помощь опции Smoothing Spline. 2.13. Метод Монте-Карло
В первой части мы уже пользовались методом Монте-Карло, когда производили розыгрыш скоростей молекул идеального газа. В силу важности метода вернемся к ней еще раз. Математическая статистика рассматривает обобщенные алгоритмы, позволяющие количественно прогнозировать динамический исход различных
математических
моделей. При этом часто оперируют моментами соответствующих статистических
распределений.
Такие
методы
являются
аналитическими. Наряду с ними существует более реалистичный статистический метод. Он позволяет получать не только моменты распределений, но и воспроизводить искомые
распределения для
ограниченной выборки. Это метод Монте-Карло, и по существу является
одним
из
самых
мощных
статистических
методов
исследования статистических распределений. В его основе лежит программа – генератор случайного числа. При обращении к ней она равновероятно выдает случайное число ξ из интервала ξ = [0 ÷ 1] . Случайные
числа
могут
также
подчиняться
различным
статистическим распределениям. В системе MATLAB практически для всех известных распределений имеется генератор случайного числа.
Рассмотрим
равновероятное
распределение
ξ .
Если
распределение f ( x ) задано, то
137
x
∫ f ( x)dx
0 ∞
∫ f ( x)dx
=ξ
.
(13.1)
0
∞
Пусть C = ∫ f ( x)dx , F ( x) = 0
f ( x) . C
Перепишем (13.1) в виде
x
∫ F ( x)dx = ξ .
(13.2)
0
∞
Для F ( x ) является условие нормировки
∫ F ( x)dx = 1 .
Из (13.2)
0
следует, что случайное число ξ равна площади под F ( x ) в пределах
[0 ÷ x ] . Величина x , получаемое из (13.2), и есть случайная величина. Пример 2.24
Формула
(7.1)
описывает
функцию
плотности
вероятности
логнормального распределения. Его параметры , полученные по данным таблицы 1, равны m = −0,350 и σ = 0,459 . Обращение к команде k = lognrnd(-0.35, 0.459) k = 0.5778
возвращает значение k=0,5778. При последующих обращениях мы получим
другие
значения.
Из
их
сравнения
со
средней
2 проницаемостью < k >= 0,783 мкм (см. (2.2)) следует, что полученные
значения k концентрируются в окрестности наиболее вероятного значения. Отметим также, что в системе MATLAB имеется набор генераторов случайных чисел, с которыми можно познакомиться в разделе Help системы MATLAB. По-существу они имеются для всех стандартных статистических распределений. Например – randn – для 138
нормального распределения, gamrnd – для гамма-распределения, chi2rnd – для χ 2 и т.д. Интересно также познакомиться с
приложением randtool, которое запускается в командном окне системы. Оно воспроизводит график для случайной выборки конкретного распределения с заданными параметрами (см. рис. 2.19).
Рис. 2.19. Приложение randtool. Розыгрыш по нормальному распределению со средним 0 и стандартом 1 для 100 событий.
139
Говоря о генераторах случайных чисел, отметим команду, которая не вошла в Statistics Toolbox, а содержится в Communications Toolbox, почему-то.
Это
команда
randint(a,b,[c,d]),
которая
генерирует
случайную матрицу размерностью (a,b), а элементы матрицы принимают значения x в пределах a ≤ x ≤ b . Команда randint(a,b,[c,d]) была бы полезной в примере 1.42 при розыгрыше номеров вопросов в исходных файлах. Но поскольку в нашей комплектации системы Communications Toolbox не содержится, то и не было возможности
воспользоваться командой randint(a,b,[c,d]), и пришлось написать соответствующий блок в программе розыгрыша экзаменационных билетов.
140
ПРИЛОЖЕНИЕ
В этом разделе обсуждаются вопросы, связанные с распределением Пуассона и нормальным распределением (его часто называют также распределением
Гаусса).
Эти
распределения
имеют
общее
происхождение, хотя применяются для анализа явлений, которые могут отличаться принципиально: - Распределение Пуассона – для описания распределения дискретных величин. Примером дискретной величины является, например, число скважин в одном кусте нефтегазового месторождения. - Распределение Гаусса
–
для
описания
непрерывных
статистически независимых величин. Примером непрерывной величины является коэффициент проницаемости пористой среды. В основе обоих двух распределений лежит следующий
закон
распределения результатов опыта. Биномиальное распределение
Пусть производится n независимых испытаний, в каждом из которых событие
A
наступления
может появиться, либо не появиться. Вероятность события
во
всех
испытаниях
постоянна
и
равна
p (следовательно, вероятность не появления q = 1 − p ). Рассмотрим в качестве случайной дискретной величины X число появлений события
A в этих испытаниях. Найдем закон распределения величины X . В n испытаниях, событие A может либо не появиться, появиться 1 раз, либо 2 раза, …, либо
n раз. Вероятности таких исходов вычисляются с
помощью формулы Бернулли:
141
P (n, k ) = Cnk p k ( 1 − p) n − k , k где Cn =
(П 1.1)
n! - число сочетаний из n по k элементов. k! (n − k )!
Распределение называют
вероятностей,
биномиальным
определяемой
формулой
Бернулли
распределением.
Приведем
значения
математического ожидания и дисперсии биномиального распределения:
m = np ,
D = np (1 − p ) . Для иллюстрации на рис. 2.20
приводится
пример биномиального распределения для значений p = 0,2 и n = 300 . Отметим, что степень информативности графика сильно подавлена для значений m ≥ 14 . Поэтому целесообразно такие данные представлять в полулогарифмическом масштабе. Данные на рис. 2.20
получены с
помощью команды binopdf . Пример П.1
Программа построения биномиального распределения (рис. 2.20): x=0:1:19; y=binopdf([0:19],300,0.02); plot(x,y,'b+'),grid set(gca,'FontName','Arial Cyr'); xlabel('Число успешных исходов','FontSize',12) ylabel('Вероятность','FontSize',12) title('Биномиальное распределение','FontSize',14)
142
Биномиальное распределение
0.18 0.16 0.14
Вероятность
0.12 0.1 0.08 0.06 0.04 0.02 0
0
5
10
15
20
Число успешных исходов
Рис. 2.20. Биномиальное распределение.
Распределение Пуассона
Распределение
Пуассона
является
предельным
случаем
распределения Бернулли. Покажем это. Пусть производится n независимых
исследований
образцов
с
целью
измерения
коэффициента проницаемости. Обозначим через m число образцов, проницаемости
которых
лежат
в
заданном
Δk
интервале
проницаемостей. При малых Δk нужно исследовать большое число образцов, чтобы некоторое количество из них имели значения проницаемости в интервале k ÷ k + Δk . Вероятность отбора m образцов
из
n
обозначим
через
p=
m n
.
Далее
сделаем
предположение, что среднее число отборов нужного образца остается неизменным для различных произведение
n⋅p = λ
значений n . Это означает, что сохраняет
постоянное
значение.
Воспользуемся формулой Бернулли для вычисления вероятности:
P (n, m) =
n(n − 1)(n − 2 )... (n − (m − 1)) m n−m p (1 − p ) = m!
143
λ⎞ n(n − 1)(n − 2)... (n − (m − 1)) ⎛ λ ⎞ ⎛ = ⎜ ⎟ ⎜1 − ⎟ m! n⎠ ⎝n⎠ ⎝ m
n−m
.
Далее вычислим предел Π (m) = lim n→∞
=
λm m!
⋅ lim n→∞
λ⎞ n(n − 1)(n − 2 )... (n − (m − 1)) ⎛ λ ⎞ ⎛ P (n, m) = ⎜ ⎟ ⎜1 − ⎟ m! n⎠ ⎝n⎠ ⎝ m
n−m
=
n−m ⎡ ⎛ λ⎞ ⎤ m − 1⎞ ⎛ 1⎞ ⎛ 2⎞ ⎛ ⎟ ⋅ ⎜1 − ⎟ ⎥ = ⎢1 ⋅ ⎜1 − ⎟ ⋅ ⎜1 − ⎟ ⋅ ... ⋅ ⎜1 − n⎠ ⎝ n⎠ n ⎠ ⎝ n ⎠ ⎥⎦ ⎝ ⎢⎣ ⎝
=
n
λm
m! lim n→∞
λ⎞ λ⎞ ⎛ ⎛ ⎜1 − ⎟ ⋅ lim ⎜1 − ⎟ n⎠ n⎠ ⎝ n→∞ ⎝
−m
=
λm m!
⋅ e− λ ⋅ 1 .
Мы получили распределение Пуассона
Π(λ , m) =
λm e− λ m!
.
(П.1.2)
Полученная формула позволяет вычислить вероятность получения m образцов
горных пород,
проницаемости которых попадают в узкий
интервал Δk , если среднее число m таких образцов равно λ . В силу сделанных при получении этого распределения предположений, его часто называют законом редких событий. На рис. 2.21 приводится распределение Пуассона для двух значений
m , полученное с
помощью команды poisspdf. Пример П.3 x=0:20; y1=poisspdf([0:20],2.5); y2=poisspdf([0:20],7.5); plot(x,y1,'b+',x,y2,'b*'),grid set(gca,'FontName','Arial Cyr'); xlabel('Число успешных исходов','FontSize',12) ylabel('Вероятность','FontSize',12) title('Распределение Пуассона','FontSize',14) hgt=gtext('+ - <m>=2,5'); hgt=gtext('* - <m>=7,5'); 144
Распределение Пуассона
0.35 0.3
+ - <m>=2,5 * - <m>=7,5
Вероятность
0.25 0.2 0.15 0.1 0.05 0
0
5
10
15
20
Число успешных исходов
Рис. 2.21. Распределение Пуассона для двух значений средней величины. Нормальное распределение
Нормальное распределение является непрерывным распределением и, в частности, получается из распределения Пуассона при больших значениях m . В этом случае дискретные величины можно рассматривать как непрерывный набор чисел. Для перехода от распределения воспользуемся
Пуассона формулой
к
нормальному
Стирлинга,
распределению
позволяющей
вычислять
факториалы больших чисел:
m! =
2πm ⋅mm e− m ( 1 +
1 1 1 + + + ...) . 2 12m 288m 51840m3
( П.1.3)
Для m > 10 можно ограничиться первым членом ряда. Так в случае
m = 10 относительная погрешность вычислений составляет около 0,8%. Заменим в (П.1.2) m! по формуле Стирлинга (П.1.3): m
p( m) ≈
1 ⎛ λ ⎞ m− λ ⎜ ⎟ e . 2πm ⎝ m ⎠
(П.1.4)
145
Из
приведенных
Стирлинга
выше
следует,
что
рассуждений
относительно
распределение
Пуассона
формулы становится
симметричным примерно при m ≥ 10 . Тогда случайные значения m , которые следуют из этого распределения концентрируются с большей вероятностью в окрестности средней величины λ . С ростом λ относительная ширина области значений m сужается, и при больших λ имеет место соотношение
m−λ
λ
<< 1 . Упростим (П.1.4) используя
это соотношение. Обозначим m − λ = x . Тогда 1 = 2πm
1
≈
2π (λ + x )
1 2πλ
x ⎛ ⎞ + ... ⎟ ≈ ⎜1 − 2λ ⎝ ⎠
1 . 2πλ
(П.1.5)
⎛ m ⎜ 1 ⎛λ⎞ Найдем еще приближенное выражение для ⎜ ⎟ = ⎜ ⎜1 + x ⎝ m⎠ ⎜ λ ⎝
⎞ ⎟ ⎟ ⎟ ⎟ ⎠
λ +x
.
Прологарифмируем последнее выражение:
⎛ ⎜ 1 ln ⎜ ⎜1 + x ⎜ λ ⎝
⎞ ⎟ ⎟ ⎟ ⎟ ⎠
λ+x
⎞ ⎛x x⎞ x2 x2 x3 ⎛ + + ..., = −( λ + x ) ln ⎜1 + ⎟ = −(λ + x )⎜⎜ + 2 + ... ⎟⎟ = − x − λ⎠ 2λ 6λ2 ⎝ ⎠ ⎝ λ 2λ
откуда m
x2
−x − + ... ⎛λ⎞ ⎜ ⎟ = e 2λ . ⎝m⎠
Воспользовавшись
полученными
приближенными
выражениями,
получаем для (П.1.4): x2
p( m) ≈
−x − 1 e 2 λ ex = 2πλ
x2
− 1 e 2λ = 2πλ
− 1 e 2πλ
(m − λ )2 2λ
.
(П.1.6)
146
Сравним полученное выражение с нормальным распределением с функцией плотности вероятности x2
− 1 2 Φ( x ) = e 2σ . σ 2π
(П.1.7)
Как уже отмечалось, распределение Гаусса - непрерывное, т. е. возможные значения случайной величины с плотностью вероятности (П.1.1), принадлежат всей числовой оси. Единственным параметром распределения является стандарт σ . Математическое ожидание
m = 0 , дисперсия D = σ 2 . В случае, когда m ≠ 0 , Φ ( x ) имеет вид − 1 Φ( x ) = e σ 2π
( x − m)2 2σ 2
.
(П.1.8)
Для распределений (П.1.7) и (П.1.8) выполняется условие ∞
∫ Φ( x)dx = 1 .
(П.1.3)
−∞
Распределение Гаусса проиллюстрировано на рис. 2.2 и 2.19. Если в (П.1.6) обозначить λ через σ 2 , то видна полная аналогия между формулами (П.1.6) и (П.1.8). Таким образом, в пределе больших m распределение Пуассона является частным случаем нормального распределения, стандарт которого равен σ = λ , т.е. дисперсия равна средней величине. Вычислим теперь, какая доля всех случайных значений случайной величины находится в пределах m ± σ : 1 P(σ ) = σ 2π
где t =
x
σ
σ
−
∫σ e
x2
2σ 2
2
dx =
π
−
1
⋅∫e
−
t2 2
dt = Φ ( 1) ≈ 0,683 ,
(П.1.4)
0
, Φ( t ) =
2
π
t
−
⋅∫e
t2 2
dt .
(П.1.5)
0
147
Формула
(П.1.5)
называется
интегралом
вероятности
Гаусса.
Результат (П.1.4) получен с помощью команды normcdf: Пример П.4. p=normcdf([-1 1]) prob=p(2)-p(1) p = 0.1587
0.8413
prob = 0.6827
Таким образом, из (П.1.4) следует, что в пределах m ± σ находится примерно 68% всех случайных чисел. Это значит, что интервал m ± σ является 68-процентным доверительным интервалом. В таблице 2.8 приведены аналогичные значения интеграла (П.1.4) в пределах, кратных величине σ . Результаты таблицы получены по команде normcdf, и в силу их практической важности, приведены они достаточно подробно. Таблица 2.8
t
P(x)
σ
1
0,6826894921
2σ
2
0,9544997361
3σ
3
0,9913002039
4σ
4
0,9999366575
5σ
5
0,9999994226
6σ
6
0,99999999802
7σ
7
0,999999999997
x
Из таблицы 2.8 следует, например, что вероятность того, что случайное число не попадает в интервал m ± 3σ примерно равна
148
1- 0,9913=0,0087, т. е. ≈ 0,87% . В этом смысле весьма поучительно ограничение, принятое
в конце 1980-х годов редколлегией
международного физического журнала Physics Letters. В силу большого
числа
экспериментальных
работ,
претендующих
на
открытие аномальных явлений, было принято решение публиковать только те из них, в которых величина наблюдаемого эффекта выходит за пять стандартных отклонений ( 5σ ) от ожидаемого значения.
Литература ко второй главе
1. Гиматудинов Л.И., Ширковский А.И. Физика нефтяного и газового пласта. М.: Недра, 1982, с.44-45. 2. Вентцель Е.С. Теория вероятностей. М.: Наука, 1964, с.324. 3. Колмогоров
А.Н.
О
логарифмически-нормальном
распределения размеров частиц при дроблении.
законе
Доклады АН
ССР, 1941, т. XXXI, №2, с. 99. 4. Тюрин Ю.Н., Макаров А.А. Статистический анализ данных на компьютере. М.: ИНФРА-М, 1998, 514 с. 5. Под редакцией М. Реглера Методы анализа данных в физическом эксперименте. М.: Мир, 1993, 478 с. 6. Баренблат Г.И., Ентов В.М., Рыжик В.М. Движение жидкостей и газов в природных пластах. М.: Недра, 1984, 208 с.
149
БОЗИЕВ Садин Назирович
Профессор кафедры физики РГУ нефти и газа им. И.М. Губкина, т. 930-93-59, [email protected]
MATLAB 2006a в примерах
150