Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчет лаба 2

.docx
Скачиваний:
9
Добавлен:
05.09.2014
Размер:
99.11 Кб
Скачать

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

Санкт-Петербургский государственный

электротехнический университет «ЛЭТИ»

Кафедра САПР

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 2

«Исследование методов полиномиальной интерполяции

для поиска минимума целевых функций»

Выполнил: .

Группа:

Проверил:

(Ф.И.О.)

Санкт-Петербург

2012

Оглавление:

Задание…………………………………………………………………………….3

Описание методов оптимизации…………………………………………………3

Блок-схема программы………………………………………………………..…5

Спецификация программы……………………………………………………….6

Текст программы ………………………………………………………………....6

Результаты тестирования…………………….………….……………………….9

Графическая интерполяция………………………………………………………9

Выводы…………………………………………………………………………..10

Ответы на контрольные вопросы………………………………………………10

Задание:

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

Описание методов оптимизации:

Метод Свенна:

С помощью этого метода получаем начальный интервал локализации минимума.

Начальный этап:

1) задать x0 – произвольная начальная точка.

2) выбрать шаг h равным 0.001 или 0.01*|x0|.

Основной этап:

Шаг 1:

Установить направление убывания целевой функции. Для этого надо взять x2=x1+h. Если f1<f2, то надо поменять направление движения(h=-h и взять x2=x1+h).

Шаг 2:

Вычислять fk в точках xk+1=xk+hk, где hk=2hk-1, k=2,3,…,n-1 до тех пор пока не придём в точку xn такую что fn>fn-1.

Шаг 3:

Установить начальный интервал локализации минимума a1=xn-2 и b1=xn.

Метод золотого сечения-1

Более эффективный чем дихотомия по числу операций. Дихотомия за 100 вычислений сокращает интервал в 14 раз, а ЗС в 11 раз.

Начальный этап:

  1. Получить a1 и b1 методом Свенна

  2. Получит значение x1

  3. Взять λ1 = a1+t1*L1

Основной этап:

Шаг 1:

Если f1=f(λk)< f2=f(ηk) то ak+1=ak, bk+1= ηk, λk+1 = ak+1+0,318* Lk+1

Шаг 2:

Если f1< f2, то ak+1= λk, bk+1= bk, λk+1 = ηk, ηk+1 = ak+1+0,618* Lk+1

Метод экстраполяции-интерполяции

Самые неточные методы.

Начальный этап:

  1. Получить a1 и b1 методом Свенна

  2. Взять центральную точку и две соседние с не на расстоянии h.

Основной этап:

Шаг 1:

Взять 3 точки b=x0, a=b-h, c=b+h, найти аппроксимацию min.

Шаг 2:

Критерий окончания поиска

