«Решение определенных интегралов методом Монте-Карло» - davaiknam.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Название работы Кол-во страниц Размер
Использование метода Монте-Карло для расчета риска 1 93.89kb.
Концерты в Монте-Карло 1 27.58kb.
Тике. Вычисление двойных интегралов методом ячеек 1 61.8kb.
Направление: 010900 Прикладные математика и физика 1 18.17kb.
Создание Монте-Карло, 1863 – 1866 года 1 119.34kb.
Опера Монте-Карло 1 36.35kb.
Моделирование точечных дефектов в графене и нанографене 1 13.33kb.
Моделирование систем со смешанной валентностью методом Монте-Карло 1 65.56kb.
Лабораторная работа Приближенное вычисление интегралов 1 37.77kb.
2. Вставляем в воронку конус высотой 1 и радиусом 1 1 17.04kb.
Исследование материи в экстремальных состояниях П. Р. Левашов 1, В. 1 22.98kb.
Применение нечетких алгоритмов в условиях неопределенности 1 46.47kb.
Направления изучения представлений о справедливости 1 202.17kb.

«Решение определенных интегралов методом Монте-Карло» - страница №1/1


МиНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ


Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«тюменский государственный нефтегазовый университет»

ИНСТИТУТ МЕНЕДЖМЕНТА И БИЗНЕСА
Кафедра «Математические методы в экономике»

КУРСОВАЯ РАБОТА
по предмету: Программирование
на тему: «Решение определенных интегралов методом Монте-Карло»

Выполнила:

студентка гр. Эбб-11-1

Булаева Н.И.


Руководитель:

Аханова М.А.

Тюмень 2012 г.

Содержание

Введение…………………………………………………………………………………3


  1. Описание предметной области………………………………………………………6

  2. Описание алгоритма программы……………………………………………………..9

    1. Блок схема программы………………………………………………………………9

    2. Основные переменные программы………………………………………………..11

3. Тестирование программы……………………………………………………………14

4. Программное и аппаратное обеспечение…………………………………………..15

5. Руководство пользователя…………………………………………………………..16

6. Заключение…………………………………………………………………………..17

7. Список использованных источников………………………………………………18

8.Приложеник А. Листинг программы……………………………………………….19

9. Приложение Б. Результат выполнения программы……………………………….20

ВВЕДЕНИЕ.

Метод Монте-Карло – это численный метод решения математических задач при помощи моделирования случайных величин.

Датой рождение метода Монте-Карло принято считать 1949 г., когда появилась статья под названием «Метод Монте-Карло» (Н. Метрополис, С. Улам). Создателями этого метода считают американских математиков Дж. Неймана и С. Улама. В нашей стране первые статьи были опубликованы в 1955–56 гг. (В.В. Чавчанидзе, Ю.А. Шрейдер, В.С. Владимиров)

Однако теоретическая основа метода была известна давно. Кроме того, некоторые задачи статистики рассчитывались иногда с помощью случайных выборок, т.е. фактически методом Монте-Карло. Однако до появления ЭВМ этот метод не мог найти сколько-нибудь широкого применения, так как моделировать случайные величины вручную – очень трудоёмкая работа. Таким образом, возникновение метода Монте-Карло как весьма универсального численного метода стало возможным только благодаря появлению ЭВМ.

Само название «Монте-Карло» происходит от города Монте-Карло в княжестве Монако, знаменитого своим игорным домом, а одним из простейших механических приборов для получения случайных величин является рулетка.

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

Метод Монте-Карло оказал и продолжает оказывать существенное влияние на развитие методов вычислительной математики и при решении многих задач успешно сочетается с другими вычислительными методами и дополняет их. Его применение оправдано в первую очередь в тех задачах, которые допускают теоретико-вероятностное описание. Это объясняется как естественность получения ответа с некоторой заданной вероятностью в задачах с вероятностным содержанием, так и существенным упрощением процедуры решения.

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

Объект исследования: определенные интегралы.

Предмет: программирование вычисления определенного интеграла.

Входная информация: подынтегральная функция, интервал интегрирования.

Выходная информация: значение определенного интеграла.

Цель работы: разработка программы для решения определенных интегралов методом Монте-Карло.

Задачи:


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

  • исследовать основные понятия метода Монте-Карло;

  • рассмотреть экономическое применение метода Монте-Карло;

  • автоматизировать метод Монте-Карло для вычисления определённого интеграла в общем виде на языке Turbo Pascal;

  • сделать выводы по выполненной работе, протестировать программу.

