Определение минимума функции при неизвестном параметре k
Определение параметра k интегрированием с помощью формулы Симпсона, которая обращалась к методу Лагранжа, для нахождения значения функции в заданной точке. Разработка процедуры поиска минимума методом дихотомии. Проверка результатов с помощью MathCad.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 15.07.2012 |
Размер файла | 1,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Государственное образовательное учреждение высшего
профессионального образования
Московский технический университет связи и информатики
КУРСОВАЯ РАБОТА
по информатике
Москва 2012 г.
Оглавление
1. Задание
2. Постановка задачи
3. Описание используемых численных методов
4. Схемы алгоритмов решения задачи
5. Тестирование написанной программы
6. Программный код
7. Решение поставленной задачи
8. Проверка результатов с использованием математического пакета
9. Основные результаты и выводы по работе.
10. Список литературы и интернет ресурсов
1. Задание
Определить минимум функции с точностью на отрезке
Параметр , функция задана таблично.
0 |
0.1 |
0.2 |
0.3 |
0.4 |
||
1.758203 |
1.738744 |
1.718369 |
1.697320 |
1.675834 |
Найти:
1)параметр
2)минимум функции
2. Постановка задачи
Для нахождения уравнения, описывающего таблично заданную функцию . Воспользуемся интерполяцией методом Лагранжа. После нахождения искомой зависимости , при помощи формулы Симпсона, найдем под площадь под этой кривой. Далее при помощи метода ГДШ найдем минимум исходной функции подставив в уравнение ранее найденный параметр .
Укрупненная схема алгоритма:
3. Описание используемых численных методов
1) Для интерполяции исходной таблично заданной функции будем использовать интерполяционный многочлен Лагранжа т.к.:
· Хоть узлы в исходной таблично заданной функции заданы на равном расстоянии, но нам необходимо знать значения функции как в начале отрезке, в середине, так и в конце, при использовании интерполяционной функции Ньютона нам придется использовать две разных формулы для начала отрезка, и для конца. Для упрощения решаемой задачи воспользуемся методом Лагранжа
· Так же это нам позволит при решении аналогичных задач брать узлы в таблице не на равном расстоянии, следовательно этот шаг, сделает нашу программу более универсальной.
Общий вид интерполяционного многочлена Лагранжа:
В исходной функции задано пять узлов, следовательно, будем использовать многочлен Лагранжачетвертой степени, имеющий вид:
Решение:
2) Для нахождения площади будем пользоваться формулой Симпсона, т.к. данный метод в купе с правилом Рунге Кутта, позволяет достичь наибольшей точности.
Решение:
3) Для поиска минимума воспользуемся одномерной оптимизации: методом дихотомии, т.к.:
· данный метод прост в применении
· на каждой итерации длинна отрезка неопределенности уменьшается почти в 2 раза, следовательно, обеспечена быстрая сходимость
Чтобы использовать метод дихотомии, надо провести первоначальное определение интервала неопределенности, на котором содержится минимум функции: для этого проведем исследование, как меняется вид нашей функции в зависимости от значений параметра k:
Как видно из графиков, если параметрkпринимает отрицательные значения, то наша функция не имеет минимума и нам необходимо решать обратную задачу, нахождения максимума, следовательно, у нас накладывается ограничение на параметр k: , в случае положительного kнеобходимо выполнения условия нахождения одного минимума на отрезке неопределённости:
Как видно производная функции обращается в ноль только в одной точке, следовательно, функция имеет один глобальный максимум, и не требует дополнительного нахождения отрезка неопределённости. Длинна начального отрезка поиска минимума будет влиять только то, как быстро мы найдем минимум, но никак не повлияет на результат, и не приведет к ошибочным вычислениям
4. Схемы алгоритмов решения задачи
Данная процедура осуществляет вычисления значения полинома Лагранжа в заданной точке, и возвращает данное значение.
Данная процедура осуществляет подсчет интеграла по формуле Симпсона, на вход процедуре подается исходная функция, и границы нахождения интеграла.
Процедура нахождения минимума методом дихотомии
Процедура описывающая исходную функцию
5. Тестирование написанной программы.
Для проверки правильности работы процедур и функций, используем функцию:
, рассмотрим данную функцию на интервале [-2;2], как узлы интерполяции для нахождения параметра kвозьмем:
x |
0 |
1 |
1.5 |
2.5 |
3 |
|
y |
0 |
1 |
2.25 |
6.25 |
9 |
Функция, описывающая изначально параметр k:
Т.к. выбрана простая функция то, минимум ее находится в точке kв данном случае на рисунке этот параметр равен9 и минимум находится в 9, поэтому начальный отрезок не определённости будем брать , в нашем случае это
Как видно программа, верно, нашла минимум функции с заданной точностью.
6. Программный код
ImportsSystem.Math
ModuleModule1
Functionf(ByVal k AsSingle, ByVal x AsSingle) AsSingle
f = k * (2 * (x ^ 2) + 3 * Exp(-x))
Return f
EndFunction
Процедура нахождения значения функции в заданной точке x1 по формуле Лагранжа, к ней обращается каждый раз процедура Simpson когда ей нужно найти значение функции в определённой точке
PublicFunctionLX(ByVal xl AsSingle, ByVal x() AsSingle, ByVal y() AsSingle) AsDouble
Dim l, l1 AsDouble
Dimi, j AsInteger
Dim k AsInteger
l = 0
k = UBound(x)
Fori = 0 To k
l1 = y(i)
For j = 0 To k
Ifi<> j Then
l1 = l1 * (xl - x(j)) / (x(i) - x(j))
EndIf
Next
l = l + l1
Next
Return l
EndFunction
Процедура вычисления значения интеграла методом Симпсона с использованием правила Рунге, т.е. с двойным просчетом интеграла с шагом h и h/2
SubSimpson(ByVal a AsSingle, ByVal b AsSingle, ByRef Integral AsSingle, ByVal EE AsSingle, ByVal x() AsSingle, ByVal y() AsSingle)
Dim n AsInteger
Dimi, c AsInteger
Dim h, s1, x1 AsSingle
n = 2
h = (b - a) / n
Integral = (h / 3) * (LX(a, x, y) + 4 * (LX((a + b) / 2, x, y)) + LX(b, x, y))
Do
n = 2 * n : h = (b - a) / n : s1 = Integral : c = 4 : x1 = a : Integral = LX(a, x, y) + LX(b, x, y)
Fori = 1 To n - 1
x1 = x1 + h
Integral = Integral + c * LX(x1, x, y)
c = 6 - c
Next
Integral = Integral * h / 3
LoopUntilAbs(s1 - Integral) / 15 < EE
EndSub
Процедура нахождения точки минимума методом дихотомии, предварительно вызывается процедура нахождения параметра k
SubDihotomia(ByRef a AsSingle, ByRef b AsSingle, ByVal EE AsSingle, ByVal d AsSingle, ByRef x3 AsSingle, ByRef f1 AsSingle, ByRef Data AsDataGridView, ByVal k AsSingle)
Dim x1, x2 AsSingle
Dim n AsInteger
n = 1
x1 = (a + b - d) / 2
x2 = (a + b + d) / 2
Data.Rows.Add(n, a, b, x1, x2, b - a, f(k, x1), f(k, x2))
Do
Iff(k, x1) > f(k, x2) Then
a = x1
Else
b = x2
EndIf
x1 = (a + b - d) / 2
x2 = (a + b + d) / 2
n = n + 1
Data.Rows.Add(n, a, b, x1, x2, b - a, f(k, x1), f(k, x2))
LoopUntil (b - a) <= EE
x3 = (a + b) / 2
f1 = f(k, x3)
EndSub
EndModule
PublicClassForm1
PrivateSub Button2_Click(sender AsSystem.Object, e AsSystem.EventArgs) Handles Button2.Click
Dim EE AsSingle
Dim a, b, c, d, delta AsSingle
Dim Integral AsSingle
Dim n AsInteger
Dimx(), y() AsSingle
Dimxmin, fxminAsSingle
n = DataGridView2.Rows.Count - 1
'точностьвычислений
EE = Val(TextBox9.Text)
a = Val(TextBox1.Text)
b = Val(TextBox6.Text)
c = Val(TextBox7.Text)
d = Val(TextBox8.Text)
'параметр метода дихотомии выбираем равный точность попалам, чтобы добится необходимой длины отрезка неопределнности, b-a<2dlta<EE, следовательноdelta=EE/2
delta = EE / 2
'проверка наличия в таблице, таблично заданной функции хотябы двух точек, защита отзависании программы
If n <= 1 Then
MsgBox("Вы не доконца заполнили таблицу")
Exit Sub
EndIf
ReDimx(0 To n - 1), y(0 To n - 1)
'считываем данные из таблицы в два массива x()-массив значений икс, y()-массив значений игрик
Fori = 0 To n - 1
x(i) = CDbl(Val(DataGridView2.Item(0, i).Value))
y(i) = CDbl(Val(DataGridView2.Item(1, i).Value))
Next
'подсчитывая интеграл, находим значение нашего параметра k=Integral
Simpson(a, b, Integral, EE, x, y)
TextBox2.Text = Integral
'защита от зависания, если вдруг параметр k=integral меньше или равен нулю, то минимума у функции не будет, следовательно далее выполнение программы не целесообразно
IfIntegral<= 0 Then
MsgBox("Данная функция не иммет минимума")
EndIf
'передаем найденыйпарметр k=Integral и методом дихотомии находим минимум функции
Dihotomia(c, d, EE, delta, xmin, fxmin, DataGridView1, Integral)
'агрумент при котором функция минимальна
TextBox3.Text = Format(xmin, "0.00000")
'значение функции в точке минимума
TextBox4.Text = Format(fxmin, "0.00000")
EndSub
PrivateSub Button1_Click(sender AsSystem.Object, e AsSystem.EventArgs) Handles Button1.Click
End
EndSub
PrivateSub Form1_Load(sender AsSystem.Object, e AsSystem.EventArgs) HandlesMyBase.Load
Button2.Enabled = False
EndSub
PrivateSub Form1_Load1(sender AsSystem.Object, e AsSystem.EventArgs) HandlesMyBase.MouseMove
If TextBox1.Text <>""And TextBox6.Text <>""And TextBox7.Text <>""And TextBox8.Text <>""And TextBox9.Text <>""Then
Button2.Enabled = True
EndIf
EndSub
EndClass
7. Решение поставленной задачи
Решение всей задачи происходит на одной форме:
Проверка результатов с использованием математического пакета.
8. Основные результаты и выводы по работе
1) Разработана последовательность решения задачи, которая заключается в отыскании минимума функции при неизвестном параметре k,который вычисляется дополнительно.
2) Для решения задачи разработаны и оттестированы процедуры, реализующие выбранные методы (метод Лагранжа, формула Симпсона, метод дихотомии). Результаты тестирования показали работоспособность алгоритмов и программ. Указанные процедуры были использованы при разработке программы решения задачи, поставленной в курсовой работе.
3) Параметр k был найдем интегрированием с помощью формулы Симпсона которая обращалась к методу Лагранжа, для нахождения значения функции в заданной точке, далее был найден минимум функции:
4) При разработке процедуры поиска минимума методом дихотомии было проведено исследование, влияние параметра kна наличиние минимума у функции, которое показало что необходимое условие существование минимума , а так же было доказано, что функция имеет один глобальный максимум.
5) Разработан удобный, интуитивно понятный интерфейс пользователя приложения. Так же все промежуточные вычисления программы выведены на экран.
6) Проведена проверка результатов работы программы с использованием пакета MathCad. Результаты проверки полностью совпадают с результатами, полученными при выполнении программы.
7) Данная работа может представлять интерес в областях решения задач, когда необходимо решить задачу оптимизации одномерной функции, при неизвестном параметре, который можно найти только в некоторых точках, например, состояние некоторой системы в определённые моменты времени.
9. Список литературы и интернет ресурсов
функция минимум дихотомия
1) А.П. Головацкая Информатика. Вычислительная математика. МТУСИ 2006, - 260с.
2) Семенова Т.И., Шакин В.Н. Практикум. Математический пакет Mathcad в дисциплине «ИНФОРМАТИКА» - М.: МТУСИ, 2006, -121с.
3) веб-сайт: http://www.google.ru/
4) веб-сайт: http://www.yandex.ru/
Размещено на Allbest.ru
Подобные документы
Определение минимума функции на заданном отрезке методами перебора, поразрядного поиска, дихотомии, золотого сечения и методом парабол. Нахождение и расчет нулей функции методом Ньютона. Построение графика данной функции, ее минимальное значение.
реферат [55,6 K], добавлен 09.04.2013Создание программы для поиска минимума функции двух вещественных переменных в заданной области с помощью генетического алгоритма. Генетические алгоритмы и операторы. Создание начальной популяции. Размножение. Мутация и селекция. Тестирование программы.
курсовая работа [131,6 K], добавлен 22.02.2015Нахождение минимума целевой функции для системы ограничений, заданной многоугольником. Графическое решение задачи линейного программирования. Решение задачи линейного программирования с использованием таблицы и методом отыскания допустимого решения.
курсовая работа [511,9 K], добавлен 20.07.2012Разработка программного обеспечения, реализующего нахождение минимального значения заданной функции многих переменных и ее точку минимума методом сопряжённых градиентов. Минимизация функции вдоль заданного направления. Блок-схема алгоритма минимизации.
отчет по практике [725,6 K], добавлен 01.10.2013Постановка задачи и ее формализация. Поиск значений интерполяционного многочлена в точках x1 и x2. Поиск минимума функции F(x) на отрезке [a;b]. Проверка условий сходимости методов. Тестирование программных модулей. Детализированная схема алгоритма.
курсовая работа [893,0 K], добавлен 04.02.2011Преобразование формулы и решение ее с помощью Метода Эйлера. Моделирование метода оптимизации с функцией Розенброка. Поиск модели зашумленного сигнала. Нахождение минимума заданной целевой функции методом покоординатного спуска нулевого порядка.
курсовая работа [1,2 M], добавлен 21.12.2013Выбор наиболее эффективного метода поиска экстремума для функции. Оценка погрешности определения точки минимума. Проверка унимодальности уравнения аналитическим методом и по графику. Сравнение алгоритмов по количеству обращений к функции и по точности.
контрольная работа [909,0 K], добавлен 14.08.2019Решение нелинейного уравнения вида f(x)=0 с помощью программы Excel. Построение графика данной функции и ее табулирование. Расчет матрицы по исходным данным. Проведение кусочно-линейной интерполяции таблично заданной функции с помощью программы Mathcad.
контрольная работа [1,8 M], добавлен 29.07.2013Сравнение эффективности программ Excel и Mathcad при решении задач нахождения корней нелинейного уравнения и поиска экстремумов функции. Проведение табулирования функции на заданном интервале. Построение графика двухмерной поверхности в Excel и Mathcad.
курсовая работа [1,4 M], добавлен 07.05.2013Построение графика функции. Поиск корней уравнения методом половинного деления. Определение минимума функции методом перебора и значения аргумента. Вычисление определенного интеграла на заданном отрезке с использованием метода правых прямоугольников.
контрольная работа [316,1 K], добавлен 13.11.2014