if ((d-b/b)  ε и (fd-fb)/fb ε2, то аппроксимация min будет x=(d+b)/2

иначе фиксируем новую точку как стартовую и возвращаемся на шаг 1.

Начало

h=0.01;

x1=4;

x2=x1+h;

if(fx(x2)>fx(x1))

h=-h;

x2=x1+h;

Да

Нет

h=Svenn(x1, x2, h);

cout<<a;

cout<<b;

min = zs1(a,b);

cout<<min;

c=(a+b)/2

min=inter(a,b,c);

min=fabs(min);

cout<<min;

Конец

Спецификация программы.

a, b – текущий интервала локализации

c – третья точка

h – размер шага

min –минимум

x1 – стартовая точка

k, k1, k2 – счетчики числа итераций.

Текст программы:

#include <iostream.h>

#include <math.h>

#include <stdio.h>

#include <iostream.h>

#include <conio.h>

double a,b,c;

double x1,x2,h,h1,min;

int k, k1, k2; // счетчик циклов

double t1=(sqrt(5.0)-1)/2;

double t2=(3-sqrt(5.0))/2;

double fx(double x) // заданная функция

{

return (x*x+2*x);

}

double Sven (double x1, double x2, double h)

{ // Метод Свенн

long double x3,z;

x2=x1+h;

k1=1;

while (1)

{

h=2*h;

x3=x2+h;

if (fx(x3)>fx(x2))

break;

x1=x2;

x2=x3;

k1=k1+1;

}

a=x1;

b=x3;

if (a>b) // перестановка для: а - всегда слева, b - справа

{

z=b;

b=a;

a=z;

}

return h;

}

double zs1(double a, double b) //Метод золотое сечение-1

{

double e,m,y,min;

y=a+t1*fabs(a-b);

m=a+t2*fabs(a-b);

k=1;

e=0.1;

while(fabs(a-b)>e)

{

if (fx(y)<fx(m))

{

b=m;

m=y;

y=a+t2*fabs(a-b);

}

else

{

a=y;

y=m;

m=a+t1*fabs(a-b);

}

k++;

}

min=(a+b)/2;

return min;

}

double inter(double a,double b,double c)

{

double fa,fb,fc;

fa=fx(a);

fb=fx(b);

fc=fx(c);

return (0.5*(fa*(b*b-c*c)+fb*(c*c-a*a)+fc*(a*a-b*b))/(fa*(b-c)+fb*(c-a)+fc*(a-b)));

} ;

void main()

{

clrscr();

h=0.01;

x1=4;

x2=x1+h;

if(fx(x2)>fx(x1))

{h=-h;

x2=x1+h;

}

h=Sven(x1,x2,h);

cout<<"\na = "<<a; //Получили a и b после Свенна

cout<<"\nb = "<<b;

min=zs1(a,b); // Золотое сечение 1

cout<<"\n\nZolotoe sechenie-1. k= "<<k;

cout<<"\nminimum = "<<min;

c=(a+b)/2; // Задаем 3 точку

min=inter(a,b,c);

min=fabs(min);

cout<<"\n\nInter";

cout<<"\nminimum = "<<min;

getch();

}

Результаты тестирования различных методов:

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

Точность:

0.01

X1=4

К

X*

Метод Свенна

10

[-6,23;1,45]

Метод интерполяция

1

1

Точность:

0.001

X1=4

К

X*

Метод Свенна

10

[-6,227;1,451]

Метод интерполяция

1

1

График функции

Выводы:

В данной лабораторной работе мы сравнили два метода:

1) прямой метод на этапе установления границ начального интервала

2) интерполяционный метод интерполяции для локализации исходного минимума.

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

Ответы на контрольные вопросы:

1.Когда целесообразно использовать методы полиномиальной интерполяции?

Целесообразно их использовать при выполнении сначала метода одномерной минимизации унимодальной функции (например дихотомии), а затем уже на полученном интервале искать минимум методом полиномиальной интерполяции.

2. Сравните организацию поиска в методах ДСК и Пауэлла.

Метод Пауэлла отличается от метода ДСК тем, что стартует из трех равноотстающих точек, но на второй и последующих интерациях условия |b-a|=|c-b| нарушается. И отстутствует возврат с уменьшенным вдвое шагом.

3. Как строится система из 4-х уровнений в методе кубической интерполяции?

Fa = Qa=D Fb=Qb=Ab3+Bb2+Cb+D

F/a= Q/a=C

F/b= Q/b=3Ab2+2Bb+C где Q заданная функция Ax3+Bx2+Cx+D

4.Достоинства и недостатки методов интерполяции в задачах оптимизации?

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

Недостатки: выигрыш достигается ценой ограничений на f(x) которая должна быть гладкой (т.е. допускается производная и функция не имеет разрыва)

5. Почему при минимизации целевых функций используют комбинированные стратегии поиска?

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

  1. Выполните одну итерацию метода ДСК при поиске минимума f(x) = x2 - x, x  = 3.

Предположим, что сработал метод Свенна2 и за 12 итераций мы узнали 3 точки a= -0.039 b=0.473 c=0.986 . Ищем апроксимационный минимум d = 0.3585 Далее мы берем лучшую точку из b и d. В данном случае это b. И строим 2 симметричные относительно нее точки a=b-h и c=b+h Уменьшаем h=h/2. Проверяем КОП и возвращаемся на шаг 1.

Соседние файлы в предмете Методы оптимизации