Программа нахождения минимума функции двух переменных
Белорусский национальный технический университет
Факультет горного дела и экологии
Кафедра «Горные машины»
Тема Программа нахождения минимума функции двух переменных
Исполнитель: студент факультета ГДЭ, 2 курса,
группы 102810 Хамицевич Дмитрий Николаевич
Руководитель проекта: старший преподаватель
Белорусский национальный технический университет
Кафедра «Горные машины»
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе
по дисциплине «Информатика»
Тема Программа нахождения минимума функции двух переменных
Исполнитель: ______________________________
студент 2-го курса 102810 группы
Руководитель проекта: __________________________ Петренко С.М.
ст. преподаватель
Содержание
Введение
1. Постановка
задачи……………………………………………………....
2. Математическая формулировка задачи………………………...………6
3. Алгоритмизация
задачи ………………………………………..…...….
4. Идентификаторы программы…………………………………………..10
5. Блок –
схема алгоритма………………………………………
6. Текст исходной программы…………………………………………….20
7. Результаты
выполнения программы…………………………
8. Анализ
результатов…………………………………………………
9. Инструкция
по работе с программой……………………
Заключение
Список использованных источников
Введение
В настоящее время проникновение компьютерной техники в нашу жизнь очень велико. И это процесс приобрёл глобальные масштабы. В мире существует мало предприятий, на которых нет компьютеров, а также предприятий, которые не стремятся максимально автоматизировать производственный процесс.
Практически во всех научно-исследовательских институтах, конструкторских бюро, а также простых школьных лабораториях объёмные или очень сложные расчёты производят с помощью компьютера. К настоящему времени существует множество программ, способствующих автоматизации расчётов, а также значительному их упрощению. В большинстве своём - это специализированные программные продукты, предназначенные для нужд конкретного потребителя.
В курсовой работе в соответствии с заданием на проектирование решается задача поиска минимума функции .
В данной
пояснительной записке
Рассматриваются вопросы математической формулировки и алгоритмизации задачи, разработки блок-схемы алгоритма ее решения, составления исходной Pascal-программы и реализация вычислений по составленной программе.
1. Постановка задачи
Ставится задача составить программу поиска минимума функции методом квадратичной интерполяции-экстраполяции и методом поразрядного приближения.
f(x1,x2)=(x12+x22-1)2+(x13-x2)
Программа должна обеспечивать выбор метода пользователем посредством меню. Вид функции задаётся в подпрограмме –функции. Определить минимум функции (1).
Таким образом, программа должна обеспечивать возможность:
- выбора пользователем метода решения по средствам меню;
- ввода с клавиатуры исходных данных;
- реализацию функции в подпрограмме –функции;
- вывода результатов вычисления на дисплей в удобном для восприятия виде.
Кроме того, целесообразно предоставить пользователю возможность получить краткую справку по программе, а также давать подсказки по ходу работы с программой.
В результате сформулируем следующую задачу по созданию программы:
- программа после загрузки должна выводить на дисплей исходное окно-заставку, в которой отображаются общие сведения о статусе программы и её авторах;
- после выполнения указанной в строке подсказки процедуры перехода должно выводиться вертикальное меню с пунктами: «Справка», «Метод спирального координатного спуска», «Метод квадратичной интерполяции-экстраполяции» и «Выход»;
- при выборе в меню пункта «Справка» должна выводиться краткая, справка о назначении программы и порядке работы с ней;
- после выбора в меню пункта метода решения должно открываться отдельное окно, в котором будут выводиться запросы программы об исходных данных и в этом же окне после ввода исходных значений будет выводиться результат вычисления виде функции;
- при выборе пункта меню «Выход» программы должна завершать работу.
2. Математическая формулировка задачи
Многомерная оптимизация заключается в поиске экстремумов функций многих переменных F(x1,x2) (рис. 1).
Рис.1 Поиск экстремумов функции.
Одним из наиболее надежных методов прямого поиска экстремума функции N переменных является метод спирального координатного спуска.
Пусть задана функция n переменных:
Поиск минимального значения начинаем с некоторой начальной точки Xk и начального шага d(предельное значение для шага h). :
d 1 k=h.
Определяется
направление минимизации
Для этого
последовательно дают
Вычисляем значение функции в точках
F(X1,...,Xk-h,...,Pn),
F(X1,...,Xk,...,Xn),
F(X1,...,Xk+h,...,xn).
Если из этих трех значений функция минимальна в крайней точке, то принимаем ее за начальную, если в средней точке (X1,...,Xk,...,Xn), то она принимается за начальную, а размер шага по xk уменьшается на коэффициент r и становится равным по k-му аргументу:
h1
k=h1 k r.
Вычисления прекращаются, если размер шага по всем аргументам становится меньше d-заданное или количество вычислений функции F становится больше m2.
Метод квадратичной интерполяции-экстраполяции.
При использовании метода квадратичной интерполяции-экстраполяции в качестве интерполяционной функции на каждом отрезке [xi-1, xi+1] принимается квадратный трехчлен. Уравнение квадратного трехчлена:
y=aix2 + bix+ci, xi-1£x£xi+1 (9)
содержит коэффициенты ai, bi, ci для определения которых необходимы три уравнения. Ими служат условия для прохождения параболы (1) через три точки (xi-1, yi-1), (x, yi), (xi+1, yi+1). Эти условия можно записать в виде:
aixi-12 + bixi-1 + ci = yi-1
aixi+12 + bixi+1 + ci = yi+1
Отсюда находятся коэффициенты ai, bi, ci:
где h=(xi+1-xi+1)/2.
Таким образом, абсцисса точки минимума
xm=-b/(2c) (13)
Интерполяция для любой точки проводится по трем ближайшим к ней узлам.
.
3. Алгоритмизация задачи
В соответствии
с постановленной в разделе 2 задачей
целесообразно реализовать
Алгоритм работы головной программы следующий:
- Скрыть курсор с использованием подпрограммы - процедуры скрытия курсора и вывести в специальном окне заставку программы, содержащую сведения о назначении программы, исполнителе и руководителе курсовой работы, а также подсказку для пользователя о последующих действиях, с использованием подпрограммы - процедуры заставки.
- Запустить подпрограмму-процедуру вертикального меню при нажатии любой клавиши .
- Запустить подпрограмму-процедуру справки и вывести в специальном окне справочные сведения о работе с программой при выборе пункта меню «Справка» с использованием строки-подсказки о возврате в меню.
- Запустить подпрограмму-процедуру ввода начальных условий: h-начального шага, (x1, x2 , x3 )-начальных значений и точности результата-e.
- Запустить подпрограмму-процедуру поиска минимума функции и вывода результатов вычислений, а также строки-подсказки о возврате в меню.
- Завершить работу программы при выборе пункта меню «Выход».
Алгоритм нахождения минимума функции методом координатного спуска в подпрограмме-процедуре включает следующие шаги:
- Создать окно для ввода исходных данных и вывода результатов вычисления.
- В подпрограмме-процедуре организовать ввод значений: начального шага поиска(δ=h), точности результата(е), в цикле ввести начальные значения xi (i=1…2);
- Вычислить значения функции в подпрограмме-функции в начальных заданных точках F(X1+h,...,Xi,...,Xn);
- Проверяем условие : если F(X1,...,Xi,...,Xn)- F(X1+h,...,Xi,...,Xn)<0, то переходим к п.4 и увеличиваем следующее начальное значение на шаг h: xi=xi+h;
- Если не выполняется п.5, то меняем знак на противоположный и уменьшаем шаг на коэффициент R: h:=-h/R;
- Проверяем условие: если |h|>e/5 , то идём к п.5;
- Вывести результаты вычислений в том же окне;
- Вывести в окне запрос о переходе к меню;
Алгоритм нахождения минимума функции методом квадратичной интерполяции-экстраполяции в подпрограмме-процедуре включает следующие шаги:
1.Создать окно для ввода исходных данных и вывода результатов вычисления.
2. В подпрограмме-процедуре организовать ввод значений: начального шага поиска(δ=h), точности результата(е), в цикле ввести начальные значения xi (i=1…2);
3. Организовываем цикл
for i:=1 to n do
- Вычисляем два смежных значения аргумента F(x): x0=xi-h и x2=xi+h.
- Вычисляем три значения F(x): F(x0)=F0 , F(xi)=Fi и F(x2)=F2.
- Вычисляем коэффициенты:
C=1/2h2*(F0-2Fi+F2),
D=((-F0(2xi+h)+4Fixi-F2(2xi-h)
и по ним вычисляем аналитически положение экстремума:
xmi=-D/2C;
- Проверяем условие (xmi-xi)<E. Если оно выполняется , задаём xi=xmi и идём к п.3. Если выполняется то считаем xmi найденным с заданной точность E, вычисляем F(xm) и останавливаем счет.
- Вывести результаты вычислений в том же окне;
- Вывести в окне запрос о переходе к меню;