Квант

51

Метод Лобачевского

Доктор физико-математических наук
А. Л. БРУДНО

Создатель неевклидовой геометрии Н. И. Лобачевский придумал и метод приближенного решения алгебраической уравнения (с действительными коэффициентами)

a0+a1x+a2x2+⋯+anxn=0.(1)a_0 + a_1x + a_2x^2 + \dots + a_nx^n = 0. \quad (1)

Метод позволяет найти абсолотное значение корня, имеющего максимальный модуль. После этого знак корня легко определить подстановкой в заданное уравнение. Единственное ограничение на применение метода — корень, максимальный по модулю, должен быть единственным. Если, например, он комплектный, то их уже два (т. е. еще и комплексно-сопряженный) и метод не применим. Воспледствии этот метод был усовершенствован, и стало возможным нахождение все корни уравнения, если их модули различны.

Идея Лобачевского состоит в следующем. Заменим заданное уравнение (1) другим, корни которого равны квадратам корней заданного. Будем повторять этот прием многоократно. Тогда корни уравнения «возведутся в квадрат», потом в 4-ю степень, в 8-ю и т. д. В результате максимальный по модулю корень становится играть подавляющую роль перед остальных и его легко будет вычислить по коэффициентам полученного уравнения (см. далее). Если теперь из ответа корень нужно степенки, то получится (приближенно) абсолотное значение корня исходного уравнения.

  1. Итак, Лобачевскому нужно было найти многочлен, корни которого равны квадратам корней исходного многочлена, и найти его нужно было, не вычисляя корней исходного многочлена. Посмотрим, что сделал Лобачевский. Нам задан многочлен

P(x)=a0+a1x+a2x2+⋯+anxn.(2)P(x) = a_0 + a_1x + a_2x^2 + \dots + a_nx^n. \quad (2)

Есть такая теорема: многочлен P(x)P(x) можно представить в виде

P(x)=an(x−x1)(x−x2)…(x−xn),P(x) = a_n(x - x_1)(x - x_2) \dots (x - x_n),

где x1,x2,…,xnx_1, x_2, \dots, x_n — корни уравнения P(x)=0P(x) = 0 (в школе это изучается только для n=2n=2 и называется «разложение квадратного трехчлена на множители»). Возьмем многочлен P(−x)P(-x). Его можно записать в виде

P(−x)=a0−a1x+a2x2−⋯+(−1)nanxn.P(-x) = a_0 - a_1x + a_2x^2 - \dots + (-1)^n a_nx^n.

или

P(−x)=an(−x−x1)(−x−x2)…(−x−xn),P(-x) = a_n(-x - x_1)(-x - x_2) \dots (-x - x_n),

или даже так:

P(−x)=(−1)nan(x+x1)(x+x2)…(x+xn).P(-x) = (-1)^n a_n(x + x_1)(x + x_2) \dots (x + x_n).

Рассмотрим произведение многочленов

P(x)P(−x)=(−1)nan2(x2−x12)(x2−x22)…(x2−xn2).P(x)P(-x) = (-1)^n a_n^2(x^2 - x_1^2)(x^2 - x_2^2) \dots (x^2 - x_n^2).

52

Заметим, что оно не содержит нечетных степеней xx. Если в этом произведении заменить x2x^2 на tt, то получится нужный нам многочлен

Q(t)=(−1)nan2(t−x12)(t−x22)…(t−xn2),Q(t) = (-1)^n a_n^2 (t - x_1^2) (t - x_2^2) \dots (t - x_n^2),

корни которого равны квадратам корней заданного многочлена P(x)P(x). Для вычисления коэффициентов bkb_k многочлена Q(t)Q(t)

Q(t)=b0+b1t+b2t2+⋯+bn−1tn−1+bntnQ(t) = b_0 + b_1 t + b_2 t^2 + \dots + b_{n-1} t^{n-1} + b_n t^n

можно переменить P(x)P(x) и P(−x)P(-x), привести подобные члены при одинаковых степенях xx (нечетные степени при этом исчезнут) и заменить x2,x4,…x^2, x^4, \dots на t,t2,…t, t^2, \dots.

Вот формулы для коэффициентов bkb_k при n=3n=3 и n=4n=4:

