Метод Мюллера

Материал из testwiki
Перейти к навигации Перейти к поиску

Метод Мюллераитерационный численный метод для решения уравнения f(x)=0 непрерывной функции. Был представлен Давидом Мюллером в 1956 году.

Метод Мюллера развивает идею метода секущих, который строит на каждом шаге итерации прямые, проходящие через две точки на графике y = f(x). Вместо этого метод Мюллера использует три точки, строит параболу, проходящую через эти три точки, и в качестве следующего приближения берёт точку пересечения параболы и оси x.

Рекуррентная формула

Три изначально необходимых значения обозначаются как xk, xk−1 и xk−2. Парабола, проходящая через три точки (xkf(xk)), (xk−1f(xk−1)) и (xk−2f(xk−2)) по формуле Ньютона записывается следующим образом

y=f(xk)+(xxk)f[xk,xk1]+(xxk)(xxk1)f[xk,xk1,xk2],

где f[xkxk−1] и f[xk, xk−1, xk−2] суть разделённые разности. Это уравнение можно переписать в виде

y=f(xk)+w(xxk)+f[xk,xk1,xk2](xxk)2,

где

w=f[xk,xk1]+f[xk,xk2]f[xk1,xk2].

Следующая итерация даёт корень квадратного уравнения y = 0. Из этого выходит рекуррентная формула

xk+1=xk2f(xk)w±w24f(xk)f[xk,xk1,xk2].

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

Приближение xk+1 может быть комплексным числом, даже если все предыдущие приближения были вещественными, в отличие от других алгоритмов численного поиска корней (метод секущих или метод Ньютона), где приближения будут оставаться вещественными, если начинать с вещественного числа. Наличие комплексных итераций может быть как преимуществом (если ищется комплексный корень), так и недостатком (если известно, что все корни вещественные).

Скорость сходимости

Скорость сходимости метода Мюллера составляет примерно 1,84. Её можно сравнить с 1,62 для метода секущих и 2 для метода Ньютона. Таким образом, метод секущих будет выполняться за большее число шагов, чем метод Мюллера и метод Ньютона.

Точнее, если ξ обозначает не кратный корень f (то есть f(ξ)=0, f(ξ)0), f трижды непрерывно дифференцируема, и начальные приближения x0, x1, и x2 были достаточно близки к ξ, то итерации удовлетворяют соотношению

limk|xxk||xxk1|p=|f(ξ)6f(ξ)|(p1)/2,

где p ≈ 1,84 это положительный корень уравнения x3x2x1=0.

Литература

  • Muller, David E., "A Method for Solving Algebraic Equations Using an Automatic Computer", MTAC, 10 (1956), 208—215.
  • Atkinson, Kendall E. (1989). An Introduction to Numerical Analysis, 2nd edition, Section 2.4. John Wiley & Sons, New York. ISBN 0-471-50023-2.
  • Burden, R. L. and Faires, J. D. Numerical Analysis, 4th edition, pages 77ff.
  • Press, William H., et al. (1992). Numerical Recipes in Fortran 77: The Art of Scientific Computing, 2nd edition, page 364. ISBN 0-521-43064-X.

См. также

Ссылки