Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ»
кафедра МОЭВМ
ОТЧЕТ
по лабораторной работе №2
«Исследование методов полиномиальной
интерполяции для поиска
минимума целевых функций»
Вариант 3
Выполнили Рыбаков М.
Миналенко С.
Куракин А.
Факультет КТИ
Группа № 6373
Преподаватель Тревгода М.А.
Санкт-Петербург, 2008
ЦЕЛЬ РАБОТЫ И ТРЕБОВАНИЕ ЗАДАНИЯ
Цель работы – сравнение двух методов одномерной минимизации – прямого и интерполяционного; разработка программы, реализующей прямой метод на этапе установления границ начального интервала и метод полиномиальной интерполяции для локализации искомого минимума.
Задание (Вариант 3):
Метод дихотомии-Пауэлла.
Тестовая функция f(x)=x4-14x3+60x2-70x.
Точность локализации минимума ε=10-2.
Значение минимума x*=0,780884.
График рассматриваемой функции:
2. КРАТКОЕ ОПИСАНИЕ МЕТОДОВ
Метод дихотомии относится к последовательным стратегиям. Задается начальный интервал неопределенности и требуемая точность. Алгоритм опирается на анализ значений функции в двух точках. Для их нахождения текущий интервал неопределенности делится пополам и в обе стороны от середины откладывается по ε/2, где ε- малое положительное число (в нашей программе переменная с именем delta). Условия окончания процесса поиска стандартные: поиск заканчивается, когда длина текущего интервала неопределенности оказывается меньше установленной величины (переменная с именем eps).
Алгоритм:
Шаг 1. Задать начальный интервал неопределенности [a,b], ε>0 - малое число, L>0 – точность.
Шаг 2. Положить k=0.
Шаг 3. Вычислить ,,,.
Шаг 4. Сравнить с:
а) если , положить,и перейти к шагу 5;
б) если , положить,;
Шаг 5. Вычислить , и проверить условие окончания:
а) если , процесс поиска завершается и;
б) если , положитьk=k+1 и перейти к шагу 3.
Метод квадратичной интерполяции (метод Пауэла) относится к последовательным стратегиям. Задаётся начальная точка и с помощью пробного шага находятся три точки так, чтобы они были как можно ближе к искомой точке минимума. В полученных точках вычисляются значения функции. Затем строится интерполяционный полином второй степени, проходящий через имеющиеся три точки. В качестве приближения точки минимума берётся точка минимума полинома. Процесс поиска заканчивается, когда полученная точка отличается от наилучшей из трёх опорных точек не более чем на заданную величину.
Алгоритм:
Шаг 1. Задать начальную точку Х1, величина шага ΔХ>0, ε1 и ε2 – малые положительные числа, характеризующие точность.
Шаг 2. Вычислить Х2= Х1+ ΔХ.
Шаг 3. Вычислить f(Х1)=f1 и f(Х2)=f2.
Шаг 4. Сравнить f(Х1) с f(Х2):
Если f(Х1)>f(Х2), положить Х3= Х1+2ΔХ.
Если f(Х1)≤f(Х2), положить Х3= Х1-ΔХ.
Шаг 5. Вычислить f(Х3)=f3.
Шаг 6. Найти Fmin=min{ f1, f2, f3}, Хmin=Хi:f(Хmin)= Fmin.
Шаг 7. Вычислить точку минимума интерполяционного полинома, построенного по трём точкам:
,
и величину функции f().Если знаменатель в формуле дляна некоторой итерации обращается в нуль, то результатом интерполяции является прямая. В этом случае рекомендуется обозначить Х1= Хmin и перейти к шагу 2.
Шаг 8. Проверить условия окончания:
Тогда:
Если оба условия выполнены, процедура закончена и Х*;
Если хотя бы одно из условий не выполнено и [ Х1, Х3], выбрать наилучшую точку (Хmin или ) и две точки по обе стороны от неё. Обозначить эти точки в естественном порядке и перейти к шагу 6;
Если хотя бы одно из условий не выполнено и [ Х1, Х3], то положить Х1=и перейти к шагу 2.
3. Блок-схема
4. Спецификация программы.
4.1. Исходные данные.
Исходными данными является начальная точка для алгоритма Swann, шаг для алгоритма Swann, шаг для Пауэлла, требуемая точность вычислений. (все перечисленные параметры вводятся перед компилированием, так что, по сути, исходными данными не являются, т.к. в задаче была указана одна функция и вся программа была оптимизирована под конкретные данные)
4.2. Выходные данные.
Выходными данными являются:
Значение границ интервала, полученного Swann, корень и интервал, полученные методом дихотомии и количество итераций.
Значение границ интервала, полученного Swann, корень полученный методом Пауэлла и количество итераций.
Значение границ интервала, полученного Swann, приблизительный корень и интервал, полученный методом дихотомии к 5-ой итерации, результат работы метода Пауэлла и количество итераций для каждого из алгоритмов.
4.4. Назначение программы.
Программа находит минимум функции три раза. Методом дихотомии, методом Пауэлла и комбинацией этих двух методов.
4.4.1 Основные переменные;
функция Swan
Имя
Тип
Описание
x1
double
Левая точка интервала
x2
double
Правая точка интервала
t
double
Шаг в Swan
a
double
Левая граница интервала
b
double
Правая граница интервала
d
double
Вспомогательная переменная для шага
k
int
Счетчик итераций
функция Dixotomia
Имя
Тип
Описание
x1
double
Левая точка интервала
x2
double
Правая точка интервала
a
double
Левая граница интервала
b
double
Правая граница интервала
eps
double
Эпсилон – точность вычислений
delta
double
Шаг для выбора соседних от x1 точек в дихотомии
len
double
сокращение однотипных вычислений
k
int
Счетчик итераций
функция Pauell
Имя |
Тип |
Описание |
x1 |
double |
Левая точка интервала |
x2 |
double |
Средняя точка интервала |
Х3 |
double |
Правая точка интервала |
a |
double |
Левая граница интервала |
b |
double |
Правая граница интервала |
eps |
double |
Эпсилон – точность вычислений |
dx |
double |
Шаг для метода Пауэлла |
f1,f2,f3,fd |
double |
Значение функции в соответствующих точках |
d |
double |
значение точки минимума полинома |
fmin |
double |
минимальное значение функции среди трех точек |
xmin |
double |
аргумент при минимальном значении функции среди трех точек |
k |
int |
Счетчик итераций |
4.4.2 Процедуры и функции.
Имя |
Параметры |
Назначение | ||
входные |
выходные |
транзитные | ||
fun |
const double x |
Return double |
|
Находит значение целевой функции |
Swann |
float start_point |
Return bool, double *a,double *b |
|
алгоритм Свенна, выбирающий интервал неопределенности
|
abs |
const double a |
Return double |
|
Модуль вещественного числа |
Dixotomia |
bool alone=false |
|
double &a, double &b |
Метод дихотомии |
Pauell |
bool alone=false |
|
double &a,double &b |
Метод Пауэлла |
4.3. Место и форма представления данных.
Выходные данные выводятся на экран.
4.4. Сценарий диалога с пользователем
Работа программы предусматривает только одно место взаимодействия с пользователем: после вывода полученных результатов, программа ожидает нажатие любой клавиши и выполняет выход.