Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

The Effect of a Poor Initial Guess

Boost , Math Toolkit 2.5.0 , Root finding

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Поучительно взять наши «игрушечные» примеры алгоритмов и использовать намеренно плохие первоначальные догадки, чтобы увидеть, насколько справедливы различные алгоритмы поиска корней. Начнем с кубического корня и используем кубический корень 500 в качестве тестового варианта:

Начальная догадка =

-500% (≈1,323)

-100% (≈3.97)

-50% (≈3.96)

-20% (≈6,35)

-10% (≈7.14)

-5% (≈7.54)

5% (≈8.33)

10% (≈8.73)

20% (≈9.52)

50% (≈11.91)

100% (≈15.87)

500 (≈47.6)

скобка_и_solve_root

12

8

8

10

11

11

11

11

11

11

7

13

newton_iterate

12

7

7

5

5

4

4

5

5

6

7

9

halley_iterate

7

4

4

3

3

3

3

3

3

4

4

6

schroder_iterate

11

6

6

4

3

3

3

3

4

5

5

8

Как вы можете видеть, bracket_and_solve_root относительно нечувствителен к начальному местоположению - до тех пор, пока вы не начнете много порядков от корня, потребуется примерно столько же шагов, чтобы связать корень и решить его. С другой стороны, методы на основе производных медленно запускаются, но как только они исправляют некоторые цифры, они увеличивают точность исключительно быстро: поэтому они довольно чувствительны к начальному месту запуска.

Следующая таблица показывает количество итераций, необходимых для поиска второго радиуса эллипса с первым радиусом 50 и длиной дуги 500:

Начальная догадка =

-500% (≈20.6)

-100% (≈61.81)

-50% (≈61.81)

-20% (≈98.9)

-10% (≈111.3)

-5% (≈117.4)

5% (≈129.8)

10% (≈136)

20% (≈148.3)

50% (≈185.4)

100% (≈247.2)

500 (≈741.7)

скобка_и_solve_root

11

5

5

8

8

7

7

8

9

8

6

10

newton_iterate

4

4

4

3

3

3

3

3

3

4

4

4

halley_iterate

4

3

3

3

3

2

2

3

3

3

3

3

schroder_iterate

4

3

3

3

3

2

2

3

3

3

3

3

Интересно, что эта функция гораздо более устойчива к плохой исходной догадке при использовании производных.


PrevUpHomeNext

Статья The Effect of a Poor Initial Guess раздела Math Toolkit 2.5.0 Root finding может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Root finding ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 03:50:55/0.0058610439300537/1