Метод наилучшей пробы
Приднестровский государственный университет им. Т.Г. Шевченко
Инженерно-технический институт
Кафедра информационных технологий и автоматизированного
управления производственными процессами
КУРСОВАЯ РАБОТА
по дисциплине «Математическое программирование»
тема: «МЕТОД НАИЛУЧШЕЙ ПРОБЫ»
Работу выполнил:
студент группы ИТ09Др62ИВ1
А.Е. Гусев
Руководитель:
Доцент, к.т.н.
Т.Д. Бордя
Тирасполь, 2012
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
. МЕТОДЫ СЛУЧАЙНОГО ПОИСКА
.1 Методы наилучшей пробы
.2 Адаптивный метод случайного поиска
. ОПИСАНИЕ АЛГОРИТМА
.1 Входные данные
.2 Блок-схема алгоритма метода Наилучшей пробы
. ОПИСАНИЕ ПРОГРАММНОЙ ЧАСТИ
.1 Выбор среды программирования
.2 Входные и выходные данные
.3 Описание программы
. КОНТРОЛЬНЫЙ ПРИМЕР
.1 Результаты работы программы
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ А - Руководство пользователя
ПРИЛОЖЕНИЕ Б - Листинг программы
ВВЕДЕНИЕ
Оптимизация как раздел математики существует достаточно давно. Оптимизация - это выбор, т.е. то, чем постоянно приходиться заниматься в повседневной жизни. Термином оптимизация в литературе обозначает процесс или последовательность операций, позволяющих получить уточненное решение. Хотя конечной целью оптимизации является отыскание наилучшего или оптимального решения, обычно приходится довольствоваться улучшением известных решений, а не доведением их до совершенства. Поэтому под оптимизацией понимают скорее стремление к совершенству, которое, возможно, и не будет достигнуто.
Необходимость принятия наилучших решений так же стара, как само человечество. Испокон веку люди, приступая к осуществлению своих мероприятий, раздумывали над их возможными последствиями и принимали решения, выбирая тем или другим образом зависящие от них параметры - способы организации мероприятий. Но до поры, до времени решения могли приниматься без специального математического анализа, просто на основе опыта и здравого смысла.
Цель данной курсовой работы:
проанализировать и обработать теоретические и экспериментальные данные по теме Метод наилучшей пробы;
анализ собранной информации;
сравнительный анализ с другими методами;
разработка программы, реализующая данный метод.
1. МЕТОДЫ СЛУЧАЙНОГО ПОИСКА
Метод случайного поиска является прямым развитием метода проб и ошибок, когда решение ищется случайно, и при удаче принимается, а при неудаче отвергается с тем, чтобы немедленно снова обратиться к случайности как к источнику возможностей. Такое случайное поведение разумно поведение разумно опирается на уверенность, что случайность содержит в себе все возможности, в том числе и искомое решение во всех его вариантах.
Метод случайного поиска, называемый так же методом Монте-Карло, основан на том, что при одном и том же числе испытаний вероятность получения решения, близкого к оптимальному, при случайном поиске больше, чем при последовательном переборе через равные интервалы изменения отдельных параметров.
Идея метода случайного поиска состоит в следующем. Пусть задача минимизации решается для некоторой ограниченной области параметров. Если это возможно, то эта область соответствующим преобразованием координат переводится в единичный гиперкуб. Если такое преобразование неосуществимо, то производится замена координат таким образом, чтобы область поиска лежала внутри единичного гиперкуба. В этом случае эффективность поиска будет сильно зависеть от соотношения объемов единичного гиперкуба и области поиска в нем.
Существуют несколько методов случайного поиска, отличия друг от друга заключаются несколькими шагами или условиями.
1.1 Метод наилучшей пробы
Задается начальная точка х°. Каждая последующая точка находится по формуле:
xk+l = хк + tk ? к (1.1)
где tk > 0 - величина шага; ?к - случайный вектор единичной длины, определяющий направление поиска; k - номер итерации. На текущей итерации при помощи генерирования случайных векторов ?* получается M точек ух,...,ум, лежащих на гиперсфере радиуса tk с центром в точке хк в соответствии с рисунком 1.1 Среди полученных точек выбирается точка ут, в которой значение функции наименьшее. Если в выбранной точке значение функции меньше, чем в центре, то дальнейший поиск продолжается из этой точки. Иначе поиск продолжается из старого центра, но с меньшим шагом до тех пор, пока он не станет меньше заранее заданной величины R.
Рисунок 1.1 - Гиперсфера полученная в результате применения данного метода
1.2 Адаптивный метод случайного поиска
Вначале задается начальная точка х°. Каждая последующая точка находится по формуле:
xk+l = хк + tk ? к (1.2)
где tk > 0 - величина шага; ?к - случайный вектор единичной длины, определяющий направление поиска; k - номер итерации. На текущей итерации при помощи генерирования случайных векторов ?к получаются точки, лежащие на гиперсфере радиуса tk с центром в точке хк в соответствии с рисунком 1.2.
Рисунок 1.2 - Гиперсфера полученная в результате применения данного метода
Если значение функции в полученной точке не меньше, чем в центре, шаг считается неудачным, происходит возврат в текущий центр и поиск продолжается. Если число неудачных шагов из текущей точки достигает некоторого числа М, дальнейший поиск продолжается из той же точки, но с меньшим шагом до тех пор, пока он не станет меньше заранее заданной величины R. Если при этом значение функции снова меньше, чем в центре, направление считается удачным и дальнейший поиск продолжается из этой. Если же значение функции стало не меньше, чем в центре, направление считается неудачным и поиск продолжается из старого центра.
2. ОПИСАНИЕ АЛГОРИТМА
Шаг 1. Задать начальную точку , коэффициент сжатия , M - число испытаний на текущей итерации, =1 - начальную величину шага, R - минимальную величину шага, N - максимальное число итерации. Положить k = 0, j = 1.
Шаг 2. Получить М реализаций случайного вектора , j =1,…,M , где - случайная величина, равномерно распределенная на интервале [-1,1].
Шаг 3. Вычислить , j = 1,…,M.
Шаг 4. Найти из условия
Проверить выполнение условий:
а) если , шаг удачный. Положить и проверить условие окончания. Если , положить и перейти к шагу 2. Если , поиск завершить
б) если , шаг неудачный и перейти к шагу 5.
Шаг 5. Проверить условие окончания:
если , процесс закончить:
если , положить и перейти к шагу 2.
2.1 Входные данные
Задать начальную точку , коэффициент сжатия , M = 3 - число испытаний на текущей итерации, =1 - начальную величину шага, R = 0.8 - минимальную величину шага, N = 10 - максимальное число итерации. Положить k = 0, j = 1.
2.2 Блок схема алгоритма метода Наилучшей пробы
нет
Да
Рисунок 2.1 - Блок схема алгоритма метода Наилучшей пробы
3. ОПИСАНИЕ ПРОГРАММНОЙ ЧАСТИ
3.1 Выбор среды программирования
поиск проба программирование C#
Для разработки приложения используется интегрированная среда разработки Visual Studio 2005, язык C#.
Создателем языка является сотрудник Microsoft Андреас Хейлсберг. Он стал известным в мире программистов задолго до того, как пришел в Microsoft.
С# является полностью объектно-ориентированным языком, где даже типы, встроенные в язык, представлены классами.
C# является мощным объектным языком с возможностями наследования и универсализации.
C# является наследником языков С/С++, сохраняя лучшие черты этих популярных языков программирования. Общий с этими языками синтаксис, знакомые операторы языка облегчают переход программистов от C++ к С#.
Одна из причин разработки нового языка - это создание компонентно-ориентированного языка для новой платформы .NET. Другие языки были созданы до появления платформы .NET, а язык C# создавался специально под эту платформу.
3.2 Входные и выходные данные
При загрузки программы пользователю необходимо ввести данные в объекты textbox:
коэффициент сжатия ? записывается в переменную B. Данное значение не должно выходить за пределы [0,1]. В случаи неправильности ввода значения, будет показано сообщение об ошибке;
начальная величина шага записывается в переменную t;
минимальная величина шага R записывается в переменную R;
максимальное число итераций N записывается в переменную N.
double B = Convert.ToDouble(textBox1.Text);R = Convert.ToDouble(textBox4.Text);t = Convert.ToDouble(textBox3.TextN = Convert.ToInt32(textBox5.Text);
Также в алгоритме содержится массив, в котором хранятся начальные координаты точки. В переменной kol хранится количество итераций.[] x = { 1, 2 };
int kol=0;
Выходными значениями будут элементы массива x, в котором хранятся результаты вычислений алгоритма, и значение переменной Fx. В данном случае в переменной Fx содержится значение функции в точке x*.("Поиск завершен\nх*=(" + Math.Round(x[0],3) + ";" + Math.Round(x[1],3) + ")\nF(x*)=" + Fy + "\nВсего итераций:" + kol);
3.3 Описание программы
Рассмотрим фрагмент кода программы, реализующая метод наилучшей пробы.
В функции Func имеется описание алгоритма принимающий два значения типа double. После чего происходят вычисления и значения подставляются в исходную функцию: . Далее передается значение, возвращаемое в качестве результата функции.
public double Func(double x1, double x2)
{4 * Math.Pow((x1 - 5), 2) + Math.Pow((x2 - 6), 2);
}
Вывод текстовой информации в объекте richTextBox осуществляется при помощи функции AText. Invoke - выполняет указанный делегат в том потоке, которому принадлежит базовый дескриптор окна элемента управления.
public void AText(string s)
{.Invoke(new MethodInvoker(delegate
{
richTextBox1.Text += s + "\n";
}));
}
На основной форме главного окна имеется кнопка Решить функцию, при её нажатии срабатывает обработчик событий, который содержит в себе различные условия проверки, ввел ли пользователь требуемые значения для решения функции.
private void Start_Click(object sender, EventArgs e)
{S = Convert.ToDouble(textBox1.Text);(S <= 0 || S >= 1)
{.Show("Коэффициент сжатия должен быть в приделах: 0<B<1", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}(textBox1.Text == "" || textBox3.Text == "" || textBox4.Text == "" || textBox5.Text == "")
{.Show("Заполните поля!!!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
В случаи верности вводимых данных пользователем открывается поток potok и вызывается процедура Solving().
else
{= new Thread(new ThreadStart(delegate { Solving(); }));.Start();.Enabled = false;
}
В процедуре Solving() описываются все переменные, необходимые для решения заданной функции. Также в ней описываются условия, при выполнении которых происходят проверки и вычисления необходимые для правильного решения заданной функции.
4. КОНТРОЛЬНЫЙ ПРИМЕР
Задать начальную точку , коэффициент сжатия , M = 3 - число испытаний на текущей итерации, =1 - начальную величину шага, R = 0.8 - минимальную величину шага, N = 10 - максимальное число итерации. Положить k = 0, j = 1.
Итерация 1(0)
Итерация 2(0)
Итерация 3(0)
Итерация 4(0)
Шаг удачный
перейти к шагу 2.
Итерация 2(1)
Итерация 3(1)
Итерация 4(1)
Шаг неудачный перейти к шагу 5
Итерация 5(0)
Перейти к шагу 2
Итерация 2(2)
Итерация 3(2)
Итерация 4(2)
Шаг удачный
перейти к шагу 2.
Итерация 2(3)
Итерация 3(3)
Итерация 4(3)
Шаг удачный
перейти к шагу 2.
Итерация 2(4)
Итерация 3(4)
Итерация 4(4)
Шаг удачный
перейти к шагу 2.
Итерация 2(5)
Итерация 3(5)
Итерация 4(5)
Шаг удачный
перейти к шагу 2.
Итерация 2(6)
Итерация 3(6)
Итерация 4(6)
Шаг удачный
перейти к шагу 2.
Итерация 2(7)
Итерация 3(7)
Итерация 4(7)
Шаг удачный
перейти к шагу 2.
Итерация 2(8)
Итерация 3(8)
Итерация 4(8)
Шаг удачный
перейти к шагу 2.
Итерация 2(9)
Итерация 3(9)
Итерация 4(9)
Шаг удачный
перейти к шагу 2.
Итерация 2(10)
Итерация 3(10)
Итерация 4(10)
Шаг удачный
Поиск завершен F(x*)=0,154
Всего итераций:10.
4.1 Результаты работы программы
Дана функция , требуется решиться методом Наилучшей пробы.
Результат:
=(1;2)=0,618=3=0,8=10
Положить k=0, j=1
)
Случайные вектора равны:
Вектор 1=(0,843;0,374)
Вектор 2=(0,239;0,954)
Вектор 3=(-0,159;-0,402)
)
=(1,91407963398224;2,40553473678453)=(1,24301408746329;2,9700227591631)=(0,632201543899193;1,07009446948098)(y1)=51,012(y2)=65,641(y3)=100,615
)
(y)=51,012< f(x)=80 Шаг удачный
Проверяем условие окончания:
< N
)
Случайные вектора равны:
Вектор 1=(0,168;-0,727)
Вектор 2=(-0,478;-0,214)
Вектор 3=(-0,361;0,112)
)
=(2,13923276919031;1,43121134811628)=(1,00137380066825;1,99691748086571)=(0,958989675300652;2,70185073504585)(y1)=53,61(y2)=79,981(y3)=76,197
)f(y)=53,61>= f(x)=51,012Шаг неудачный
Проверяем условие окончания
> R
)
Случайные вектора равны:
Вектор 1=(0,674;0,551)
Вектор 2=(-0,824;-0,193)
Вектор 3=(-0,08;0,917)
)
=(2,3925433489388;2,7966823731956)=(1,31236448061059;2,26459902731763)=(1,8603687032674;3,02119628010338)(y1)=37,457(y2)=68,348(y3)=48,302
)
(y)=37,457< f(x)=51,012 Шаг удачный
Проверяем условие окончания:
< N
)
Случайные вектора равны:
Вектор 1=(0,05;0,171)
Вектор 2=(0,251;-0,447)
Вектор 3=(-0,812;0,102)
3)
=(2,56598291444603;3,38984568723033)=(2,69512406997668;2,25782347955443)=(1,77936220453972;2,87370759084179)(y1)=30,511(y2)=35,254(y3)=51,264
)
(y)=30,511< f(x)=37,457 Шаг удачный
Проверяем условие окончания:
< N
)
Случайные вектора равны:
Вектор 1=(0,507;0,537)
Вектор 2=(-0,587;0,461)
Вектор 3=(0,911;0,018)
)
=(2,99024253690995;3,83920942936667)=(2,07995199875453;3,77154969427255)=(3,18386231658711;3,40205406180612)(y1)=20,826(y2)=39,073(y3)=19,943
)
(y)=19,943< f(x)=30,511 Шаг удачный
Проверяем условие окончания:
< N
)
Случайные вектора равны:
Вектор 1=(-0,07;-0,971)
Вектор 2=(0,507;0,537)
Вектор 3=(0,909;0,022)
)
=(3,13942562874768;2,78565372049062)=(3,60812193905102;3,85141780394245)=(3,80168139710641;3,41700677882638)(y1)=24,179(y2)=12,366(y3)=12,416
)
(y)=12,366< f(x)=19,943 Шаг удачный
Проверяем условие окончания:
< N
)
Случайные вектора равны:
Вектор 1=(-0,593;0,741)
Вектор 2=(0,888;0,011)
Вектор 3=(-0,333;-0,296)
)
=(3,22198099450301;4,3339311933355)=(4,22607452927095;3,85907262206455)=(3,14622298010452;3,44084095154556)(y1)=15,421(y2)=6,979(y3)=20,295
)
(y)=6,979< f(x)=12,366 Шаг удачный
Проверяем условие окончания:
< N
)
Случайные вектора равны:
Вектор 1=(0,374;0,451)
Вектор 2=(-0,899;-0,129)
Вектор 3=(-0,12;0,921)
)
=(4,62056609668037;4,33478304158767)=(3,61434029772258;3,77129318283236)=(4,14622825185625;4,47189280122236)(y1)=3,349(y2)=12,647(y3)=5,251
)
(y)=3,349< f(x)=6,979 Шаг удачный
Проверяем условие окончания:
< N
)
Случайные вектора равны:
Вектор 1=(0,1;0,999)
Вектор 2=(0,932;0,459)
Вектор 3=(-0,519;-0,204)
)
y1=(4,68212033952824;4,94970992763789)=(5,17497767685909;4,60782479620358)=(4,04540209301062;4,10870701702384)(y1)=1,507(y2)=2,061(y3)=7,222
)
(y)=1,507< f(x)=3,349 Шаг удачный
Проверяем условие окончания:
< N
)
Случайные вектора равны:
Вектор 1=(-0,235;-0,331)
Вектор 2=(0,722;0,999)
Вектор 3=(0,989;0,07)
)
=(4,32435671526554;4,44579605686788)=(5,04411823661013;5,45059067443126)=(5,2985781633938;4,99334192730482)(y1)=4,242(y2)=0,31(y3)=1,37
)
(y)=0,31< f(x)=1,507 Шаг удачный
Проверяем условие окончания:
< N
)
Случайные вектора равны:
Вектор 1=(0,843;0,374)
Вектор 2=(0,239;0,954)
Вектор 3=(-0,159;-0,402)
)
=(5,60901945041116;5,7012111417641)=(5,19430094266245;6,05006473959406)=(4,81681879073984;4,87590905657051)(y1)=1,573(y2)=0,154(y3)=1,398
)
(y)=0,154< f(x)=0,31 Шаг удачный
Проверяем условие окончания:
k = N
Поиск завершен
х*=(5,19430094266245;6,05006473959406)(x*)=0,154
Всего итераций:10
ЗАКЛЮЧЕНИЕ
В данной курсовой работе были рассмотрены различные методы адаптивного поиска, такие как:
метод наилучшей пробы;
адаптивный метод случайного поиска.
Были указаны основные достоинства и недостатки методов случайного поиска, а также алгоритм решения данного класса задач. Был проведен сравнительный анализ с другими методами, предназначенными для решения данного класса задач.
В программном продукте реализованы следующие функции:
решение заданной функции методом наилучшей пробы;
проверка правильности вводимых значений;
вывод результата в объекте;
вывод ошибок, при условии, что вводимые данные не соответствуют необходимым правилам ввода.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
)Акулич И.Л. Математическое программирование в примерах и задачах: Учеб. пособие. - М.: Высш. шк., 1986.
2)Белецкая С.Ю. Решение задач математического программирования: Учеб. пособие. - Воронеж, 2001.
3)Карманов В.Г. Математическое программирование. - М.: Наука, 1975.
4)Методы оптимизации в примерах и задачах: Учеб. пособ. А.В.Пантелеев, Т.А.Летова - 2-е изд., исправл. - M.:Высш. Шк., 2005. - 544с.
ПРИЛОЖЕНИЕ А
При запуске программы, для реализации решения Метода наилучшей пробы откроется окно, как представлено на рисунке А.1.
Рисунок А.1 - Главное окно программы
Если пользователь не введет ни одного значения, то появится ошибка, как показано на рисунке А.2.
Рисунок А.2 - Ошибка
Также если пользователь введет не все значения, то появится сообщение об ошибке, как показано на рисунке А.3.
Рисунок А.3 - Ошибка пустого поля
В случаи ввода коэффициента сжатия B<0 либо B>1, то появится сообщение об ошибки, как показано на рисунке А.4.
Рисунок А.4 - Ошибка ввода значения
При нажатии кнопки Решить функцию в окне richTextBox будет выведено решение Метода наилучшей пробы рисунок А.5.
Рисунок А.5 - Пример работы программы
Если необходимо очистить главные поля для ввода, а так же поле с решением данного алгоритма, можно воспользоваться кнопкой Очистить главные поля показанное на рисунке А.6, панели главного меню во вкладке Меню.
Рисунок А.6 - Пункт меню программы Очистить главные поля
Для просмотра алгоритма Метода наилучшей пробы необходимо нажать Справка и в открывшейся вкладке выбрать Алгоритм. На экране появится новое окно с алгоритмом метода.
Рисунок А.7 - Окно Алгоритм
Для просмотра информации об авторе, достаточно нажать Справка и в открывшейся вкладке выбрать Об авторе.
Рисунок А.8 - Окно Об авторе
Для выхода из программы необходимо нажать кнопку Меню и в появившейся вкладке выбрать Выход.
ПРИЛОЖЕНИЕ Б
Листинг программы
void Start_Click(object sender, EventArgs e)
{(textBox1.Text == "" && textBox3.Text == "" && textBox4.Text == "" && textBox5.Text == "")
{.Show("Введите данные!!!", "Ошибка", MessageBoxButtons.OK, MessageBoxI con.Error);
}S = Convert.ToDouble(textBox1.Text);(S <= 0 || S >= 1)
{.Show("Коэффициент сжатия должен быть в приделах: 0<B<1", "Ошибка", Message BoxButtons.OK, MessageBoxIcon.Error);
}(textBox1.Text == "" || textBox3.Text == "" || textBox4.Text == "" || textBox5.Text == "")
{.Show("Не все поля были заполнены!!!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
{= new Thread(new ThreadStart(delegate { Algoritm(); }));.Start();
}
}void Algoritm()
{B = Convert.ToDouble(textBox1.Text);R = Convert.ToDouble(textBox4.Text);t = Convert.ToDouble(textBox3.Text);M = 3;N = Convert.ToInt32(textBox5.Text);kol = 0;j = 1;[] x = { 1, 2 };[] y1 = new double[2];[] y2 = new double[2];[] y3 = new double[2];[] ym = new double[2];X=0;Y1=0;Y2=0;Y3=0;Ym=0;kor1 = 0;kor2 = 0;kor3 = 0;("x0=(" + x[0] + ";" + x[1] + ")");("B=" + B);("M=" + M);("R=" + R);("N=" + N);("Положить k=0, j=1");[] v1 = new double[2];[] v2 = new double[2];[] v3 = new double[2];n = 0;:(n == 10)
{[0] = -0.111;[1] = -0.388;[0] = 0.227;[1] = 0.931;[0] = 0.929;[1] = 0.17;= 0;
}(n == 9)
{[0] = -0.235;[1] = -0.331;[0] = 0.722;[1] = 0.999;[0] = 0.989;[1] = 0.07;++;
}(n == 8)
{[0] = 0.1;[1] = 0.999;[0] = 0.932;[1] = 0.459;[0] = -0.519;[1] = -0.204;++;
}(n == 7)
{[0] = 0.374;[1] = 0.451;[0] = -0.899;[1] = -0.129;[0] = -0.12;[1] = 0.921;++;
}(n == 6)
{[0] = -0.593;[1] = 0.741;[0] = 0.888;[1] = 0.011;[0] = -0.333;[1] = -0.296;++;
}(n == 5)
{[0] = -0.07;[1] = -0.971;[0] = 0.507;[1] = 0.537;[0] = 0.909;[1] = 0.022;++;
}(n == 4)
{[0] = 0.507;[1] = 0.537;[0] = -0.587;[1] = 0.461;[0] = 0.911;[1] = 0.018;++;
}(n == 3)
{[0] = 0.05;[1] = 0.171;[0] = 0.251;[1] = -0.447;[0] = -0.812;[1] = 0.102;++;
}(n == 2)
{[0] = 0.674;[1] = 0.551;[0] = -0.824;[1] = -0.193;[0] = -0.08;[1] = 0.917;++;
}( n == 1 )
{[0] = 0.168;[1] = -0.727;[0] = -0.478;[1] = -0.214;[0] = -0.361;[1] = 0.112;++;
}(n == 0)
{[0] = 0.843;[1] = 0.374;2[0] = 0.239;
v2[1] = 0.954;
v3[0] = -0.159;
v3[1] = -0.402;
n++;
}
AText("2)\nСлучайные вектора равны:");
kor1 = Math.Sqrt((Math.Pow(v1[0], 2) + Math.Pow(v1[1], 2)));//Вычесление длинны вектора
y1[0] = x[0] + t * (v1[0] / kor1);[1] = x[1] + t * (v1[1] / kor1);("Вектор 1=(" + v1[0] + ";" + v1[1] + ")");= Math.Sqrt((Math.Pow(v2[0], 2) + Math.Pow(v2[1], 2)));//Вычесление длинны вектора[0] = x[0] + t * (v2[0] / kor2);[1] = x[1] + t * (v2[1] / kor2);("Вектор 2=(" + v2[0] + ";" + v2[1] + ")");= Math.Sqrt((Math.Pow(v3[0], 2) + Math.Pow(v3[1], 2)));//Вычесление длинны вектора[0] = x[0] + t * (v3[0] / kor3);[1] = x[1] + t * (v3[1] / kor3);("Вектор 3=(" + v3[0] + ";" + v3[1] + ")");("3)\ny1=(" + y1[0] + ";" + y1[1] + ")");("y2=(" + y2[0] + ";" + y2[1] + ")");("y3=(" + y3[0] + ";" + y3[1] + ")");= Math.Round(Func(x[0], x[1]), 3);= Math.Round(Func(y1[0], y1[1]), 3);= Math.Round(Func(y2[0], y2[1]), 3);= Math.Round(Func(y3[0], y3[1]), 3);("f(y1)=" + Y1);("f(y2)=" + Y2);("f(y3)=" + Y3);(Y1 < Y2 && Y1 < Y3)
{= Y1;.CopyTo(ym, 0);
}(Y2 < Y1 && Y2 < Y3)
{= Y2;.CopyTo(ym, 0);
}(Y3 < Y2 && Y3 < Y1)
{= Y3;.CopyTo(ym, 0);
}(Ym < X)
{("4)\nf(y)=" + Ym + "< f(x)=" + X + " Шаг удачный");.CopyTo(x, 0);//xk+1=ym++;("Проверяем условие окончания:");
if (kol < N)
{("k < N");= 1;P;
}
{("k = N");("Поиск завершен\nх*=(" + x[0] + ";" + x[1] + ")\nF(x*)=" + Ym + "\nВсего итераций:" + kol);.Abort();
}
}
{("5)f(y)=" + Ym + ">= f(x)=" + X +"Шаг неудачный \nПроверяем условие окончания");(t <= R)
{("t <= R");("Поиск завершен\nх*=(" + x[0] + ";" + x[1] + ")\nF(x*)=" + Ym + "\nВсего итераций:" + kol);
potok.Abort();
}
{("t > R");= B * t;= 1;P;
}
}
}
//Выходvoid Exit_Click(object sender, EventArgs e)
{
//th.Abort();.Exit();
}void очиститьПоляToolStripMenuItem_Click(object sender, EventArgs e)
{.Clear();.Text = "";.Text = "";.Text = "";.Text = "";
}void выходToolStripMenuItem_Click(object sender, EventArgs e)
{.Close();
}void алгоритмToolStripMenuItem_Click(object sender, EventArgs e)
{s = new Form2();.Show();
}void обАвтореToolStripMenuItem_Click(object sender, EventArgs e)
{a = new Form3();.Show();
}
Больше работ по теме:
Предмет: Информационное обеспечение, программирование
Тип работы: Курсовая работа (т)
Новости образования
КОНТАКТНЫЙ EMAIL: [email protected]
Скачать реферат © 2017 | Пользовательское соглашение
ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