Автор работы: Пользователь скрыл имя, 27 Января 2011 в 10:39, контрольная работа
1.Самостоятельно найти в литературе по “Методам оптимизации” определение унимодальной функции и разобраться с его смыслом. Это важно, так как вычислительный процесс в любом методе одномерной оптимизации опирается на предположение об унимодальности .
1. Текст задания №65………………………………………………………………3
2. Определение унимодальности………………………………………………….3
3. Алгоритм…………………………………………………………………………4
4. Текст программы на С++………………………………………………………..4
5. Сводная таблица результатов решения задач...……………………………….5
6. Сводная таблица…………………………………………………………………
АГЕНТСТВО ПО ОБРАЗОВАНИЮ РОССИЙСКОЙ ФЕДЕРАЦИИ
ВОЛГОГРАДСКИЙ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
КОНТРОЛЬНАЯ РАБОТА ПО КУРСУ
МЕТОДЫ
ОПТИМИЗАЦИИ
КОНТРОЛЬНОЕ ЗАДАНИЕ №65
Методы одномерной оптимизации.
Метод золотого
сечения.
№ зачетной
книжки________________
Выполнил:
студент
гр. АУЗ-261с
Проверил:
Яновский
Т.А.
ВОЛГОГРАД 2010
Содержание
1. Текст задания
№65………………………………………………………………3
2. Определение
унимодальности…………………………………………
3. Алгоритм…………………………………………………………
4. Текст программы
на С++………………………………………………………..4
5. Сводная таблица
результатов решения задач...……
6. Сводная таблица………………………………………
1. Текст задания №65:
1.Самостоятельно
найти в литературе по “
2.Программно реализовать на языке C++ процедуру одномерной оптимизации методом золотого сечения: (Программа должна обеспечить вывод на экран:
на каждой итерации метода:
а затем
3.С помощью
программы оценить точки
2.
Определение унимодальности
Унимодальной называется функция, имеющая на заданном отрезке [a,b] один максимум или минимум. Основное свойство унимодальных функций, таково. Если мы знаем значения f в точках x1 и x2 отрезка [a, b], x1 < x2, то мы можем определенно сказать на каком из отрезков [a, x2], [x1, x2], [x1, b] лежит минимум x* функции f (см. рис 1).
В реальности мы не можем располагать пробные точки, т. е. точки, в которых мы вычисляем значения функции, на сколь угодно близком расстоянии друг от друга. Поэтому мы будем предполагать, что это расстояние не меньше фиксированного числа e > 0.
Метод
дихотомии, методы золотого сечения
и Фибоначчи указывают на отрезок, на
котором гарантированно лежит точка x*.
Этот отрезок называют отрезком
(или интервалом) неопределенности. Таким
образом, если в качестве приближенного
значения x* взять центр этого отрезка,
то погрешность метода есть половина длины
отрезка неопределенности.
3.
Алгоритм
Шаг 1. Вычислить .
Шаг 2. Найти пробные точки и .
Шаг 3. Вычислить значения функции в пробных точках и .
Шаг 4. Сравнить и :
а) если , то положить .
б) если , положить .
Шаг 5. Вычислить
. Если
, то положить
и закончить поиск, иначе перейти к
шагу 3.
4.
Текст программы на
С++
#include <iostream.h>
#include <iomanip>
#include <stdlib.h>
float division(double a, double b, double e);
double x;
char SomeChar;
double function(double x);
int main()
{
division(-1, 1, 0.00001);
cin.get(SomeChar);
return 0;
}
float division(double a, double b, double e)
{
double x,l, x1, x2;
double
funX,funX1,funX2;
int k=0;
cout<<"e= "<<e<<endl;
cout<<"f(x)=(127/4)*x*x-
do
{
x1 = a;
x2 = b;
cout<<endl;
cout<<"{"<<k<<"}:
k++;
l=b-a;
x = (x1 + x2)/2;
funX=function(x);
cout<<"x= "<<x;
cout<<"
f(x)="<<funX<<endl;
x1=a+l/4;
funX1=function(x1)
cout<<"x1= "<<x1;
cout<<"
f(x1)="<<funX1<<endl;
x2=b-l/4;
funX2=function(x2)
cout<<"x2= "<<x2;
cout<<"
f(x2)="<<funX2<<endl;
if (funX1 < funX) { b = x; x = x1;}
if (funX2 < funX) { a = x; x = x2;}
if (funX2 >= funX) { a = x1; b =
x2;}
}
while (l > e);
cout<< endl;
cout<<"Znachenie x:"<<x<<endl;
cout<<"Znachenie f(x):"<<function(x)<<endl;
return
x;
}
double function(double x)
{
return
(127/4)*x*x-(61/4)*x+2;
}
5. Сводная таблица результатов решения задач
e= 0.1
f(x)=(127/4)*x*x-(61/4)*x+2
{0}: [-1 , 1]
x= 0 f(x)=2
x1= -0.5 f(x1)=17.25
x2= 0.5
f(x2)=2.25
{1}: [-0.5 , 0.5]
x= 0 f(x)=2
x1= -0.25 f(x1)=7.6875
x2= 0.25
f(x2)=0.1875
{2}: [0 , 0.5]
x= 0.25 f(x)=0.1875
x1= 0.125 f(x1)=0.609375
x2= 0.375
f(x2)=0.734375
{3}: [0.125 , 0.375]
x= 0.25 f(x)=0.1875
x1= 0.1875 f(x1)=0.277344
x2= 0.3125
f(x2)=0.339844
{4}: [0.1875 , 0.3125]
x= 0.25 f(x)=0.1875
x1= 0.21875 f(x1)=0.202148
x2= 0.28125
f(x2)=0.233398
{5}: [0.21875 , 0.28125]
x= 0.25 f(x)=0.1875
x1= 0.234375 f(x1)=0.187256
x2= 0.265625
f(x2)=0.202881
Znachenie x:0.234375
Znachenie f(x):0.187256
x*x-12*x
e= 0.01
{0}: [-10 , 10]
x1= -2.36068 f(x1)=33.901
x2= 2.36068 f(x2)=-22.7553
l=12.3607
{1}: [-2.36068 , 10]
x1= 2.36068 f(x1)=-22.7553
x2= 5.27864 f(x2)=-35.4796
l=7.63932
{2}: [2.36068 , 10]
x1= 5.27864 f(x1)=-35.4796
x2= 7.08204 f(x2)=-34.8292
l=4.72136
{3}: [2.36068 , 7.08204]
x1= 4.16408 f(x1)=-32.6294
x2= 5.27864 f(x2)=-35.4796
l=2.91796
{4}: [4.16408 , 7.08204]
x1= 5.27864 f(x1)=-35.4796
x2= 5.96748 f(x2)=-35.9989
l=1.8034
{5}: [5.27864 , 7.08204]
x1= 5.96748 f(x1)=-35.9989
x2= 6.3932 f(x2)=-35.8454
l=1.11456
{6}: [5.27864 , 6.3932]
x1= 5.70437 f(x1)=-35.9126
x2= 5.96748 f(x2)=-35.9989
l=0.688837
{7}: [5.70437 , 6.3932]
x1= 5.96748 f(x1)=-35.9989
x2= 6.13009 f(x2)=-35.9831
l=0.425725
{8}: [5.70437 , 6.13009]
x1= 5.86698 f(x1)=-35.9823
x2= 5.96748 f(x2)=-35.9989
l=0.263112
{9}: [5.86698 , 6.13009]
x1= 5.96748 f(x1)=-35.9989
x2= 6.02959 f(x2)=-35.9991
l=0.162612
{10}: [5.96748 , 6.13009]
x1= 6.02959 f(x1)=-35.9991
x2= 6.06798 f(x2)=-35.9954
l=0.1005
{11}: [5.96748 , 6.06798]
x1= 6.00587 f(x1)=-36
x2= 6.02959 f(x2)=-35.9991
l=0.0621124
{12}: [5.96748 , 6.02959]
x1= 5.9912 f(x1)=-35.9999
x2= 6.00587 f(x2)=-36
l=0.0383876
{13}: [5.9912 , 6.02959]
x1= 6.00587 f(x1)=-36
x2= 6.01493 f(x2)=-35.9998
l=0.0237248
{14}: [5.9912 , 6.01493]
x1= 6.00026 f(x1)=-36
x2= 6.00587 f(x2)=-36
l=0.0146627
{15}: [5.9912 , 6.00587]
x1= 5.9968 f(x1)=-36
x2= 6.00026 f(x2)=-36
l=0.00906208
Znachenie x:6.00133
Znachenie f(x):-36
6.
Сводная таблица
f(x) = x2 – 12x | ||||
E | X | F(x) | N | |
[-10,10] | 0.01 | 6.00133 | -36 | 15 |
0.001 | 5.99986 | -36 | 20 | |
[0,100] | 0.01 | 5.99869 | -36 | 19 |
0.001 | 5.99995 | -36 | 23 | |
[1,5] | 0.01 | 4.99616 | -36 | 12 |
0.001 | 4.9993 | -36 | 17 | |
f(x)=2x2+(16/x) | ||||
E | X | F(x) | N | |
[1.6, 2] | 0.01 | 1.60426 | 15.1207 | 7 |
0.001 | 1.60038 | 15.1201 | 12 | |
[0.1,2] | 0.01 | 1.58714 | 15.1191 | 10 |
0.001 | 1.58731 | 15.1191 | 15 | |
[1,4] | 0.01 | 1.58514 | 15.1191 | 11 |
0.001 | 1.5875 | 15.1191 | 16 | |
f(x)= (127/4)x2-(61/4)x+2 | ||||
E | X | F(x) | N | |
[-1,1] | 0.1 | 0.234375 | 0.187256 | 5 |
0.01 | 0.248047 | 0.186642 | 8 | |
0,001 | 0,249756 | 0,18738 | 11 | |
[-1,2] | 0.1 | 0.476563 | 1.89203 | 5 |
0.01 | 0.498535 | 2,22663 | 9 | |
0,001 | 0,499817 | 2,24707 | 12 | |
[0.2,10] | 0.1 | 5,08086 | 726,056 | 7 |
0.01 | 19 | |||
0,001 |
Информация о работе Методы одномерной оптимизации. Метод золотого сечения