Актуальность метода обуславливается широким применением определённого интеграла в экономике, физике, технике и т.д.

Предметная область:

Методы статистических испытаний, называемые также методами Монте-Карло, применяются к решению разнообразных задач вычислительной математики и, в том числе, для вычисления интегралов.

1.ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ.

Рассмотрим один из простых вариантов метода Монте-Карло, который можно интерпретировать как статистический метод прямоугольников. На отрезке интегрирования http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image461.gif выберем N случайных точек http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image507.gif, являющихся значениями случайной величины x с равномерным распределением на данном отрезке. Для каждой точки вычислим площадь прямоугольника, одна сторона которого равна http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image508.gif, а вторая равна значению функции в данной точке http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image509.gifhttp://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image510.gif. Вследствие случайности узла http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image511.gif, значение площадей http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image512.gif также будет носить случайный характер. В качестве приближенного значения интеграла можно принять результат усреднения площадей http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image512.gif:



http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image513.gif

Теоретическое обоснование рассмотренного варианта метода Монте-Карло для вычисления интегралов состоит в следующем. Пусть x – случайная величина с равномерным распределением на отрезке http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image461.gif. Это означает, что ее плотность вероятности задается соотношением:http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image518.gif




Тогда любая функция http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image519.gif также будет случайной величиной, и ее математическое ожидание равно:

http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image520.gif




Или читая это равенство наоборот получим:

http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image521.gif





Если провести серию N независимых испытаний, в которых генерируется случайные числа http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image511.gif и вычисляются значения http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image522.gif, то для оценки математического ожидания http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image523.gif можно использовать выборочное среднее результатов независимых реализаций http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image524.gif:

http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image525.gif

что в итоге приводит к соотношению:



http://physics.herzen.spb.ru/library/01/01/nm_labs/differ_integration.files/image526.gif

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

Для каждого повторения по методу Монте-Карло:


  1. Имитирует случайную выборку из генеральной совокупности,

  2. Проводит анализ выборки,

  3. Сохраняет результаты.

После большого числа повторений, сохраненные результаты хорошо имитирует реальное распределение выборочной статистики. Метод Монте-Карло позволяет получить информацию о выборочном распределении в случаях, когда обычная теория выборочных распределений оказывается бессильной.

ЭВМ позволяют легко получать так называемые псевдослучайные числа (при решении задач их применяют вместо случайных чисел); это привело к широкому внедрению метода во многие области науки и техники (статистическая физика, теория массового обслуживания, теория игр и др.). Метод Монте-Карло используют для вычисления интегралов, в особенности многомерных, для решения систем алгебраических уравнений высокого порядка, для исследования различного рода сложных систем (автоматического управления, экономических, биологических и т.д.).

Сущность метода Монте-Карло состоит в следующем: требуется найти значение а некоторой изучаемой величины. Для этого выбирают такую случайную величину X, математическое ожидание которой а: М(Х)=а

Практически же поступают так: производят п испытаний; в результате которых получают п возможных значений X, вычисляют их среднее арифметическое





и принимают х в качестве оценки (приближенного значения) а * искомого числа а:

Поскольку метод Монте-Карло требует проведения большого числа испытаний, его часто называют методом статистических испытаний. Теория этого метода указывает, как наиболее целесообразно выбрать случайную величину X, как найти ее возможные значения. В частности, разрабатываются способы уменьшения дисперсии используемых случайных величин, в результате чего уменьшается ошибка, допускаемая при замене искомого математического ожидания а его оценкой а *.

Отыскание возможных значений случайной величины Х (моделирование) называют «разыгрыванием случайной величины». Изложим лишь некоторые способы разыгрывания случайных величин и укажем, как оценить допускаемую при этом ошибку.

2.ОПИСАНИЕ АЛГОРИТМА ПРОГРАММЫ.

2.1.БЛОК СХЕМА ПРОГРАММЫ.

Для упрощения разработки программы непосредственно в среде Pascal необходимо составить блок-схему, содержащую основные этапы и компоненты программы.



начало



k,p,s,g,x,m,l,c,d,v,Integlal: real;

t,n,i,a,b: integer;






Функция F(x:real):real;

Case t of

1: f:=m*exp(l*ln(v*x+c))+d;

2: f:=exp(l*(v*x+c)*ln(m))+d;

3: f:=m*(ln(v*x+c)/ln(l))+d;

4: f:=m*sin(l*(v*x+c))+d;

5: f:=m*cos(l*(v*x+c))+d;




