Дюран-Кернер с производной в знаменателе

Поправочный член для метода нахождения корня Дюрана-Кернера равен

$w_k = -\frac{f(z_k)}{\prod_{j\not=k}(z_k - z_j)}$

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

Как образовать такую ​​производную? Все, что у меня есть, это коэффициенты многочлена и приближения корней. Как придумать коэффициенты для производной, чтобы я мог оценить ее по схеме Хорнера, как я делаю это для оценки многочлена ($ f (z_k) $)?

Правильно ли я предполагаю, что производная выглядит как $g'(x)$, где $g(x) = \prod(z_k - z_j)$?

PS: я пытался реализовать выражение Бо Якоби со страницы обсуждения, но не могу заставить его работать: я пытался суммировать все произведения всех приближений, кроме одного, и помещать результат в знаменатель, но, похоже, это не работает. туда...


person Ecir Hana    schedule 23.08.2015    source источник


Ответы (1)


Если вы используете производную в знаменателе, вы получаете метод Ньютона. Вы можете получить значение производной с помощью связанной схемы Хорнера или вы можете сформировать полином производной и просто оценить его. Вам нужно будет задокументировать, как вы оцениваете значение полинома.

Комбинация с использованием производной соотв. Шаг Ньютона и текущие приближения корня - это метод Аберта-Эрлиха.


Связанное обсуждение касается того факта, что произведение в знаменателе можно интерпретировать как производную от вспомогательного многочлена. Обсуждаемая формула

(d/dx)((x-p)(x-q)(x-r)(x-s)) = (x-q)(x-r)(x-s)+(x-p)(x-r)(x-s)+(x-p)(x-q)(x-s)+(x-p)(x-q)(x-r)

остается верным в более высоких степенях. Обратите внимание, что при вычислении приблизительного корня, т. е. одного из p,q,r,s, остается только один член произведения.

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


Для средних степеней быстрее оценивать произведения как заданные (n*(n-2) множителей). Сборка линейных множителей в приближенный полином, а затем вычисление производного полинома в приближениях требует больших усилий (примерно на n²/2 множителей больше).


Чтобы вычислить полином g(z) «наивным» способом, вам нужно несколько раз умножить полином на линейный множитель.

[ a[m], ..., a[0] ] * [ 1, -zz ] 
    = [ a[m], a[m-1] - zz*a[m],..., a[0] - zz*a[1], -zz*a[0] ]

Это можно сделать на месте, начав сверху, т. е. с наивысшей степени.

a[m+1] = a[m]
for k=m downto 1
    a[k] = a[k-1]-zz*a[k]
end for
a[0] = -zz*a[0]
person Lutz Lehmann    schedule 24.08.2015
comment
Большое спасибо за ответ! К сожалению, я до сих пор этого не понимаю, это моя вина, потому что я не могу объяснить это очень хорошо, потому что это немного ново для меня. Позвольте мне попробовать еще раз: у меня есть поправочный срок DK, хорошо. Могу ли я заменить знаменатель оценкой производной от P? Вы и страница обсуждения, кажется, говорите «да», но я не уверен, что это одно и то же: приближения корня DK отталкивают друг друга, тогда как итерация Ньютона может легко сходиться к одному и тому же корню несколько раз. - person Ecir Hana; 24.08.2015
comment
См. ответ math.se. D-K есть wk=-f(zk)/g'(zk), где g(z)=(z-z1)…(z-zn). Использование wk=-f(zk)/f'(zk) является одномерным методом Ньютона, и, правильно, отдельные итерации разделены. - person Lutz Lehmann; 24.08.2015
comment
Я понимаю. Но как получить коэффициенты g'? Значит, я могу оценить это по схеме Хорнера? Другими словами, у меня есть коэффициент P (a0, a1, ...) и я оцениваю его с помощью Хорнера как value = value * guess + ai. Ok. Но как вычислить g'(x)? PS: Должен ли я лучше постить на math.se? - person Ecir Hana; 24.08.2015
comment
Как я уже сказал, вы этого не сделаете. Просто вычислите произведение разностей корней. - person Lutz Lehmann; 24.08.2015
comment
Я понимаю. Но я бы хотел. Разве это не возможно? И теперь вы можете спросить, почему кто-то хочет сделать это таким образом. Ну... я могу попытаться объяснить... Вы предпочитаете чат или math.se? Или здесь? - person Ecir Hana; 24.08.2015
comment
Это вопрос программирования. Добавлен раздел о многократном умножении на линейный коэффициент. - person Lutz Lehmann; 24.08.2015
comment
Давайте продолжим обсуждение в чате. - person Ecir Hana; 24.08.2015