n=3;a0+a1x+a2x2+a3x3=0n = 3; a_0 + a_1 x + a_2 x^2 + a_3 x^3 = 0
b0=a0a0b_0 = a_0 a_0
b1=a0a2−a1a1+a2a0b_1 = a_0 a_2 - a_1 a_1 + a_2 a_0
b2=−a1a3+a2a2−a3a1b_2 = -a_1 a_3 + a_2 a_2 - a_3 a_1
b3=−a3a3b_3 = -a_3 a_3

n=4;a0+a1x+a2x2+a3x3+a4x4=0n = 4; a_0 + a_1 x + a_2 x^2 + a_3 x^3 + a_4 x^4 = 0
b0=a0a0b_0 = a_0 a_0
b1=a0a2−a1a1+a2a0b_1 = a_0 a_2 - a_1 a_1 + a_2 a_0
b2=a0a4−a1a3+a2a2−a3a1+a4a0b_2 = a_0 a_4 - a_1 a_3 + a_2 a_2 - a_3 a_1 + a_4 a_0
b3=a2a4−a3a3+a4a2b_3 = a_2 a_4 - a_3 a_3 + a_4 a_2
b4=a4a4b_4 = a_4 a_4

Вычисление коэффициентов bkb_k не сложно поставить на компьютер или даже программируемый микрокалькулятор. После вычисления коэффициентов bkb_k их значения присаивают коэффициентам aka_k, вычисляются новые bkb_k и т. д., пока максимальный по модулю корень нестанет превалирующим.

Чтобы значение этого корня, вернемся к формулам

Q(t)=b0+b1t+⋯+bn−1tn−1+bntnQ(t) = b_0 + b_1 t + \dots + b_{n-1} t^{n-1} + b_n t^n
Q(t)=bn(t−t1)(t−t2)…(t−tn).Q(t) = b_n (t - t_1) (t - t_2) \dots (t - t_n).

Если в нижней строке раскрыть скобки и приведенные члены, то должны получиться верхняя строка. Следовательно,

bn−1=−(t1+t2+⋯+tn)bnb_{n-1} = -(t_1 + t_2 + \dots + t_n) b_n

или

t1(1+t2/t1+t3/t1+⋯+tn/t1)=−bn−1/bn.t_1 (1 + t_2/t_1 + t_3/t_1 + \dots + t_n/t_1) = -b_{n-1}/b_n.

Если корень t1t_1 по модулю значительно преосходит остальные, то выражение в скобках близко к 1 и приближению

t1≈−bn−1/bn.t_1 \approx -b_{n-1}/b_n.

Любопытно, что метод Лобачевского можно находить и значения остальных корней уравнения (если все они по модулю различны). Пусть корень t2t_2 меньше t1t_1, но значительное преосходит остальные. Тогда в выражении для bn−2b_{n-2}

bn−2=(t1t2+t1t3+⋯+t2t3+… )bnb_{n-2} = (t_1 t_2 + t_1 t_3 + \dots + t_2 t_3 + \dots) b_n

в скобках главную роль будет играть t1t2t_1 t_2, и можно приближенно считать, что bn−2≈t1t2bnb_{n-2} \approx t_1 t_2 b_n, откуда

t2≈−bn−2/bn−1.t_2 \approx -b_{n-2}/b_{n-1}.

Аналогично tk≈−bn−k/bn−k+1t_k \approx -b_{n-k}/b_{n-k+1}.

  1. Приближения, полученные по методу Лобачевского, исключаетлено быстро сходятся к точному решению. При вычислениях на ЭВМ или микрокалькуляторе надо завести счетчик числа iterations (обозначим его через pp) и добавлять в него 1 после каждой iterations. Для корней xkx_k исходного уравнения будет

∣xk∣=tk1/2p,|x_k| = t_k^{1/2^p},

коль скоро многочлен Q(t)Q(t) получен в результате pp iterations (повторенный перехода от многочлена PP к многочлену QQ и замены корней их квадратами). Вычисляется ∣xk∣|x_k| следует только если tk>0t_k > 0. Значение tkt_k может быть отрицательным если есть корни, равные по модулю, или при первых iterationsх. Приближенные значения модели корней xkx_k удобно выводить на экран после каждой iterations и следить за тем, как они установливаются. Именно такой метод, но в расчете наручные вычисления, и придумал Лобачевский.

Эксперимент с микрокалькулятором МК-61 для кубического уравнения 0,76—1,37x—1,3x²+2x³=0, имеющего корни x1=0,95x_1=0,95; x2=−0,8x_2=-0,8; x3=0,5x_3=0,5, дал такую картину сходимости (приводятся 2—3 знака после запятой; каждая iterация занимала 15 секунд):