4.Метод дихотомии
Проведём расчёт трёх итераций методом дихотомии в программе Mathcad:
Результаты работы:
-
N
a
b
x1
x2
f(x1)
f(x2)
Δn
0
1.3
1.7
1.4997
1.5003
-0.1964
-0.1969
0.2003
1
1.4997
1.7
1.5995
1.6002
-0.1738
-0.1729
0.1005
2
1.4997
1.6002
1.5496
1.5502
-0.2123
-0.2122
0.0944
3
1.4997
1.5502
Проведём расчёт методом дихотомии с помощью программы:
import math
a=1.3
b=1.7
E=0.0001
iteration_count = 0
def Q(x):
return math.sin(math.e**x)-math.e**(-x)+1
d=E/3
x1=(a+b)/2-d
x2=(a+b)/2+d
while abs(b-a)>E:
iteration_count += 1
if Q(x1)>Q(x2):
a=x1
else:
b=x2
x1 = (a + b) / 2 - d
x2 = (a + b) / 2 + d
print(f'Минимум в точке x={(a+b)/2} равен {Q((a+b)/2)} с точностью {E}')
print(f'Всего итераций: {iteration_count}')
Результат работы кода:
0 итерация
значения: a=1.3, b=1.7, x1=1.4999666666666667, x2=1.5000333333333333, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала=0.3999999999999999
1 итерация
значения: a=1.4999666666666667, b=1.7, x1=1.59995, x2=1.6000166666666666, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала=0.20003333333333329
2 итерация
значения: a=1.4999666666666667, b=1.6000166666666666, x1=1.5499583333333333, x2=1.550025, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала=0.10004999999999997
3 итерация
значения: a=1.4999666666666667, b=1.550025, x1=1.5249625, x2=1.5250291666666667, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала=0.050058333333333316
4 итерация
значения: a=1.5249625, b=1.550025, x1=1.5374604166666666, x2=1.5375270833333332, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала=0.025062499999999988
5 итерация
значения: a=1.5374604166666666, b=1.550025, x1=1.543709375, x2=1.5437760416666666, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала=0.012564583333333434
6 итерация
значения: a=1.5374604166666666, b=1.5437760416666666, x1=1.5405848958333332, x2=1.5406515625, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала=0.006315625000000047
7 итерация
значения: a=1.5374604166666666, b=1.5406515625, x1=1.53902265625, x2=1.5390893229166667, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала=0.003191145833333353
8 итерация
значения: a=1.53902265625, b=1.5406515625, x1=1.5398037760416667, x2=1.5398704427083334, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала=0.0016289062499998952
9 итерация
значения: a=1.5398037760416667, b=1.5406515625, x1=1.5401943359374999, x2=1.5402610026041665, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала=0.0008477864583331662
10 итерация
значения: a=1.5401943359374999, b=1.5406515625, x1=1.5403896158854165, x2=1.5404562825520831, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала=0.0004572265625000238
11 итерация
значения: a=1.5401943359374999, b=1.5404562825520831, x1=1.5402919759114582, x2=1.5403586425781248, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала=0.00026194661458323054
12 итерация
значения: a=1.5402919759114582, b=1.5404562825520831, x1=1.5403407958984372, x2=1.5404074625651039, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала=0.00016430664062494493
13 итерация
значения: a=1.5403407958984372, b=1.5404562825520831, x1=1.5403652058919268, x2=1.5404318725585935, Q1=-0.2132406473439432, Q2=-0.21324065341515297, Длина интервала(погрешность)=0.00011548665364591315
Минимум в точке x=1.540410744222005 равен -0.2132406527688604 с точностью 0.0001
Всего итераций: 14
5.Вычислить число итераций, необходимых, чтобы локализовать точку минимума с точностью E1 = 10-4 методами дихотомии и золотого сечения.
Теоретическая величина погрешности для метода золотого сечения определяется длиной конечного отрезка неопределенности после N итераций:
Получаем неравенство:
Решив уравнение, получим:
Именно за столько итераций было найдено значение с помощью кода, значит значение найдено верно.
Теоретическая величина погрешности для метода дихотомии определяется длиной конечного отрезка неопределенности после N итераций:
Получаем неравенство:
Решив уравнение, получим:
Именно за столько итераций было найдено значение с помощью кода, значит значение найдено верно.
