Приближенное интегрирование методом Монте-Карло

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

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 14.03.2018
Размер файла 212,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Контрольная работа

Приближенное интегрирование методом Монте-Карло

Оглавление

  • Введение
  • Приближенное интегрирование методом Монте-Карло при использовании различных датчиков случайных чисел пакета MatLab
  • Заключение
  • Литература
  • Приложение

Введение

осциллирующий датчик программирование рекурсивный

Необходимость вычисления интегралов быстро осциллирующих функций возникает во многих исследовательских приложениях физики атмосферы, моделировании прохождения электромагнитных волн через различные среды и многих других разделах радиофизики. Несмотря на то, что современные пакеты, поддерживающие алгебраические вычисления, такие как MatLab, Maple, Mathematica и другие, включают готовые процедуры интегрирования, часто возникает необходимость численных решений задач интегрирования.

Одним из универсальных численных методов интегрирования, часто оказывающимся единственно возможным, является метод Монте-Карло. Однако его недостатком является невысокая точность вычислений. Его сходимость имеет порядок N -1/2 (см. (5)).

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

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

Приближенное интегрирование методом Монте-Карло при использовании различных датчиков случайных чисел пакета MatLab

Наиболее распространенными методами генерации псевдослучайных чисел (ГСПЧ) являются линейный конгруэнтный метод, метод Фибоначчи с запаздываниями, регистр сдвига с линейной обратной связью, регистр сдвига с обобщённой обратной связью.

Из современных ГПСЧ широкое распространение также получил «вихрь Мерсенна», предложенный в 1997 году Мацумото и Нисимурой. Его достоинствами являются колоссальный период (219937?1), равномерное распределение в 623 измерениях (линейный конгруэнтный метод даёт более или менее равномерное распределение максимум в 5 измерениях), быстрая генерация случайных чисел (в 2-3 раза быстрее, чем стандартные ГПСЧ, использующие линейный конгруэнтный метод).

Пакет MatLab предлагает шесть датчиков случайных чисел. Их краткий обзор и основные параметры приведены в таблице.

Таблица Датчики псевдослучайных чисел пакета MatLab

Имя, используемое при вызове процедуры

Тип датчика

Период

mt19937ar

вихрь Мерсенна Mersenne twister (по умолчанию)

219937?1

dsfmt19937

Быстрый вихрь Мерсенна (SIMD-oriented fast Mersenne twister )

219937?1

mcg16807

линейный конгруэнтный метод (датчик Парка - Миллера) (Multiplicative congruential generator)

231?2

mlfg6331_64

метод Фибоначчи с запаздываниями (Multiplicative lagged Fibonacci generator)

2124

mrg32k3a

Рекурсивный генератор (Combined multiple recursive generator)

2191

shr3cong

регистр сдвига с линейной обратной связью (Shift-register generator summed with linear congruential generator)

264

Ниже приведен код программной процедуры ParkMiller.m в пакете MatLab, написанной для приближенного вычисления методом Монте-Карло интеграла с использованием различных датчиков пакета MatLab.

%% Тестирование датчиков случайных чисел

%% Приближенное интегрирование быстро осциллирующих функций методом Монте-Карло'

Li = [-1 2]; % диапазон варьирования х

xab= Li(1,2)-Li(1,1); % интервал по х

xHi = Li(1,2);

xLo = Li(1,1);

Fmax = (xHi^2)*sin(40*xHi); %

Fmin = (xLo^2)*sin(40*xLo); %

yab = Fmax - Fmin; %интервал по у

Sall = xab * yab;

%myStream=RandStream('shr3cong'); %Shift-register generator summed with linear congruential generator

%myStream=RandStream('mlfg6331_64');%Multiplicative lagged Fibonacci generator

myStream=RandStream('mcg16807'); %датчик Парка-Миллера

% myStream=RandStream('mt19937ar'); %%'Датчик Mersenne twister (по умолчанию)

%%myStream=RandStream('dsfmt19937'); %%'Датчик SIMD-oriented fast Mersenne twister

%myStream=RandStream('mrg32k3a'); %%'Датчик Combined multiple recursive generator

N =1;

for j=1:10000

Nf = 0;

for i=1:1:N*j

A = rand;

rx = Li(1,1) + A * xab;

f = (rx*rx)*sin(40*rx); %

B=rand;

