Рекурсия Левинсона

редактировать

Рекурсия Левинсона или Рекурсия Левинсона-Дурбина - это процедура в линейной алгебре для рекурсивно вычислить решение уравнения, содержащего матрицу Теплица. Алгоритм выполняется за Θ (n) времени, что является значительным улучшением по сравнению с исключением Гаусса – Джордана, которое выполняется за Θ (n).

Алгоритм Левинсона – Дурбина был впервые предложен Норманом Левинсоном в 1947 году, улучшен Джеймсом Дурбином в 1960 году, а затем улучшен до 4n, а затем 3n умножений с помощью WF Тренч и С. Зохар соответственно.

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

Алгоритм Барейса для матриц Теплица (не (следует путать с общим алгоритмом Барейса ) работает примерно так же быстро, как рекурсия Левинсона, но использует пространство O (n), тогда как рекурсия Левинсона использует только пространство O (n). Однако алгоритм Барейсса численно устойчив, тогда как рекурсия Левинсона в лучшем случае слабо устойчива (т. Е. Демонстрирует числовую стабильность для хорошо обусловленных линейных систем).

Новые алгоритмы, называемые асимптотически быстрыми или иногда сверхбыстрыми алгоритмами Теплица, могут решать за Θ (n logn) для различных p (например, p = 2, p = 3). Рекурсия Левинсона остается популярной по нескольким причинам; во-первых, это относительно легко понять в сравнении; с другой стороны, он может быть быстрее, чем сверхбыстрый алгоритм для малых n (обычно n < 256).

Содержание

  • 1 Выведение
    • 1.1 Предпосылки
    • 1.2 Вводные шаги
    • 1.3 Получение обратных векторов
    • 1.4 Использование обратные векторы
  • 2 Блок алгоритма Левинсона
  • 3 См. также
  • 4 Примечания
  • 5 Ссылки

Вывод

Предпосылки

Матричные уравнения имеют следующий вид:

M x → = y →. {\ Displaystyle \ mathbf {M} \ {\ vec {x}} = {\ vec {y}}.}{\ displaystyle \ mathbf {M} \ {\ vec {x}} = {\ vec {y }}.}

Алгоритм Левинсона – Дурбина может использоваться для любого такого уравнения, пока M является известной матрицей Теплица с ненулевой главной диагональю. Здесь y → {\ displaystyle {\ vec {y}}}{\ vec y} - известный вектор, а x → {\ displaystyle {\ vec {x}}}{\ vec {x}} - еще неизвестный вектор чисел x i подлежит определению.

В этой статье ê i представляет собой вектор, полностью состоящий из нулей, за исключением его i-го разряда, который содержит значение единица. Его длина будет неявно определяется окружающим поиск контекста. Термин N относится к ширине указанной выше матрицы - M является матрицей N × N. Наконец, в этой статье верхние индексы относятся к индуктивному индексу, тогда как нижние индексы обозначают индексы. Например (и определение), в этой статье матрица T представляет собой матрицу размера n × n, которая копирует верхний левый блок размером n × n из M, то есть T ij = M ij.

Tтакже является тёплицевой матрицей; это означает, что это можно записать как:

T n = [t 0 t - 1 t - 2… t - n + 1 t 1 t 0 t - 1… t - n + 2 t 2 t 1 t 0… t - n + 3 ⋮ ⋮ ⋮ ⋱ ⋮ tn - 1 tn - 2 tn - 3… t 0]. {\ displaystyle \ mathbf {T} ^ {n} = {\ begin {bmatrix} t_ {0} t _ {- 1} t _ {- 2} \ dots t _ {- n + 1} \\ t_ {1} t_ {0} t _ {- 1} \ dots t _ {- n + 2} \\ t_ {2} t_ {1} t_ {0} \ dots t _ {- n + 3} \\\ vdots \ vdots \ vdots \ ddots \ vdots \\ t_ {n-1} t_ {n-2} t_ {n-3} \ dots t_ {0} \ end {bmatrix}}.}{\ mathbf T} ^ {n} = {\ begin {bmatrix} t_ {0} t _ {{- 1}} t _ {{- 2}} \ dots t _ {{- n + 1}} \\ t_ {1} t_ {0} t _ {{- 1}} \ dots t _ {{- n + 2}} \\ t_ {2} t_ {1} t_ {0} \ dots t _ {{- n + 3 }} \\\ vdots \ vdots \ vdots \ ddots \ vdots \\ t _ {{n-1}} t _ {{n-2}} t _ {{n-3}} \ dots t_ {0 } \ end {bmatrix}}.

Вводные шаги

Алгоритм выполняется в два этапа. На первом этапе устанавливаются два набора векторов, называемых прямым и обратным векторами. Прямые векторы используются, чтобы помочь получить набор обратных векторов; тогда их можно сразу выбросить. Обратные векторы необходимы для второго шага, где они используются для построения желаемого решения.

Рекурсия Левинсона – Дарбина определяет n "прямой вектор", обозначенный f → n {\ displaystyle {\ vec {f}} ^ {n}}{\ vec f} ^ {n} , как вектор длины n, которая удовлетворяет:

T nf → n = e ^ 1. {\ displaystyle \ mathbf {T} ^ {n} {\ vec {f}} ^ {n} = {\ hat {e}} _ {1}.}{\ mathbf T} ^ {n} {\ vec f} ^ {n} = {\ hat e} _ {1}.

n "обратный вектор" b → n {\ displaystyle {\ vec {b}} ^ {n}}{ \ vec b} ^ {n} определяется аналогично; это вектор длины n, который удовлетворяет:

T n b → n = e ^ n. {\ displaystyle \ mathbf {T} ^ {n} {\ vec {b}} ^ {n} = {\ hat {e}} _ {n}.}{\ mathbf T} ^ {n} {\ vec b} ^ { n} = {\ hat e} _ {n}.

Важное упрощение может произойти, когда M - это симметричная матрица ; тогда два вектора связаны соотношением b i = f n + 1-i, то есть они являются инверсиями строк друг друга. Это может сэкономить дополнительные вычисления в этом особом случае.

Получение обратных векторов

Даже если матрица не является симметричной, тогда n прямых и обратных векторов можно найти из векторов длины n - 1 следующим образом. Во-первых, прямой вектор может быть расширен нулем, чтобы получить:

T n [f → n - 1 0] = [t - n + 1 T n - 1 t - n + 2 ⋮ tn - 1 tn - 2 … T 0] [f → n - 1 0] = [1 0 ⋮ 0 ϵ fn]. {\ displaystyle \ mathbf {T} ^ {n} {\ begin {bmatrix} {\ vec {f}} ^ {n-1} \\ 0 \\\ end {bmatrix}} = {\ begin {bmatrix} \ \ \ t _ {- n + 1} \\\ \ mathbf {T} ^ {n-1} \ t _ {- n + 2} \\\ \ \ \ vdots \\ t_ {n -1} t_ {n-2} \ dots t_ {0} \\\ end {bmatrix}} {\ begin {bmatrix} \ \\ {\ vec {f}} ^ {n-1} \\\ \ \ 0 \\\ \\\ end {bmatrix}} = {\ begin {bmatrix} 1 \\ 0 \\\ vdots \\ 0 \\\ epsilon _ {f} ^ {n} \ end {bmatrix}}. }{\ mathbf T} ^ {n} {\ begin {bmatrix} {\ vec f} ^ {{n- 1}} \\ 0 \\\ end {bmatrix}} = {\ begin {bmatrix} \ \ \ t _ {{- n + 1}} \\\ {\ mathbf T} ^ {{n-1 }} \ t _ {{- n + 2}} \\\ \ \ \ vdots \\ t _ {{n-1}} t _ {{n-2}} \ dots t_ {0} \\ \ end {bmatrix}} {\ begin {bmatrix} \ \ \ {\ vec f} ^ {{n-1}} \\\ \\ 0 \\\ \\\ end {bmatrix}} = {\ begin { bmatrix} 1 \\ 0 \\\ vdots \\ 0 \\\ epsilon _ {f} ^ {n} \ end {bmatrix}}.

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

ϵ f n = ∑ i = 1 n - 1 M n i f i n - 1 = ∑ i = 1 n - 1 t n - i f i n - 1. {\ displaystyle \ epsilon _ {f} ^ {n} \ = \ \ sum _ {i = 1} ^ {n-1} \ M_ {ni} \ f_ {i} ^ {n-1} \ = \ \ sum _ {i = 1} ^ {n-1} \ t_ {ni} \ f_ {i} ^ {n-1}.}\ epsilon _ {f} ^ {n} \ = \ \ sum _ {{i = 1}} ^ {{n- 1}} \ M _ {{ni}} \ f _ {{i}} ^ {{n-1}} \ = \ \ sum _ {{i = 1}} ^ {{n-1}} \ t _ {{ ni}} \ f _ {{i}} ^ {{n-1}}.

Эта ошибка будет вскоре возвращена и устранена из нового прямого вектора; но сначала обратный вектор должен быть расширен аналогичным образом (хотя и в обратном направлении). Для обратного вектора

T n [0 b → n - 1] = [t 0… t - n + 2 t - n + 1 ⋮ tn - 2 T n - 1 tn - 1] [0 b → n - 1] = [ϵ bn 0 ⋮ 0 1]. {\ displaystyle \ mathbf {T} ^ {n} {\ begin {bmatrix} 0 \\ {\ vec {b}} ^ {n-1} \\\ end {bmatrix}} = {\ begin {bmatrix} t_ {0} \ dots t _ {- n + 2} t _ {- n + 1} \\\ vdots \ \ \ \\ t_ {n-2} \ \ mathbf {T} ^ {n- 1} \ \\ t_ {n-1} \ \ \ end {bmatrix}} {\ begin {bmatrix} \ \\ 0 \\\ \\ {\ vec {b}} ^ {n-1 } \\\ \\\ end {bmatrix}} = {\ begin {bmatrix} \ epsilon _ {b} ^ {n} \\ 0 \\\ vdots \\ 0 \\ 1 \ end {bmatrix}}.}{\ mathbf T} ^ {n} {\ begin {bmatrix} 0 \\ {\ vec b} ^ {{n-1}} \\\ end {bmatrix}} = {\ begin {bmatrix} t_ {0} \ dots t _ {{- n + 2}} t _ {{- n + 1}} \\\ vdots \ \ \ \\ t _ {{n-2}} \ {\ mathbf T} ^ {{n-1}} \ \\ t_ {{n-1}} \ \ \ end {bmatrix}} {\ begin {bmatrix} \ \\ 0 \\\ \\ {\ vec b} ^ {{n-1}} \\\ \ \\ end {bmatrix}} = {\ begin {bmatrix} \ epsilon _ {b} ^ {n} \\ 0 \\\ vdots \\ 0 \\ 1 \ end {bmatrix}}.

Как и раньше, дополнительный столбец, добавленный к матрице, не нарушает этот новый обратный вектор; но дополнительная строка делает. Здесь у нас есть еще одна нежелательная ошибка ε b со значением:

ϵ b n = ∑ i = 2 n M 1 i b i - 1 n - 1 = ∑ i = 1 n - 1 t - i b i n - 1. {\ displaystyle \ epsilon _ {b} ^ {n} \ = \ \ sum _ {i = 2} ^ {n} \ M_ {1i} \ b_ {i-1} ^ {n-1} \ = \ \ sum _ {i = 1} ^ {n-1} \ t _ {- i} \ b_ {i} ^ {n-1}. \}\ epsilon _ {b} ^ {n} \ = \ \ sum _ {{i = 2}} ^ {n} \ M _ {{1i}} \ b _ {{i-1}} ^ {{n -1}} \ = \ \ sum _ {{i = 1}} ^ {{n-1}} \ t _ {{- i}} \ b_ {i} ^ {{n-1}}. \

Эти два условия ошибки могут использоваться для формирования форвардных и обратные векторы описываются следующим образом. Используя линейность матриц, для всех (α, β) {\ displaystyle (\ alpha, \ beta)}(\ alpha, \ beta) :

T (α [f → 0] + β [0 b →]) выполняется следующее тождество. = α [1 0 ⋮ 0 ϵ f] + β [ϵ b 0 0 1]. {\ displaystyle \ mathbf {T} \ left (\ alpha {\ begin {bmatrix} {\ vec {f}} \\\ \\ 0 \\\ end {bmatrix}} + \ beta {\ begin {bmatrix} 0 \\\ \\ {\ vec {b}} \ end {bmatrix}} \ right) = \ alpha {\ begin {bmatrix} 1 \\ 0 \\\ vdots \\ 0 \\\ epsilon _ {f} \ \\ end {bmatrix}} + \ beta {\ begin {bmatrix} \ epsilon _ {b} \\ 0 \\\ vdots \\ 0 \\ 1 \ end {bmatrix}}.}{\ displaystyle \ mathbf {T} \ left (\ alpha {\ begin {bmatrix} {\ vec {f}} \\\ \\ 0 \\\ end {bmatrix}} + \ beta {\ begin {bmatrix} 0 \\\ \\ {\ vec {b}} \ end {bmatrix}} \ right) = \ alpha {\ begin {bmatrix} 1 \\ 0 \\\ vdots \\ 0 \\\ epsilon _ {f} \\\ end {bmatrix}} + \ beta {\ begin {bmatrix} \ epsilon _ {b} \\ 0 \\\ vdots \\ 0 \\ 1 \ end {bmatrix} }.}

Если α и β выбраны так, что правая часть дает ê 1 или ê n, тогда величина в круглых скобках будет соответствовать определению n прямого или обратного вектора, соответственно. Если выбраны альфа и бета, векторная сумма в скобках будет простой и даст желаемый результат.

Чтобы найти эти коэффициенты, α fn {\ displaystyle \ alpha _ {f} ^ {n}}\ alpha _ {{f}} ^ {n} , β fn {\ displaystyle \ beta _ {f} ^ {n}}\ beta _ {{f}} ^ {n} таковы, что:

f → n = α fn [f → n - 1 0] + β fn [0 b → n - 1] {\ displaystyle {\ vec {f}} ^ {n } = \ alpha _ {f} ^ {n} {\ begin {bmatrix} {\ vec {f}} ^ {n-1} \\ 0 \ end {bmatrix}} + \ beta _ {f} ^ {n } {\ begin {bmatrix} 0 \\ {\ vec {b}} ^ {n-1} \ end {bmatrix}}}{\ displaystyle {\ vec {f}} ^ {n} = \ alph a _ {f} ^ {n} {\ begin {bmatrix} {\ vec {f}} ^ {n-1} \\ 0 \ end {bmatrix}} + \ beta _ {f} ^ {n} {\ begin {bmatrix} 0 \\ {\ vec {b}} ^ {n-1} \ end {bmatrix}}}

и соответственно α bn {\ displaystyle \ alpha _ {b} ^ {n}}\ alpha _ {{b}} ^ {n} , β bn {\ displaystyle \ beta _ {b} ^ {n}}\ beta _ {{b}} ^ {n} таковы, что:

b → n = α bn [f → n - 1 0] + β bn [0 b → n - 1]. {\ displaystyle {\ vec {b}} ^ {n} = \ alpha _ {b} ^ {n} {\ begin {bmatrix} {\ vec {f}} ^ {n-1} \\ 0 \ end { bmatrix}} + \ beta _ {b} ^ {n} {\ begin {bmatrix} 0 \\ {\ vec {b}} ^ {n-1} \ end {bmatrix}}.}{\ displaystyle {\ vec {b}} ^ {n} = \ alpha _ {b} ^ {n} {\ begin {bmatrix} {\ vec {f}} ^ {n-1} \\ 0 \ end {bmatrix}} + \ beta _ {b} ^ {n} {\ begin {bmatrix} 0 \\ {\ vec { b}} ^ {n-1} \ end {bmatrix}}.}

Умножая оба предыдущие уравнения: T n {\ displaystyle {\ mathbf {T}} ^ {n}}{{\ mathbf T}} ^ {n} , получается следующее уравнение:

[1 ϵ bn 0 0 ⋮ ⋮ 0 0 ϵ fn 1] [α fn α bn β fn β bn] = [1 0 0 0 ⋮ ⋮ 0 0 0 1]. {\ displaystyle {\ begin {bmatrix} 1 \ epsilon _ {b} ^ {n} \\ 0 0 \\\ vdots \ vdots \\ 0 0 \\\ epsilon _ {f} ^ {n} 1 \ end {bmatrix }} {\ begin {bmatrix} \ alpha _ {f} ^ {n} \ alpha _ {b} ^ {n} \\\ beta _ {f} ^ {n} \ beta _ {b} ^ { n} \ end {bmatrix}} = {\ begin {bmatrix} 1 0 \\ 0 0 \\\ vdots \ vdots \\ 0 0 \\ 0 1 \ end {bmatrix}}.}{\ begin {bmatrix} 1 \ epsilon _ {b} ^ {n} \\ 0 0 \\\ vdots \ vdots \ \ 0 0 \\\ epsilon _ {f} ^ {n} 1 \ end {bmatrix}} {\ begin {bmatrix} \ alpha _ {f} ^ {n} \ alpha _ {b} ^ {n} \\ \ beta _ {f} ^ {n} \ beta _ {b} ^ {n} \ end {bmatrix}} = {\ begin {bmatrix} 1 0 \\ 0 0 \\\ vdots \ vdots \\ 0 0 \\ 0 1 \ end {bmatrix}}.

Теперь все нули в середина двух векторов выше не учитывается и сворачивается, остается только следующее уравнение:

[1 ϵ bn ϵ fn 1] [α fn α bn β fn β bn] = [1 0 0 1]. {\ displaystyle {\ begin {bmatrix} 1 \ epsilon _ {b} ^ {n} \\\ epsilon _ {f} ^ {n} 1 \ end {bmatrix}} {\ begin {bmatrix} \ alpha _ {f } ^ {n} \ alpha _ {b} ^ {n} \\\ beta _ {f} ^ {n} \ beta _ {b} ^ {n} \ end {bmatrix}} = {\ begin { bmatrix} 1 0 \\ 0 1 \ end {bmatrix}}.}{\ begin {bmatrix} 1 \ epsilon _ {b} ^ { n} \\\ epsilon _ {f} ^ {n} 1 \ end {bmatrix}} {\ begin {bmatrix} \ alpha _ {f} ^ {n} \ alpha _ {b} ^ {n} \\ \ beta _ {f} ^ {n} \ beta _ {b} ^ {n} \ end {bmatrix}} = {\ begin {bmatrix} 1 0 \\ 0 1 \ end {bmatrix}}.

После решения этих задач (с использованием формулы обратной матрицы Крамера 2 × 2) новые прямые и обратные векторы:

f → n = 1 1 - ϵ bn ϵ fn [е → n - 1 0] - ϵ fn 1 - ϵ bn ϵ fn [0 b → n - 1] {\ displaystyle {\ vec {f}} ^ {n} = {1 \ over {1- \ epsilon _ {b} ^ {n} \ epsilon _ {f} ^ {n}}} {\ begin {bmatrix} {\ vec {f}} ^ {n-1} \\ 0 \ end { bmatrix}} - {\ epsilon _ {f} ^ {n} \ over {1- \ epsilon _ {b} ^ {n} \ epsilon _ {f} ^ {n}}} {\ begin {bmatrix} 0 \ \ {\ vec {b}} ^ {n-1} \ end {bmatrix}}}{\ vec f} ^ {n} = {1 \ over {1- \ эпсилон _ {b} ^ {n} \ epsilon _ {f} ^ {n}}} {\ begin {bmatrix} {\ vec f} ^ {{n-1}} \\ 0 \ end {bmatrix}} - {\ epsilon _ {f} ^ {n} \ over {1- \ epsilon _ {b} ^ {n} \ epsilon _ {f} ^ {n}}} {\ begin {bmatrix} 0 \\ {\ vec b} ^ {{n-1}} \ end {bmatrix}}
b → n = 1 1 - ϵ bn ϵ fn [0 b → n - 1] - ϵ bn 1 - ϵ bn ϵ fn [f → n - 1 0]. {\ displaystyle {\ vec {b}} ^ {n} = {1 \ over {1- \ epsilon _ {b} ^ {n} \ epsilon _ {f} ^ {n}}} {\ begin {bmatrix} 0 \\ {\ vec {b}} ^ {n-1} \ end {bmatrix}} - {\ epsilon _ {b} ^ {n} \ over {1- \ epsilon _ {b} ^ {n} \ epsilon _ {f} ^ {n}}} {\ begin {bmatrix} {\ vec {f}} ^ {n-1} \\ 0 \ end {bmatrix}}.}{\ displaystyle {\ vec {b}} ^ {n} = {1 \ over {1- \ epsilon _ {b} ^ {n} \ epsilon _ {f} ^ {n}}} {\ begin {bmatrix} 0 \\ {\ vec {b}} ^ {n-1} \ end {bmatri x}} - {\ epsilon _ {b} ^ {n} \ over {1- \ epsilon _ {b} ^ {n} \ epsilon _ {f} ^ {n}}} {\ begin {bmatrix} {\ vec {f}} ^ {n-1} \\ 0 \ end {bmatrix}}.}

Выполняя эти векторные суммирования, затем, дает n векторов вперед и назад из предыдущих. Остается только найти первый из этих векторов, а затем некоторые быстрые суммы и умножения дают оставшиеся. Первые прямые и обратные векторы просто:

f → 1 = b → 1 = [1 M 11] = [1 t 0]. {\ displaystyle {\ vec {f}} ^ {1} = {\ vec {b}} ^ {1} = \ left [{1 \ over M_ {11}} \ right] = \ left [{1 \ over t_ {0}} \ right].}{\ displaystyle {\ vec {f}} ^ {1} = {\ vec {b}} ^ {1} = \ left [{1 \ over M_ {11}} \ right ] = \ left [{1 \ over t_ {0}} \ right].}

Использование обратных векторов

Вышеупомянутые шаги дают N обратных векторов для M . Отсюда более произвольное уравнение:

y → = M x →. {\ displaystyle {\ vec {y}} = \ mathbf {M} \ {\ vec {x}}.}{ \ vec y} = {\ mathbf M} \ {\ vec x}.

Решение может быть построено тем же рекурсивным способом, что и обратные векторы. Соответственно, x → {\ displaystyle {\ vec {x}}}{\ vec {x}} должен быть обобщен на последовательность промежуточных продуктов x → n {\ displaystyle {\ vec {x}} ^ { n}}{\ vec x} ^ {n} , такое, что x → N = x → {\ displaystyle {\ vec {x}} ^ {N} = {\ vec {x}}}{\ vec x} ^ {N} = {\ vec x} .

Решение затем строится рекурсивно, замечая, что if

T n - 1 [x 1 n - 1 x 2 n - 1 ⋮ xn - 1 n - 1] = [y 1 y 2 ⋮ yn - 1]. {\ displaystyle \ mathbf {T} ^ {n-1} {\ begin {bmatrix} x_ {1} ^ {n-1} \\ x_ {2} ^ {n-1} \\\ vdots \\ x_ { n-1} ^ {n-1} \\\ end {bmatrix}} = {\ begin {bmatrix} y_ {1} \\ y_ {2} \\\ vdots \\ y_ {n-1} \ end { bmatrix}}.}{\ mathbf T} ^ {{n-1}} {\ begin {bmatrix} x_ {1} ^ {{n-1}} \\ x_ {2} ^ {{n-1}} \\\ vdots \\ x _ {{n-1}} ^ {{n-1}} \\\ end {bmatrix}} = {\ begin {bmatrix } y_ {1} \\ y_ {2} \\\ vdots \\ y _ {{n-1}} \ end {bmatrix}}.

Затем, снова расширяя ноль и определяя константу ошибки, где это необходимо:

T n [x 1 n - 1 x 2 n - 1 ⋮ xn - 1 n - 1 0] = [y 1 y 2 ⋮ yn - 1 ϵ xn - 1]. {\ Displaystyle \ mathbf {T} ^ {n} {\ begin {bmatrix} x_ {1} ^ {n-1} \\ x_ {2} ^ {n-1} \\\ vdots \\ x_ {n- 1} ^ {n-1} \\ 0 \ end {bmatrix}} = {\ begin {bmatrix} y_ {1} \\ y_ {2} \\\ vdots \\ y_ {n-1} \\\ epsilon _ {x} ^ {n-1} \ end {bmatrix}}.}{\ mathbf T} ^ {{n}} {\ begin {bmatrix} x_ {1} ^ {{n-1}} \\ x_ {2} ^ {{n-1}} \\\ vdots \\ x _ {{n-1}} ^ {{n-1}} \\ 0 \ end {bmatrix}} = {\ begin {bmatrix} y_ {1} \ \ y_ {2} \\\ vdots \\ y _ {{n-1}} \\\ epsilon _ {x} ^ {{n-1}} \ end {bmatrix}}.

Затем мы можем использовать обратный вектор n, чтобы исключить член ошибки и заменить его желаемой формулой следующим образом:

T n ( [x 1 n - 1 x 2 n - 1 ⋮ xn - 1 n - 1 0] + (yn - ϵ xn - 1) b → n) = [y 1 y 2 ⋮ yn - 1 yn]. {\ Displaystyle \ mathbf {T} ^ {n} \ left ({\ begin {bmatrix} x_ {1} ^ {n-1} \\ x_ {2} ^ {n-1} \\\ vdots \\ x_ {n-1} ^ {n-1} \\ 0 \\\ end {bmatrix}} + (y_ {n} - \ epsilon _ {x} ^ {n-1}) \ {\ vec {b}} ^ {n} \ right) = {\ begin {bmatrix} y_ {1} \\ y_ {2} \\\ vdots \\ y_ {n-1} \\ y_ {n} \ end {bmatrix}}.}{\ mathbf T} ^ {{n}} \ left ({\ begin в {bmatrix} x_ {1} ^ {{n-1}} \\ x_ {2} ^ {{n-1}} \\\ vdots \\ x _ {{n-1}} ^ {{n-1 }} \\ 0 \\\ end {bmatrix}} + (y_ {n} - \ epsilon _ {x} ^ {{n-1}}) \ {\ vec b} ^ {n} \ right) = { \ begin {bmatrix} y_ {1} \\ y_ {2} \\\ vdots \\ y _ {{n-1}} \\ y_ {n} \ end {bmatrix}}.

Расширение этого метода до тех пор, пока n = N не даст решение x → {\ displaystyle {\ vec {x}}}{\ vec {x}} .

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

Блочный алгоритм Левинсона

Если M не строго Тёплиц, но блок Тёплиц, рекурсия Левинсона может быть получена почти таким же образом: рассматривая блочную матрицу Теплица как матрицу Теплица с матричными элементами (Musicus 1988). Блочные матрицы Теплица возникают естественным образом в алгоритмах обработки сигналов при работе с множественными потоками сигналов (например, в системах MIMO ) или цикло-стационарными сигналами.

См. Также

Примечания

Ссылки

Определение источников

  • Левинсон, Н. (1947). «Критерий ошибки Wiener RMS при проектировании и прогнозировании фильтров». J. Math. Phys., V. 25, pp. 261–278.
  • Durbin, J. (1960). «Подгонка моделей временных рядов». Rev. Inst. Int. Stat., V. 28, pp. 233–243.
  • Trench, W. F. (1964). «Алгоритм обращения конечных тёплицевых матриц». J. Soc. Indust. Appl. Math., V. 12, pp. 515–522.
  • Musicus, B.R. (1988). «Левинсон и быстрые алгоритмы Холецкого для теплицевых и почти теплицевых матриц». RLE TR № 538, MIT. [1]
  • Дельсарт П. и Генин Ю.В. (1986). «Сплит-алгоритм Левинсона». IEEE Transactions по акустике, речи и обработке сигналов, v. ASSP-34 (3), pp. 470–478.

Дальнейшая работа

Резюме

  • Бэкстрем, Т. (2004). «2.2. Рекурсия Левинсона – Дурбина». Линейное прогнозирующее моделирование речи - ограничения и разложение пар линейного спектра. Докторская диссертация. Отчет № 71 / Технологический университет Хельсинки, Лаборатория акустики и обработки аудиосигналов. Эспоо, Финляндия. [3]
  • Клаербут, Джон F. (1976). "Глава 7 - Применение формы волны наименьших квадратов." Основы обработки геофизических данных петь. Пало-Альто: Научные публикации Блэквелла. [4]
  • Нажмите, WH; Теукольский С.А.; Феттерлинг, штат Вашингтон; Фланнери, Б.П. (2007), «Раздел 2.8.2. Матрицы Теплица», Численные рецепты: Искусство научных вычислений (3-е изд.), Нью-Йорк: Cambridge University Press, ISBN 978-0-521-88068-8
  • Голуб, Г.Х., и займ, К.Ф. Ван (1996). «Раздел 4.7: Теплиц и связанные системы» Матричные вычисления, Johns Hopkins University Press
Последняя правка сделана 2021-05-27 07:19:59
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте