Автор работы: Пользователь скрыл имя, 29 Марта 2013 в 00:09, курсовая работа
Метод ветвей и границ состоит в следующем: множество допустимых решений (планов) некоторым способом разбивается на подмножества, каждое из которых этим же способом снова разбивается на подмножества. Процесс продолжается до тех пор, пока не получено оптимальное целочисленное решение исходной задачи.
Методы типа ветвей и границ — это наиболее широко используемые в настоящее время методы решения не только целочисленных и частично целочисленных задач ЛП, но и других дискретных оптимизационных задач. Различные методы типа ветвей и границ существенно используют специфику
конкретных задач и поэтому заметно отличаются друг от друга
Вступление 3
1. Математическая формулировка задачи 3
2. Выбор методу решения и постановки задачи 4
3. Описание алгоритма решения задачи 5
4. Описание программы 7
5. Описание методики решения задачи по разработанной программе
на основе контрольного примера. 10
Заключение 14
Литература 15
Вступление 3
3. Описание алгоритма решения задачи 5
5. Описание методики решения задачи по разработанной программе
на основе контрольного примера. 10
Заключение 14
Литература 15
Метод ветвей
и границ — общий алгоритмический
метод для нахождения оптимальных
решений различных задач
Метод ветвей и
границ состоит в следующем:
множество допустимых решений
(планов) некоторым способом
Методы типа ветвей и границ — это наиболее широко используемые в настоящее время методы решения не только целочисленных и частично целочисленных задач ЛП, но и других дискретных оптимизационных задач. Различные методы типа ветвей и границ существенно используют специфику
конкретных задач и поэтому заметно отличаются друг от друга. Однако
все они основаны на последовательном разбиении допустимого множества на подмножества (ветвлении) и вычислении оценок (границ), позволяющем отбрасывать подмножества, заведомо не содержащие решений задачи.
где область интегрирования определяется следующими неравенствами:
Интеграл дан в приведенном виде, т. е. Область интегрирования расположена в единичном квадрате
Для решения задачи воспользуемся таблицей случайных чисел и следующими вычислениями:
Отсюда
,
и, следовательно, с формулы:
имеем:
Если приближенно принять
то получим:
2.Выбор метода решения и постановка задачи
Использовать метод Монте-Карло рациональнее, так как его легче реализовать, и он требует меньшего количества вычислений.
Таким образом: метод решения задачи – метод Монте-Карло.
Постановка задачи – вычислить определённый интеграл методом Монте -Карло.
Блок 1. Ввод исходных данных
Для проведения расчета по данному алгоритму необходимы следующие исходные данные:
a-верхняя граница интеграла
b-нижняя граница интеграла
int-введение интеграла
e-точность интегрирования
Блок 2. Расчёт интеграла методом Монте-Карло
Блок 3. Вывод результата проверки
Выводится результат интегрирования.
нет
да
нет
4.Описание программы
Программа реализации алгоритма написана на языке Paskal.
Таблица переменных
Переменная |
Назначение |
Тип |
a |
Верхняя граница интеграла |
array [0…20]of real |
b |
Нижняя граница интеграла |
array [0...20] of real |
pp |
Рабочая переменная |
array [0...20] of real |
pl |
Рабочая переменная |
array [0...20] of real |
pc |
Результат |
array [0...20] of real |
pt |
Рабочая переменная |
array [0...20] of real |
int |
Рабочая переменная |
char |
z |
Рабочая переменная |
array [0...20] of real |
S1 |
Уровень значимости |
real |
S2 |
Рабочая переменная |
real |
S3 |
Рабочая переменная |
real |
dh |
Переменная для определения результата |
real |
h |
Переменная для определения результата |
real |
e |
Рабочая переменная |
real |
i |
Переменная цикла |
Integer |
j |
Переменная цикла |
Integer |
n |
Счетчик цикла |
Integer |
program kurs;
uses crt;
var x,y,pp,pl,pc,pt,z:array [0..20] of real;
s1,s2,s3,dh,h,e:real;
i,j,n:integer;
int: char;
begin
clrscr;
textcolor(9);
writeln(' РАСЧОТНО-ГРАФИЧЕСКАЯ РАБОТА');
writeln(' ВЫЧИСЛЕНИЕ ИНТЕГРАЛОВ МЕТОДОМ МОНТЕ-КАРЛО.');
textcolor(green);
writeln(' ВЫПОЛНИЛА СТУДЕНТКА 3-ГО КУРССА');
writeln(' ЛИЗОГУБ ВАЛЕНТИНА ВИКТОРОВНА');
textcolor(green);
writeln('Введите нижнюю границу интегрирования ');
readln(a);
writeln('Введите верхнюю границу интегрирования ');
readln(b);
n:=10;
writeln('Введите точность интегрирования ');
readln(e);
textcolor(10);
writeln('Введите интеграл');
readln(int);
textcolor(13);
writeln('Вычисление интеграла ');
writeln(' ')
for i:=1 to 2 do begin
x[0]:=a;
h:=(b-x[0])/(i*n);
for j:=1 to n*i do x[j]:=x[j-1]+h;
for j:=0 to n*i do y[j]:=sqrt(1+x[j]*x[j]*x[j]){
s1:=0;
s2:=0;
for j:=1 to round(i*n/2) do s1:=s1+y[2*j-1];
for j:=1 to round(i*n/2-1) do s2:=s2+y[2*j];
z[i]:=(h/3)*(y[0]+y[i*n]+4*s1+
end;
textcolor(yellow);
writeln('По методу Монте-
write(' pc=',z[i]:0:3);
dh:=abs(z[2]-z[1])/15;
writeln(', погрешность:',dh:14:10);
pp[1]:=0;
pl[1]:=0;
pc[1]:=0;
pt[1]:=0;
pp[2]:=1;
pl[2]:=1;
pc[2]:=1;
pt[2]:=1;
while((abs(pp[1]-pp[2])/3>e) and (abs(pl[1]-pl[2])/3>e) and (abs(pc[1]-pc[2])/3>e) and (abs(pt[1]-pt[2])/3>e)) do begin
for i:=1 to 2 do begin
h:=(b-x[0])/(n*i);
for j:=1 to n*i do begin
x[j]:=x[j-1]+h;
y[j]:=sqrt(1+x[j]*x[j]*x[j]);
end;
s1:=0;
s2:=0;
s3:=0;
for j:=1 to n*i do begin
s1:=s1+y[j-1];s2:=s2+y[j];
s3:=s3+sqrt(1+(sqrt(x[0]+h*(j-
end;
pp[3-i]:=h*s2;
pl[3-i]:=h*s1;
pc[3-i]:=h*s3;
pt[3-i]:=h*((y[0]-y[i*n])/2+
end;
n:=n+1;
end;
textcolor(20);
write('Для выхода
из программы нажмите ENTER...'
readln;
end.
5.Описание методики решения задачи по разработанной программе на основе контрольного примера.
Данная программа разработана на основе метода Монте-Карло. Исходными данными являются верхние, нижние границы интегрирования и погрешность интегрирования. В начале программы нас просят ввести верхнюю и нижнюю границы интегрирования - это могут быть любые числа, которые вводятся с клавиатуры. Наша задача состоит в том, чтобы определить приближенное значение интеграла с гарантированно малой оценкой погрешности. Для этого мы выбираем точность интегрирования из таблицы случайных чисел, равномерно распределённых на отрезке [0;5]
0,57705 |
1,35483 |
2,11578 |
3,65339 |
4,66674 |
0,71618 |
1,09393 |
2,93045 |
3,93382 |
4,99279 |
0,73710 |
1,30304 |
2,93011 |
3,05758 |
4,24202 |
0,70131 |
1,55186 |
2,42844 |
3,00336 |
4,94010 |
0,16961 |
1,64003 |
2,52906 |
3,88222 |
4,60981 |
0,53324 |
1,20514 |
2,09461 |
3,98585 |
4,13094 |
0,43166 |
1,00188 |
2,99602 |
3,52103 |
4,35193 |
0,26275 |
1,55709 |
2,69962 |
3,91827 |
4,64560 |
0,05926 |
1,86977 |
2,31311 |
3,07069 |
4,64559 |
0,66289 |
1,31303 |
2,27004 |
3,13928 |
4,68008 |
После чего получаем результат, который выводится на экран. После результата выводится погрешность. Для выхода из программы нужно нажать ENTER.
Контрольный пример
РАСЧОТНО-ГРАФИЧЕСКАЯ РАБОТА
ВЫЧИСЛЕНИЕ ИНТЕГРАЛОВ МЕТОДОМ МОНТЕ-КАРЛО.
Введите нижнюю границу интегрирования
0
9
0,57705
Введите интеграл
(2x2+4x+9) d x
ВЫЧИСЛЕНИЕ ИНТЕГРАЛА
По методу Монте-Карло интеграл равен
рc=40.256, погрешность 0,0001579347
ДЛЯ ВЫХОДА ИЗ ПРОГРАММЫ НАЖМИТЕ ENTER…..
Введите нижнюю границу интегрирования
0
9
1,35483
Введите интеграл
(2x2+4x+9) d x
ВЫЧИСЛЕНИЕ ИНТЕГРАЛА
По методу Монте-Карло интеграл равен
рc=40.256, погрешность 0,0001579498
ДЛЯ ВЫХОДА ИЗ ПРОГРАММЫ НАЖМИТЕ ENTER…..
Введите нижнюю границу интегрирования
0
9
2,11578
Введите интеграл
(2x2+4x+9) d x
ВЫЧИСЛЕНИЕ ИНТЕГРАЛА
По методу Монте-Карло интеграл равен
рc=40.256, погрешность 0,0001579627
ДЛЯ ВЫХОДА ИЗ ПРОГРАММЫ НАЖМИТЕ ENTER…..
Введите нижнюю границу интегрирования
0
9
3,65339
Введите интеграл
(2x2+4x+9) d x
ВЫЧИСЛЕНИЕ ИНТЕГРАЛА
По методу Монте-Карло интеграл равен
рc=40.256, погрешность 0,0001579828
ДЛЯ ВЫХОДА ИЗ ПРОГРАММЫ НАЖМИТЕ ENTER…..
Введите нижнюю границу интегрирования
0
9
4,66674
Введите интеграл
(2x2+4x+9) d x
ВЫЧИСЛЕНИЕ ИНТЕГРАЛА
По методу Монте-Карло интеграл равен
рc=40.256, погрешность 0,000157996
ДЛЯ ВЫХОДА ИЗ ПРОГРАММЫ НАЖМИТЕ ENTER…..
По результатам мы видим, что с уменьшением точности погрешность увеличивается.
Из выше проведённых примеров мы убедились, что метод Монте-Карло вычисляет точнее интеграл чем мы вычисляем его в ручную
Часть пользователей предубеждена
против метода Монте-
Карло вследствие того, что малость погрешности
метода обеспечивается лишь с некоторой
вероятностью, и вследствие этого
отрицает правомерность его
использования. Поэтому применение метода Монте-Карло
вызвано обстановкой, когда трудно надеяться
на получение приближенного значения
интеграла с гарантированно малой оценкой
погрешности. После проведения контрольного
примера мы убедились, что с уменьшением
точности погрешность интегрирования
растёт.
Литература: