Метод мюллера для решения одного уравнения

Программа для метода Мюллера

Для функции f (x) с плавающим числом x и трех начальных различных догадок для корня функции найдите корень функции. Здесь f (x) может быть алгебраической или трансцендентной функцией.

Примеры:

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

Метод Мюллера — это алгоритм поиска корня для нахождения корня уравнения вида f (x) = 0. Он был открыт Дэвидом Э. Мюллером в 1956 году.

Он начинается с трех исходных предположений о корне, а затем строит параболу через эти три точки и принимает пересечение оси x с параболой в качестве следующего приближения. Этот процесс продолжается до тех пор, пока не будет найден корень с желаемым уровнем точности.

Зачем изучать метод Мюллера?

Метод Мюллера, являющийся одним из методов поиска корней наряду с другими, такими как метод деления пополам, метод Регула — Фальси, метод Секанс и метод Ньютона — Рафсона. Но он предлагает определенные преимущества перед этими методами, а именно:

  1. Скорость сходимости, т. Е. Насколько мы приближаемся к корню на каждом шаге, составляет примерно 1,84 в методе Мюллера, тогда как она равна 1,62 для метода секущих и линейная, т. Е. 1 как для метода Регула — Фальси, так и для метода деления пополам. Таким образом, метод Мюллера быстрее, чем методы Бисекции, Регулы — Фальси и Секанта.
  2. Хотя он медленнее, чем метод Ньютона-Рафсона, скорость сходимости которого равна 2, но он преодолевает один из самых больших недостатков метода Ньютона-Рафсона, то есть вычисление производной на каждом шаге.

Таким образом, это показывает, что метод Мюллера является эффективным методом вычисления корня функции.

