Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[230]

Переход от коэффициентов многочлена А(х) к его значениям требует времени ©(га2), если мы вычисляем отдельно значение в каждой из га точек по схеме Горнера за в (га) шагов. В дальнейшем мы увидим, что время можно сократить - при подходящем выборе точек достаточно О (га lgra) операций.

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

Теорема 32.1 (Однозначность интерполяции)

Для любого множества {(ж0, у0), (жь yt),..., (жп ь yn-i)} пар аргумент-значение (все жг- различны) существует единственный многочлен А(х) степени ниже га, для которого ук = А(хк) для к = 0,1,..., га - 1.

Доказательство

Теорема утверждает, что некоторая матрица обратима. В самом деле, уравнение (32.3) можно записать в матричном виде:

/ 1

1

ж0

Х\

еп-1

п - 1

1 \

„п-1 Jn-1

(

а0

\

J \ an i J

( Уо \

У1

V Уп-i J

(32.4)

Левая матрица называется матрицей Вандермонда (Vandermonde matrix) и обозначается V(xo, х\,..., xn i). Как утверждает упражнение 31.1-10, определитель этой матрицы равен

]<к

Хк

и по теореме 31.5 эта матрица является обратимой (невырожденной), если хк различны. Поэтому коэффициенты многочлена aj однозначно определяются по формуле

а = V(x0, xi,

У-

Это доказательство сводит задачу интерполяции к решению системы линейных уравнений (32.4). Если делать это по общим правилам решения систем линейных уравнений, описанным в главе 31 (LU-разложение), потребуется время О (га3). Более быстрый алгоритм интерполяции основывается на формуле Лагранжа:

п-1

Е

к=0

Ук

П(

Зфк

П {Хк

Зфк

(32.5)


Убедитесь, что правая часть (32.5) представляет собой многочлен степени меньше га и что А(х]Л = Ук Для всех к. В упражнении 32.1-4 предлагается показать, что с помощью формулы Лагранжа можно вычислить коэффициенты многочлена А за время ©(га2).

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

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

{(ж0,у0), (xi,yi), •.., (sn i,yn i)},

а многочлен В - набором

{(х0,у0), {хъу[),..., (хп-у1)},

(заметьте, что значения А и В заданы в одних и тех же га точках), то многочлен С(ж) задается парами

{(х0,Уо + Уо), (xi,yi + yi), •.., (жп 1,уп 1 + уп)}.

Подобным образом можно поступать и с умножением, перемножая значения в каждой точке по отдельности. Надо иметь в виду, однако, что при умножении степени многочленов складываются, и произведение двух многочленов степени меньше га может иметь степень больше га. Она заведомо меньше 2га (даже 2га - 1), так что для восстановления произведения достаточно 2га точек (теорема 32.1). Таким образом, умножая два многочлена Ап В степени меньше га, полезно с самого начала иметь значения многочленов А и В не в га, а в 2га точках (одних и тех для для А ж В). После этого эти значения можно перемножить за за время ©(га) и получить представление произведения С = АВ в виде набора пар аргумент-значение. (Сравните это время с 0(га2) при вычислении коэффициентов произведения по формуле (32.2).)

Осталось обсудить такой вопрос: мы знаем значения многочлена в заданных точках; как найти его значение в точке, которой нет среди них? По-видимому, нет более простого способа сделать это, чем сначала найти коэффициенты многочлена, а затем вычислить его значение в нужной точке.

Быстрое умножение многочленов, заданных вектором коэффициентов


Надписи на самой картинке на стрелках:

Обычное умножение, время ©(га2) Вычисление значений, время ©(ralgra) Интерполяция, время ©(ralgra) Поточечное умножение, время 0(га) в правом столбце:

Представление набором коэффициентов Представление набором значений

Рис. 31.2 32.1 Схема быстрого алгоритма умножения многочленов. В верхней части рисунка многочлены заданы векторами коэффициентов, в нижней - значениями. Стрелки, идущие слева направо, соответствуют умножению. Символы и>2„ обозначают комплексные корни из единицы степени 2п.

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

При этом можно использовать любой набор из га различных точек, но выбрав их удобным образом, можно сократить время преобразования в ту и другую сторону до ©(ralgra). Как мы увидим в разделе 32.2, удобно взять в качестве точек комплексные корни из единицы, в этом случае оба перехода сведутся к так называемому дискретному преобразованию Фурье (Discrete Fourier Transform, DFT) и обратному к нему преобразованию, которые выполняются за ©(ralgra) операций.

Этот план действий изображен на рис. 32.1. Как мы уже говорили, при умножении двух многочленов степени меньше га получается многочлен степени меньше 2га, поэтому для начала мы дополняем многочлены-сомножители нулевыми коэффициентами старших степеней. После этого мы имеем дело с многочленами степени меньше 2га, и потому используем «комплексные корни степени 2га из единицы», обозначаемые иг2п при г = 0,1,... , 2га - 1.

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

1.Удвоение количества коэффициентов. Дополнить вектора коэффициентов, задающие многочлены А(х) и В(х), нулевыми коэффициентами старших степеней так, чтобы в векторах коэффициентов стало по 2га элементов.

2.Вычисление значений. При помощи быстрого преобразования Фурье (применяемого дважды - для А и для В) вычислить значе-



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120] [стр.121] [стр.122] [стр.123] [стр.124] [стр.125] [стр.126] [стр.127] [стр.128] [стр.129] [стр.130] [стр.131] [стр.132] [стр.133] [стр.134] [стр.135] [стр.136] [стр.137] [стр.138] [стр.139] [стр.140] [стр.141] [стр.142] [стр.143] [стр.144] [стр.145] [стр.146] [стр.147] [стр.148] [стр.149] [стр.150] [стр.151] [стр.152] [стр.153] [стр.154] [стр.155] [стр.156] [стр.157] [стр.158] [стр.159] [стр.160] [стр.161] [стр.162] [стр.163] [стр.164] [стр.165] [стр.166] [стр.167] [стр.168] [стр.169] [стр.170] [стр.171] [стр.172] [стр.173] [стр.174] [стр.175] [стр.176] [стр.177] [стр.178] [стр.179] [стр.180] [стр.181] [стр.182] [стр.183] [стр.184] [стр.185] [стр.186] [стр.187] [стр.188] [стр.189] [стр.190] [стр.191] [стр.192] [стр.193] [стр.194] [стр.195] [стр.196] [стр.197] [стр.198] [стр.199] [стр.200] [стр.201] [стр.202] [стр.203] [стр.204] [стр.205] [стр.206] [стр.207] [стр.208] [стр.209] [стр.210] [стр.211] [стр.212] [стр.213] [стр.214] [стр.215] [стр.216] [стр.217] [стр.218] [стр.219] [стр.220] [стр.221] [стр.222] [стр.223] [стр.224] [стр.225] [стр.226] [стр.227] [стр.228] [стр.229] [стр.230] [стр.231] [стр.232] [стр.233] [стр.234] [стр.235] [стр.236] [стр.237] [стр.238] [стр.239] [стр.240] [стр.241] [стр.242] [стр.243] [стр.244] [стр.245] [стр.246] [стр.247] [стр.248] [стр.249] [стр.250] [стр.251] [стр.252] [стр.253] [стр.254] [стр.255] [стр.256] [стр.257] [стр.258] [стр.259] [стр.260] [стр.261] [стр.262] [стр.263] [стр.264] [стр.265] [стр.266] [стр.267] [стр.268] [стр.269] [стр.270] [стр.271] [стр.272] [стр.273] [стр.274] [стр.275] [стр.276] [стр.277] [стр.278] [стр.279] [стр.280] [стр.281] [стр.282] [стр.283] [стр.284] [стр.285] [стр.286] [стр.287] [стр.288] [стр.289] [стр.290] [стр.291] [стр.292] [стр.293] [стр.294]