yf = Fmin + B * abs(yab);

if yf <= f Nf = Nf+1; end;

end

S(j) = Nf/i*N*Sall;

index(j) = j;

Smean(j)=mean(S);

end

SS = S(j)

figure

plot(index,S,'b',index,Smean,'r')

%legend('Датчик Mersenne twister (по умолчанию)')

legend('Датчик Парка - Миллера')

%%legend('Датчик SIMD-oriented fast Mersenne twister')

%legend('Генератор регистра сдвига, суммированный с линейным конгруэнтным генератором')

%legend('Датчик по методу Фибоначчи с запаздываниями')

%legend('Датчик рекурсивный генератор')

title('Приближенное интегрирование быстро осциллирующих функций методом Монте-Карло')

Grid on

На рис.1 показана реализация этой процедуры для приведенного выше интеграла с использованием датчика Парка - Миллера.

Рисунок 1. Приближенное вычисление интеграла с использованием датчика Парка-Миллера (красным цветом отображается текущее среднее по реализации)

Рисунок 2. Приближенное вычисление интеграла с датчиком вихря Мерсьенна (синим цветом отображается текущее среднее по реализации)

Рисунок 3. Приближенное вычисление интеграла с помощью датчика рекурсивного генератора (зеленым цветом отображается текущее среднее по реализации)

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

Рисунок 5. Приближенное вычисление интеграла методом Монте-Карло с использованием датчика Фибоначчи с запаздыванием (синим цветом отображается текущее среднее по реализации) S = - 2,5926

Заключение

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

1) рекурсивный генератор (Combined multiple recursive generator), имеющий период 2191;

2) регистр сдвига с линейной обратной связью (Shift-register generator summed with linear congruential generator) с периодом 264.

Литература

1. Абрамян М.Э., Олифер А.В. Численные методы. Методические указания к выполнению индивидуальных заданий. - Ростов-на-Дону, 1991.

2. Михалкович С.С., Обрезанова О.А., Олифер А.В. Численные методы. Методические указания к выполнению индивидуальных заданий. Выпуск II - Ростов-на-Дону, 1995.

3. Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. -М.: Наука, 1987.

4. Соболь И.М. Численные методы Монте-Карло. М.: Наука, 1973.

5. Kнут Д. Искусство программирования для ЭВМ. Т.2. Получисленные алгоритмы. - М.: Мир, 1977.

6. Press W.H., Teukolsky S.A., Vetterling W.T., Flannery B.P. Numerical Resipes in C. - Cambridge Univ. Press, 1992.

Приложение

Размещено на Allbest.ru

...