‘Элементарные функции в общем виде:’

‘1: f=m*(v*x+c)^l+d;’

‘2: f=m^(l*(v*x+c))+d;’

‘3: f=m*log l(v*x+c)+d;’

‘4: f=m*sin(l*(v*x+c))+d;’

‘5: f=m*cos(l*(v*x+c))+d;’





‘Выберите номер функции: k=’



‘Введите коэффициенты a, b, c, d:’

‘a=’, ‘b=’, ‘c=’, ‘d=’




S:=0



Ввод a

Ввод b


Ввод n


k:=b-a;

randomize





От 1 до n



g:=random;

x:=a+g*k;

s:=s+(1+x);




Ввод s


Integral:=k*s/n



Ввод integral


конец

2.2.ОСНОВНЫЕ ПЕРЕМЕННЫЕ ПРОГРАММЫ.

Автоматизация метода Монте-Карло позволяет оптимизировать его использование на практике и упростить расчеты.

Программа на Pascal – это набор некоторых команд. Начинается программа с ключевого слова PROGRAM, после которого следует имя программы:

PROGRAM pmk;

Далее идёт раздел переменных VAR, в котором описываются переменные:

VAR

k,p,s,g,x,m,l,c,d,v,Integral : real;



t,n,i,a,b, : integer;

где:


n – количество случайных значений;

a и b – нижний и верхний пределы интегрирования;

s, p – переменные для вычисления суммы по формулам;

k – длина промежутка интегрирования;

m,l,c,d,v – свободные переменные;

g – случайная величина из промежутка [0;1];

x – произвольная величина из [a;b].

Integral – результативная переменная.

В этом разделе указывается имена переменных и имена типов данных.

После описания переменных вводятся функции. Объявление функции состоит из:

- ключевого слова function, имени функции, списка формальных параметров и типа возвращаемого значения;

- раздела объявления локальных переменных или констант, если он требуется;

- тела функции, заключенного в операторные скобки begin end.

В функции помещаются формулы, по которым будут вычисляться интеграл:

Function F(x: real):real;

begin


case t of

1: f:=m*exp(l*ln(v*x+c))+d;

2: f:=exp(l*(v*x+c)*ln(m))+d;

3: f:=m*(ln(v*x+c)/ln(l))+d;

4: f:=m*sin(l*(v*x+c))+d;

5: f:=m*cos(l*(v*x+c))+d;

end;

end;


После всего этого переходим к основному телу программы. Код программы содержит различные команды. Самые распространенные:

Write (Writeln) – команда вывода текста на экран;

Read (Readln) – запрос данных.

Итак, вводим запросы:

BEGIN

writeln('1: f=m*(v*x+c)^l+d');



writeln('2: f=m^(l*(v*x+c))+d');

writeln('3: f=m*log l(v*x+c)+d');

writeln('4: f=m*sin(l*(v*x+c))+d');

writeln('5: f=m*cos(l*(v*x+c))+d');

write('vyberite nomer funkcii: '); readln(t);

writeln('vvedite a, b, c, d,v:');

write('m='); readln(m);

write('l='); readln(l);

write('c='); readln(c);

write('d='); readln(d);

write(‘v=’);readln(v);

s:=0;


writeln(‘Введите промежуток интегрирования a:’);

readln(a);

writeln(‘Введите промежуток интегрирования b:’);

readln(b);

writeln(‘Введите количество случайных значений (число испытаний):’);

readln(n);

Вычислим длину промежутка интегрирования:

k:=b-a; {Переменной“k”присвоим значение длины промежутка интегрирования}

Далее подключим процедуру randomize для генерации случайных значений g:

randomize;

for i:= 1 to n do {начало n испытаний}

begin


g:=random; {g - переменная вещественного типа, случайная величина из промежутка [0;1]}

x:= a + g*k; {По этой формуле получается произвольная величина из [a; b] }

Далее вычисляем сумму s:

s:=s + f(x);

end; {конец испытаний}

writeln(‘s=’,s); {Сумма функции для n произвольных значений}

Далее по формуле вычисляем интеграл и выводим результат на экран:

Integral:=k*s/n ;

writeln(‘Интеграл=’,Integral);

readln;


END.

3.ТЕСТИРОВАНИЕ ПРОГРАММЫ.

Проведем тестирование программы для проверки правильности ее работы.(Рис.1.1)

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

