99349-0,00039-1,7E - 0510,9611510,99531-0,00029-2,2E - 0610,9706110,99661-0 , 000218,6E - 0610,9778310,99756-0,000151,64E - 0510,9833110,99824-0,00012,2E - 0510,9874610,99873-6,7E - 052,61E - 0510,9905910,99908-4 , 1E - 052,9E - 05
2.1.3 Рішення завдання
Лістинг програми
математичний програма інтерфейс
Private Sub CommandButton1_Click ()
Dim a, b, e, L, x1, x2, fx1, fx2
a=Val (TextBox1.Value)
b=Val (TextBox2.Value)
e=Val (TextBox3.Value)
L=Abs ((a * Sin (a) + 2 * Cos (a))/(a ??* a * a))
For i=a To b Step 0.01
If Abs ((i * Sin (i) + 2 * Cos (i))/(i * i * i)) gt; L Then
L=Abs ((i * Sin (i) + 2 * Cos (i))/(i * i * i))
End Ifi (5, 11)=L
x0=(a + b)/2 + (Cos (a)/(a ??* a) - Cos (b)/(b * b))/(2 * L)
Cells (2, 11)=x0=0i=0 To 100
Cells (2 + i, 12)=
Cells (2 + i, 13)=
Cells (2 + i, 14)=
Cells (2 + i, 15)= iWhile Abs (a - b) gt;=e
x1=(a + x0)/2 + (Cos (a)/(a ??* a) - Cos (x0)/(x0 * x0))/(2 * L)
x2=(x0 + b)/2 + (Cos (x0)/(x0 * x0) - Cos (b)/(b * b))/(2 * L)
fx1=Cos (x1)/(x1 * x1)
fx2=Cos (x2)/(x2 * x2)
Cells (2 + k, 12)=x1
Cells (2 + k, 13)=x2
Cells (2 + k, 14)=fx1
Cells (2 + k, 15)=fx2
If fx1 lt; fx2 Then
a=x1
x0=x2
Else
b=x2
x0=x1
End If
k=k + 1 (Cos (x1)/(x1 * x1)) lt; (Cos (x2)/(x2 * x2)) Then
TextBox5.Value=Round (x1, 4)
TextBox4.Value=Round (Cos (x1)/(x1 * x1), 5)
TextBox5.Value=Round (x2, 4)
TextBox4.Value=Round (Cos (x2)/(x2 * x2), 5) If (18, 7)=TextBox5.Value (18, 8)=TextBox4.Value
End Sub
2.1.4 Інтерпретація результатів
2.2 Постановка завдання завдання 2
Завдання 2. Знайти найменше (найбільше) значення функції при методом найшвидшого спуску.
.
Метод найшвидшого пуску
Суть методу найшвидшого спуску полягає в наступному. Як і раніше, в початковій точці визначається антіградіентом минимизируемой функції. Однак тепер у напрямку антіградіента робиться жоден крок, а рухаються в даному напрямку до тих пір, поки цільова функція убуває, досягає в деякій точці мінімуму. У цій точці знову визначають антіградіентом і шукають нову точку мінімуму цільової функції і так далі. У даному методі спуск має більш цілеспрямований характер, проводиться більш великими кроками і градієнт функції обчислюється в меншому числі точок.
Опис програми
Програма призначена для знаходження точок мінімуму функцій декількох змінних - іншими словами для мінімізації цих функцій.
У програмі реалізований один з методів спуску - градієнтний метод спуску з вибором кроку. Зміна кроку здійснюється за схемою:
якщо якщо
Обчислення градієнта відбувається за методом з парними пробами, це покращує пошук рахунок більш точного обчислення градієнта.
Метод найшвидшого спуску в порівнянні зі звичайним градієнтним методом дає деяке прискорення, метод добре працює при мінімізації гладких функцій і якщо початкове наближення вибрано досить далеко від оптимуму. Якщо ж чергова точка виявиться в околиці оптимуму, то зменшення цільової функції буде дуже повільним. Це відбувається через те, що для отримання оптимуму з високою точністю необхідно виконати велике число дрібних кроків.
Метод найшвидшого спуску хоча не дає особливого прискорення збіжності він вільний від параметрів і на практиці може дати певний виграш, особливо на початкових ітераціях.
У зв'язку з цим в програмі був реалізований більш точний метод градієнтного спуску.
В якості умови закінчення пошуку задається необхідна малість модуля градієнта функції, тобто повинно виконуватись умова (в області оптимуму градієнт дорівнює 0, але досягти цього значення практично не можливо, тому задається необхідна малість близька до 0).
2.2.1 Математична модель задачі
Блок схема
2.2.2 Опис методу аналізу математичної моделі <...