Изменения

Перейти к: навигация, поиск

Поиск с помощью золотого сечения

380 байт добавлено, 01:50, 8 июня 2015
м
Псевдокод
Для этого нам потребуется, чтобы одновременно выполнялись равенства:
<tex> \dfrac{x_2a + b}{r-x_2c} = \dfrac{b + c}{a} = \varphi </tex> Расстояние от <tex>l</tex> до <tex>x1 = a + b - c = a' </tex>, от <tex>x2 </tex> до <tex> r= b = c'</tex>, от <tex>х1 </tex> до <tex> х2 = c -x_1b = b'</tex>. Т.е. если мы подставим <tex>a', b', c'</tex> в старое соотношение <tex> \dfrac{a + b}{c}</tex>, то получится <tex> \dfrac {x_1a + b - c + c -lb}{b} = \varphi dfrac{a}{b}</tex>.
<tex> \dfrac{a}{b} = \varphi </tex>
===Псевдокод===
'''intdouble''' goldenSectionSearch(f: '''double -> double''', l: '''double''', r: '''double''', eps): '''double''' ): phi = (1 + sqrt(5)) / 2 '''double''' resphi = 2 - phi '''int''' x1 = l + resphi * (r - l) '''int''' x2 = r - resphi * (r - l) '''int''' f1 = f(x1) '''int''' f2 = f(x2) '''do''' '''if''' f1 < f2 '''int''' r = x2 x2 = x1 f2 = f1 x1 = l + resphi * (r - l) f1 = f(x1) '''else''' '''int''' l = x1 x1 = x2 f1 = f2 x2 = r - resphi * (r - l) f2 = f(x2) '''while''' abs(r - l) > eps '''return''' (x1 + x2) / 2
==Время работы==
==См также==
*[[Троичный поиск]]
*[[Целочисленный двоичный поиск]]
==Источники информации==

Навигация