Алгоритм и его работа

  1. Предположим любые три различных начальных корня функции, пусть это будут x 0 , x 1 и x 2 .
  2. Теперь нарисуйте полином второй степени, т. Е. Параболу, через значения функции f (x) для этих точек — x 0 , x 1 и x 2 .
    Уравнение параболы, p (x), через эти точки имеет следующий вид:
    р (х) = с + б (х — х ) + а (х — х ) где a, b и c — постоянные.

  • После рисования параболы, затем найдите пересечение этой параболы с осью X, скажем, х 3 .
  • Нахождение пересечения параболы с осью х, т. Е. Х 3 :
    • Найти х корень p (x), где p (x) = c + b (x — x ) + а (х — х ) такой, что р (х ) = с + б (х — Икс ) + а (х — Икс ) = 0, примените квадратную формулу к p (x). Так как будет два корня, но мы должны взять тот, который ближе к x . Чтобы избежать ошибок округления из-за вычитания близких равных чисел, используйте следующее уравнение:


    Теперь, так как корень р (х) должен быть ближе к х Таким образом, мы должны взять это значение, которое имеет больший знаменатель, из двух возможных значений из приведенного выше уравнения.

    Чтобы найти a, b и c для приведенного выше уравнения, положите x в p (x) как x , Икс и х и пусть эти значения будут p (x ), р (х ) и р (х ), которые заключаются в следующем

    р (х ) = с + б (х — Икс ) + а (х — Икс ) = f (x ).
    р (х ) = с + б (х — Икс ) + а (х — Икс ) = f (x ).
    р (х ) = с + б (х — Икс ) + а (х — Икс ) = c = f (x ).

    Итак, у нас есть три уравнения и три переменные — a, b, c. Решив их, чтобы выяснить значения этих переменных, мы получим следующие значения a, b и c-

    где,
    d = р (х ) — р (х ) = f (x ) — f (x )
    d = р (х ) — р (х ) = f (x ) — f (x )
    час = х — Икс
    час = х — Икс

  • Теперь поместите эти значения в выражение для х — Икс и получить х ,
    Вот как корень р (х) = х получается.
  • Если х очень близко к х в пределах допустимой ошибки, то х становится корнем f (x), в противном случае продолжайте повторять процесс поиска следующего x с предыдущим х , Икс и х как новый х , Икс и х ,
  • // C ++ Программа для поиска корня функции f (x)
    #include

    using namespace std;

    const int MAX_ITERATIONS = 10000;

    // Функция для вычисления f (x)

    float f( float x)

    // Взятие f (x) = x ^ 3 + 2x ^ 2 + 10x — 20

    ru.knowledgr.com

    Метод Мюллера — находящий корень алгоритм, численный метод для решения уравнений формы f (x) = 0. Это было сначала представлено Дэвидом Э. Мюллером в 1956.

    Метод Мюллера основан на секущем методе, который строит при каждом повторении линию через два пункта на графе f. Вместо этого метод Мюллера использует три пункта, строит параболу через эти три пункта и берет пересечение оси X с параболой, чтобы быть следующим приближением.

    Отношение повторения

    Метод Мюллера — рекурсивный метод, который производит приближение корня ξ f при каждом повторении. Начинаясь с этих трех начальных значений x, x и x, первое повторение вычисляет первое приближение x, второе повторение вычисляет второе приближение x, третье повторение вычисляет третье приближение x и т.д. Следовательно k повторение производит приближение x. Каждое повторение берет в качестве входа последние три произведенных приближения и ценность f при этих приближениях. Следовательно k повторение берет в качестве входа, ценности x, x и x и функция оценивают f (x), f (x) и f (x). Приближение x вычислено следующим образом.

    где f [x, x] и f [x, x, x] обозначают разделенные различия. Это может быть переписано как

    Следующие повторяют x, теперь дан как решение, самое близкое к x квадратного уравнения y (x) = 0. Это приводит к отношению повторения

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

    Обратите внимание на то, что x может быть сложным, даже если предыдущее повторяет, были все реальны. Это в отличие от других находящих корень алгоритмов как секущий метод, обобщенный секущий метод Сиди или метод Ньютона, чей повторяет, останутся реальными, если Вы начнете с действительных чисел. Наличие комплекса повторяет, может быть преимущество (если Вы ищете сложные корни), или недостаток (если известно, что все корни реальны), в зависимости от проблемы.

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

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

    Более точно, если ξ обозначает, что единственный корень f (так f (ξ) = 0 и f (ξ) ≠ 0), f три раза непрерывно дифференцируем, и начальная буква предполагает x, x, и x взяты достаточно близко к ξ, то повторение удовлетворяет

    где μ ≈ 1.84 является положительным решением.

    Обобщения и связанные методы

    Метод Мюллера соответствует параболе, т.е. полиномиалу второго порядка, к последним трем полученным пунктам f (x), f (x) и f (x) в каждом повторении. Можно обобщить это и соответствовать полиномиалу p (x) из степени m к последним пунктам m+1 в k повторении. Наша парабола y написана как p в этом примечании. Степень m должна быть 1 или больше. Следующее приближение x является теперь одним из корней p, т.е. одним из решений p (x) =0. Взятие m=1, мы получаем секущий метод, тогда как m=2 дает метод Мюллера.

    Мюллер вычислил, что последовательность произвела этот путь, сходится к корню ξ с заказом μ, где μ — положительное решение.

    Метод намного более трудный, хотя для m> 2, чем он для m=1 или m=2, потому что намного более трудно определить корни полиномиала степени 3 или выше. Другая проблема состоит в том, что там не кажется никаким предписанием который из корней p, чтобы выбрать как следующее приближение x для m> 2.

    Эти трудности преодолены обобщенным секущим методом Сиди, который также использует полиномиал p. Вместо того, чтобы пытаться решить p (x) =0, следующее приближение x вычислено при помощи производной p в x в этом методе.

    • Мюллер, Дэвид Э., «Метод для решения алгебраических уравнений Используя автоматический компьютер», математические столы и другой СПИД к вычислению, 10 (1956), 208-215.
    • Аткинсон, Кендалл Э. (1989). Введение в Числовой Анализ, 2-й выпуск, Раздел 2.4. John Wiley & Sons, Нью-Йорк. ISBN 0-471-50023-2.
    • Бремя, R. L. и Faires, Дж. Д. Нумерикэл Анэлизис, 4-й выпуск, страницы 77ff.


    источники:

    http://ru.knowledgr.com/00966647/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%9C%D1%8E%D0%BB%D0%BB%D0%B5%D1%80%D0%B0