Далее программа просит ввести коэффициенты m,l,c,d,v для нашей функции. Вводим любые произвольные значения, например: m=2, l=5, c=25, d=6, v=12. Далее нажимаем Enter, вводим промежутки интегрирования a=-1, b=3 и количество случайных значений n=100.

После введения всех необходимых значений на экран выводится значение интеграла: Integral=4.93596630266724E+0007.



Рис.1.1

безымянный.jpg

4.ПРОГРАММНОЕ И АППАРАТНОЕ ОБЕСПЕЧЕНИЕ ПРОГРАММЫ.

Для работы программы требуются следующие системные и программные требования:


  • Операционная система: Windows XP/ Vista/ 7;

  • Оперативная память: 1,5 Мб

  • Жесткий диск: 512 кб

  • Наличие видео карты;

  • Клавиатура;

  • Установленная программа Turbo Pascal;

5.РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ.



  1. Для начала работы в программе необходимо открыть файл-приложение mpk;

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

  3. Согласно командам, которые выдает программа, вводить значения переменных, для перехода к следующей переменной необходимо нажимать Enter;

  4. В программу вводятся только числовые значения. При введении десятичной дроби целая часть отделяется от дробной точкой, а не запятой;

  5. Для выхода из программы нажать любую кнопку.

6.ЗАКЛЮЧЕНИЕ.

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

Были рассмотрены основные свойства метода Монте-Карло и создана программа, показывающая возможности данного метода при использовании ЭВМ.

Было выяснено, что методом Монте-Карло можно решать определенные интегралы, не прибегая к сложным математическим вычислениям. Простота алгоритма метода Монте-Карло позволяет успешно реализовывать их на ЭВМ.

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

7.СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.

1. Кнут Д.Э. Искусство программирования. Том 2. Получисленные алгоритмы: Пер. с англ. - М.: «Вильямс», 2000. — 682с.

2. Поляков Д.Б., Круглов И.Ю. Программирование в среде Турбо Паскаль (версия 5.5): Справ.-метод. пособие. – М.: Изд-во МАИ, 1992. – 576 с.

3.Данко П.Е., Попов А.Г. Высшая математика в упражнениях и задачах. Часть 1.Учебник. – М.: Москва «Высшая школа», 1986. – 416 с.

8.ПРИЛОЖЕНИЕ A.

ЛИСТИНГ ПРОГРАММЫ.

Program pmk;

Uses crt;

Var k,p,s,g,x,m,l,c,d,v,Integral : real;

t,n,i,a,b : integer;


Function F(x: real):real;

begin


case t of

1: f:=m*exp(l*ln(v*x+c))+d;

2: f:=exp(l*(v*x+c)*ln(m))+d;

3: f:=m*(ln(v*x+c)/ln(l))+d;

4: f:=m*sin(l*(v*x+c))+d;

5: f:=m*cos(l*(v*x+c))+d;

end;

end;


Begin

writeln('1: f=m*(v*x+c)^l+d');

writeln('2: f=m^(l*(v*x+c))+d');

writeln('3: f=m*log l(v*x+c)+d');

writeln('4: f=m*sin(l*(v*x+c))+d');

writeln('5: f=m*cos(l*(v*x+c))+d');

write('vyberite nomer funkcii: '); readln(t);

writeln('vvedite m, l, c, d,v:');

write('m='); readln(m);

write('l='); readln(l);

write('c='); readln(c);

write('d='); readln(d);

write(‘v=’);readln(v);

s:=0;


writeln(‘Введите промежуток интегрирования a:’);

readln(a);

writeln(‘Введите промежуток интегрирования b:’);

readln(b);

writeln(‘Введите количество случайных значений (число испытаний):’);

readln(n);

k:=b-a; {Переменной“k”присвоим значение длины промежутка интегрирования}

writeln(‘k=’,k);

randomize; {подключаем процедуру randomize для генерации случайных значений g}

for i:= 1 to n do {начало n испытаний}

begin

g:=random; {g - переменная вещественного типа, случайная величина из промежутка [0;1]}



x:= a + g*k; {По этой формуле получается произвольная величина из [a; b] }

s:=s + f(x);

end; {конец испытаний}

writeln(‘s=’,s); {Сумма функции для n произвольных значений}

Integral:=k*s/n ;

writeln(‘Интеграл=’,Integral);



readln;

END.


9.ПРИЛОЖЕНИЕ Б. безымянный.jpg


РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ПРОГРАММЫ.





Мой отец хотел, чтобы я имел все возможности по части образования, которых не было у него; поэтому он послал меня в школу для девочек. Джек Херберт
ещё >>