Подобные документы

  • Некоторые сведения теории вероятностей. Математическое ожидание, дисперсия. Точность оценки, доверительная вероятность. Сущность метода Монте-Карло. Генераторы случайных чисел. Вычисление кратных интегралов. Описание пользовательского интерфейса.

    курсовая работа [301,5 K], добавлен 08.11.2013

  • Особенности работы в режиме командной строки в системе Matlab. Переменные и присваивание им значений. Комплексные числа и вычисления в системе Matlab. Вычисления с использованием функции sqrt. Неправильное использование функций с комплексными аргументами.

    дипломная работа [1,9 M], добавлен 30.07.2015

  • Математическая основа параллельных вычислений. Свойства Parallel Computing Toolbox. Разработка параллельных приложений в Matlab. Примеры программирования параллельных задач. Вычисление определенного интеграла. Последовательное и параллельное перемножение.

    курсовая работа [1,1 M], добавлен 15.12.2010

  • Методы и алгоритмы вычисления определенных интегралов: метод трапеций и метод Симпсона (метод парабол). Оформление функции вычисления заданного определённого интеграла на Visual Basic 6.0. Программный код функции. Создание приложения для вычисления.

    курсовая работа [483,6 K], добавлен 25.06.2014

  • MPI - библиотека передачи сообщений на языке программирования C/C++, ее переносимость, стандартизация, эффективная работа, функциональность. Форматы фактических вызовов MPI. Метод прямоугольников для приближенного вычисления определенного интеграла.

    курсовая работа [286,0 K], добавлен 20.06.2012

  • Программа для формирования и просмотра команды для олимпиады по программированию. Генератор случайных чисел в Borland C++, методы их получения. Линейный конгруэнтный метод. Метод Фибоначчи, вихря Мерсенна. Тестирование псевдослучайных последовательностей.

    курсовая работа [93,5 K], добавлен 27.09.2014

  • Теория вычисления интеграла и описание используемых численных методов (метод левых и правых прямоугольников, метод трапеции, метод Симпсона). Расчеты в пакете Matlab. Отчет о результатах вычисления в MS Excel. Описание приложения созданного в Delphi.

    курсовая работа [2,8 M], добавлен 18.08.2014

  • Характеристика основных методов для решения различных задач с помощью случайных последовательностей. Реализация и проверка эффективности метода Монте-Карло при его применении на различных примерах. Алгоритм метода имитации. Издержки неопределенности.

    курсовая работа [98,9 K], добавлен 04.05.2014

  • Разработка различных программ для вычисления X и Y по формуле, для вычисления интеграла, для вычисления таблицы значений функции и для вычисления элементов вектора. Составление блок-схемы программы. Ввод значений, описание переменных и условия расчета.

    контрольная работа [148,1 K], добавлен 08.11.2013

  • Разработка программы, которая по заданной самостоятельно функции будет выполнять интегрирование методом прямоугольников. Блок-схема алгоритма вычисления интеграла (функция rectangle_integrate). Экспериментальная проверка программы, ее текст на языке C.

    курсовая работа [232,0 K], добавлен 27.05.2013

  • Вычисление определенных интегралов методом Симпсона. Функциональная схема программного комплекса. Реализация функции разбора произвольно заданных математических функций. Методика сохранения графика в графический файл. Интерфейс программного комплекса.

    курсовая работа [1,7 M], добавлен 15.06.2009

  • Создание приложения, демонстрирующего решение нелинейного уравнения методом хорд, вычисление интеграла методом Симпсона. Характеристика системы программирования. Разработка мощных систем для работы с локальными и удаленными базами данных с помощью Delphi.

    дипломная работа [846,0 K], добавлен 22.09.2012

  • Метод хорд решения нелинейных уравнений. Вычисление интеграла методом Симпсона. Процесс численного решения уравнения. Окно программы расчета корней уравнения методом хорд. Алгоритм вычисления интеграла в виде блок-схемы. Выбор алгоритма для вычислений.

    курсовая работа [832,6 K], добавлен 24.07.2012

  • Характеристика вероятностного алгоритма и особенности его использования. Принцип работы и назначение генератора случайных чисел, сущность псевдослучайных чисел. Рассмотрение и реализация метода середины квадрата, разработка алгоритма и его кодирование.

    курсовая работа [50,3 K], добавлен 18.09.2009

  • Численные методы. Создание программного продукта, использование которого позволит одновременно исследовать два метода вычисления определенных интегралов: метод трапеций и метод Симпсона. Рассмотрен ход вычисления интеграла в виде кода программы.

    курсовая работа [834,6 K], добавлен 14.04.2019

  • Разработка программы, выполняющей интегрирование методом входящих прямоугольников с кратностями и методом Симпсона. Расчет определённого интеграла приближенным и точным методами. Оценка погрешности при вычислении приблизительного значения интеграла.

    контрольная работа [71,7 K], добавлен 13.02.2016

  • Создание программного модуля для вычисления интеграла по формулам трапеции и Симпсона, определяя шаг интегрирования по оценке остаточного члена. Для разработки используется табличный процессор Excel и язык программирования Visual Basic for Application.

    курсовая работа [159,7 K], добавлен 30.08.2010

  • Рассмотрение методов прямоугольников и трапеций как способов вычисления определенных интегралов. Характеристика графика зависимости погрешности от числа разбиений N. Создание приложения по вычислению интеграла с помощью методов приближенного вычисления.

    курсовая работа [1,6 M], добавлен 20.06.2012

  • Разработка программного приложения для вычисления интегралов с помощью метода Симпсона. Составление функциональной и структурной схемы программного продукта, математической модели и тестовых примеров. Изучение предметной области, выбора среды реализации.

    курсовая работа [359,3 K], добавлен 08.06.2011

  • Сущность и особенности применения метода средних треугольников. Порядок расчета по методу трапеций и Ньютона-Котеса. Формула Чебышева и значения узлов ее квадратуры. Составление блок-схемы программы и ее основных процедур различными численными методами.

    курсовая работа [482,7 K], добавлен 03.01.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.