Алгоритм вычисления собственных значений

Перейти к навигацииПерейти к поиску

Алгоритм вычисления собственных значений — алгоритм, позволяющий определить собственные значения и собственные векторы заданной матрицы. Создание эффективных и устойчивых алгоритмов для этой задачи является одной из ключевых задач вычислительной математики.

Собственные значения и собственные векторы

Если задана n × n квадратная матрица A над вещественными или комплексными числами, то собственное значение λ и соответствующий ему корневой вектор v — это пара, удовлетворяющая равенству[1]:

где v ненулевой n × 1 вектор-столбец, E является n × n единичной матрицей, k — положительным целым, а λ и v могут быть комплексными, даже если A вещественна. Если k = 1, вектор просто называется собственным вектором. В этом случае Av = λv. Любое собственное значение λ матрицы A имеет простой[note 1] собственный вектор, соответствующий ему так, что если k — наименьшее целое, при котором (A - λE)k v = 0 для корневого вектора v, то (A - λE)k-1 v будет простым собственным вектором. Значение k всегда можно взять меньше либо равным n. В частности, (A - λE)n v = 0 для всех корневых векторов v, соответствующих λ.

Для любого собственного значения λ матрицы A ядро ker(A - λE) состоит из всех собственных векторов, соответствующих λ, (вместе с 0) и называется собственным подпространством числа λ, а векторное подпространство ker((A - λE)n) состоит из всех корневых векторов (дополненное нулевым вектором) и называется корневым подпространством. Геометрическая кратность значения λ является размерностью его собственного подпространства. Алгебраическая кратность значения λ является размерностью его корневого подпространства. Дальнейшие термины связаны с равенством:

Здесь det — определитель, λi — все различные собственные значения матрицы A, а αi — соответствующие алгебраические кратности. Функция pA(z) — это характеристический многочлен матрицы A. Таким образом, алгебраическая кратность является кратностью собственных значений как корней характеристического многочлена. Поскольку любой собственный вектор является корневым вектором, геометрическая кратность меньше либо равна алгебраической кратности. Сумма алгебраических кратностей равна n степени характеристического многочлена. Уравнение pA(z) = 0 называется характеристическим уравнением, поскольку его корни являются в точности собственными значениями матрицы A. По теореме Гамильтона — Кэли сама матрица A удовлетворяет тому же самому уравнению: pA(A) = 0[note 2]. Как следствие, столбцы матрицы должны быть либо 0, либо корневыми векторами, соответствующими собственному значению λj, поскольку они уничтожаются матрицей

Любой набор корневых векторов различных собственных значений линейно независим, так что базис для всего C n можно выбрать из набора корневых векторов. Точнее этот базис {vi}n
i=1
можно выбрать и выстроить так, что:

  • если vi и vj имеют одно и то же собственное значение, то тоже будет верно для любого vk при k между i и j;
  • если vi не является простым собственным вектором и если λi его собственное значение, то (A - λiE )vi = vi-1 (в частности v1 должен быть простым собственным вектором).

Если эти базисные вектора расположить как столбцы матрицы V = [ v1 v2 ... vn ], то V можно использовать для преобразования матрицы A в её нормальную жорданову форму:

где λi — собственные значения, βi = 1 если (A - λi+1)vi+1 = vi и βi = 0 в других случаях.

Если W является обратимой матрицей и λ — собственное значение матрицы A с соответствующим корневым вектором v, то (W -1AW - λE )k W -kv = 0. Таким образом, λ является собственным значением матрицы W -1AW с соответствующим корневым вектором W -kv. Таким образом, подобные матрицы имеют те же самые собственные значения.

Нормальные, эрмитовы и вещественные симметричные матрицы

Эрмитово-сопряжённая матрица M* к комплексной матрице M — это траспонированная матрица с заменой всех элементов на сопряжённые значения: M * = M T. Квадратная матрица A называется нормальной, если она коммутирует с эрмитово-сопряжённой: A*A = AA*. Матрица называется эрмитовой, если она равна своей сопряжённой: A* = A. Все эрмитовы матрицы нормальны. Если A имеет только вещественные элементы, то сопряжённая к ней — это просто транспонированная матрица, и она будет эрмитовой в том и только в том случае, когда она симметрична. Если применить это к столбцам, сопряжённость можно использовать для определения канонического скалярного произведения в C n: w • v = w* v[note 3]. Нормальные, эрмитовы и вещественные симметричные матрицы имеют ряд полезных свойств:

  • Каждый корневой собственный вектор нормальной матрицы является простым собственным вектором.
  • Любая нормальная матрица подобна диагональной, поскольку её нормальная жорданова форма является диагональной матрицей.
  • Собственные вектора, соответствующие различным собственным значениям нормальной матрицы, ортогональны.
  • Для любой нормальной матрицы A C n имеет ортонормальный базис, состоящий из собственных векторов матрицы A. Соответствующая матрица собственных векторов является унитарной.
  • Собственные значения эрмитовой матрицы являются вещественными числами, поскольку (λ - λ)v = (A* - A)v = (A - A)v = 0 для ненулевого собственного вектора v.
  • Если матрица A вещественна, существует ортонормальный базис для R n, состоящий из собственных векторов матрицы A, в том и только в том случае, когда A симметрична.

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

Число обусловленности

Любую задачу вычислительной математики можно рассматривать как вычисление некоторой функции ƒ от некоторого аргумента x. Число обусловленности κ(ƒ, x) задачи — это отношение относительной ошибки результата вычисления к относительной ошибке параметра функции и зависит как от функции, так и от параметра. Число обусловленности описывает насколько возрастает ошибка во время вычислений. Десятичный логарифм этого числа говорит о количестве знаков, которые мы теряем по отношению к исходным данным. Число обусловленности относится к наилучшему сценарию, отражая нестабильность самой задачи, независимо от способа решения. Никакой алгоритм не может дать результат лучше, чем определённый числом обусловленности, разве что случайно. Однако плохо разработанный алгоритм может дать существенно более плохие результаты. Например, как будет упомянуто ниже, задача нахождения собственных значений нормальной матрицы всегда хорошо обусловлена, однако задача нахождения корней многочлена может быть очень плохо обусловлена[англ.]. Такие алгоритмы вычисления собственных значений, которые работают путём нахождения корней характеристического многочлена, могут оказаться плохо обусловленными, даже если сама задача хорошо обусловлена.

Для задачи решения системы линейных уравнений Av = b, где A является обратимой, число обусловленности κ(A-1, b) определяется выражением ||A||op||A-1||op, где || ||op — операторная норма, подчинённая обычной евклидовой норме на C n. Поскольку это число не зависит от b и является тем же самым как для A, так и для A-1, оно обычно называется числом обусловленности κ(A) матрицы A. Это значение κ(A) является также абсолютным значением отношения наибольшего собственного значения матрицы A к её наименьшему собственному значению. Если A является унитарной, то ||A||op = ||A-1||op = 1, так что κ(A) = 1. В общем случае для матриц часто сложно вычислить операторную норму. По этой причине обычно используют другие нормы матрицы для оценки числа обусловленности.

Для задачи вычисления собственных значений Бауэр и Файк доказали[англ.], что если λ является собственным значением диагонализируемой n × n матрицы A с матрицей собственных векторов V, то абсолютная ошибка вычисления λ ограничена произведением κ(V) и абсолютной ошибкой в A: [2]. Как следствие, число обусловленности для вычисления λ равно κ(λ, A) = κ(V) = ||V ||op ||V -1||op. Если матрица A нормальна, то V является унитарной и κ(λ, A) = 1. Таким образом, задача вычисления собственных значений нормальных матриц хорошо обусловлена.

Было показано, что число обусловленности задачи вычисления собственного подпространства нормальной матрицы A, соответствующего собственному значению λ, обратно пропорционально минимальному расстоянию между λ и другими, отличными от λ, собственными значениями матрицы A[3]. В частности, задача определения собственного подпространства для нормальных матриц хорошо обусловлена для изолированных собственных значений. Если собственные значения не изолированы, лучшее, на что мы можем рассчитывать, это определение подпространства всех собственных векторов близлежащих собственных значений.

Алгоритмы

Любой нормированный многочлен является характеристическим многочленом сопровождающей матрицы, поэтому алгоритм для вычисления собственных значений можно использовать для нахождения корней многочленов. Теорема Абеля — Руффини показывает, что любой такой алгоритм для размерности большей 4 должен либо быть бесконечным, либо вовлекать функции более сложные, чем элементарные арифметические операции или дробные степени. По этой причине алгоритмы, вычисляющие точно собственные значения за конечное число шагов, существуют только для специальных классов матриц. В общем случае алгоритмы являются итеративными, дающими на каждой итерации очередное приближение к решению.

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

Приведение обычно осуществляется сдвигом: A заменяется на A - μE для некоторой константы μ. Собственное значение, найденное для A - μE, должно быть добавлено к μ, чтобы получить собственное значение матрицы A. Например, в степенном методе μ = λ. Итерация степенного метода находит самое большое по абсолютной величине значение, так что даже если λ является приближением к собственному значению, итерация степенного метода вряд ли найдёт его во второй раз. И наоборот, методы, основанные на обратных итерациях находят наименьшее собственное значение, так что μ выбирается подальше от λ в надежде оказаться ближе к какому-нибудь другому собственному значению.

Приведение можно совершить путём сужения матрицы A к пространству столбцов матрицы A - λE. Поскольку A - λE вырождена, пространство столбцов имеет меньшую размерность. Алгоритм вычисления собственных значений можно тогда применить к этой суженой матрице. Процесс можно продолжать, пока не будут найдены все собственные значения.

Если алгоритм не даёт к собственные значения, общей практикой является применение алгоритма, основанного на обратной итерации, с приравниванием μ к ближайшей аппроксимации собственного значения. Это быстро приводит к собственному вектору ближайшего к μ собственного значения. Для небольших матриц альтернативой служит использование столбцового подпространства произведения A - λ́E для каждого из остальных собственных значений λ́.

Матрицы Хессенберга и трёхдиагональные матрицы

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

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

МетодПрименим к матрицамРезультатЦена без матрицы подобияЦена с матрицей подобияОписание
Преобразования Хаусхолдераобщего видаматрица Хессенберга2n33 + O(n2)[4]4n33 + O(n2)[4]Отражение каждого столбца относительно подпространства для обнуления нижних элементов столбца.
Повороты Гивенсаобщего видаматрица Хессенберга4n33 + O(n2)[4]Осуществляется плоское вращении для обнуления отдельных элементов. Вращения упорядочены так, что следующие вращения не затрагивают нулевые элементы.
Итерации Арнольдиобщего видаматрица ХессенбергаОсуществляется ортогонализация Грама ― Шмидта на подпространствах Крылова.
Алгоритм Ланцоша[англ.][5]эрмитоватрёхдиагональная матрицаИтерации Арнольди для эрмитовых матриц.

Итеративные алгоритмы

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

МетодПрименим к матрицамРезультатЦена за один шагСходимостьОписание
Степенной методобщего виданаибольшее собственное значение и соответствующий векторO(n2)ЛинейнаяМногократное умножение матрицы на произвольно выбранный начальный вектор с последующей нормализацией.
Обратный степенной методобщего видаближайшее к μ собственное значение и соответствующий векторЛинейнаяСтепенная итерация с матрицей (A - μE )-1
Метод итераций Рэлеяобщего видаближайшее к μ собственное значение и соответствующий векторКубическаяСтепенная итерация с матрицей (A - μiE )-1, где μi является отношением Рэлея от предыдущей итерации.
Предобусловленная обратная итерация[6] или LOBPCG[англ.]положительно определённая вещественная симметричнаяближайшее к μ собственное значение и соответствующий векторОбратная итерация с предобуславливанием (приближённое обращение матрицы A).
Метод деления пополам[7]вещественная симметричная трёхдиагональнаялюбое собственное значениеЛинейнаяИспользует метод бисекции для поиска корней характеристического многочлена и свойства последовательности Штурма.
Итерации Лагерравещественная симметричная трёхдиагональнаялюбое собственное значениеКубическая[8]Использует метод Лагерра[англ.] вычисления корней характеристического многочлена и свойства последовательности Штурма.
QR-алгоритм[9]хессенбергавсе собственные значенияO(n2)КубическаяРазложение A = QR, где Q ортогональная, R ― треугольная, затем используется итерация к RQ.
все собственные значения6n3 + O(n2)
Метод Якобивещественная симметричнаявсе собственные значенияO(n3)квадратичнаяИспользует преобразования подобия с матрицами вращения Гивенса для уменьшения нормы внедиагональных элементов, давая в пределе "почти диагональную матрицу".
Разделяй и властвуй[англ.]эрмитова трёхдиагональнаявсе собственные значенияO(n2)Матрица разбивается на подматрицы, которые диагонализируются, затем воссоединяются.
все собственные значения(43)n3 + O(n2)
Метод гомотопиивещественная симметричная трёхдиагональнаявсе собственные значенияO(n2)[10]Строится вычисляемая гомотопия.
Метод спектральной свёртки[англ.]вещественная симметричнаяближайшее к μ собственное значение и соответствующий собственный векторПредобусловленная обратная итерация, применённая к (A - μE )2
Алгоритм MRRR[11]вещественная симметричная трёхдиагональнаянекоторые или все собственные значения и соответствующие собственные вектораO(n2)«Multiple Relatively Robust Representations» — Осуществляется обратная итерация с разложением LDLT смещённой матрицы.

Прямое вычисление

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

Треугольные матрицы

Поскольку определитель треугольной матрицы является произведением её диагональных элементов, то для треугольной матрицы T . Таким образом, собственные значения T ― это её диагональные элементы.

Разложимые полиномиальные уравнения

Если p ― любой многочлен и p(A) = 0, то собственные значения матрицы A удовлетворяют тому же уравнению. Если удаётся разложить многочлен p на множители, то собственные значения A находятся среди его корней.

Например, проектор ― это квадратная матрица P, удовлетворяющая уравнению P2 = P. Корнями соответствующего скалярного полиномиального уравнения λ2 = λ будут 0 и 1. Таким образом, проектор имеет 0 и 1 в качестве собственных значений. Кратность собственного значения 0 ― это дефект P, в то время как кратность 1 ― это ранг P.

Другой пример ― матрица A, удовлетворяющая уравнению A2 = α2E для некоторого скаляра α. Собственные значения должны быть равны ±α. Операторы проектирования:

удовлетворяют равенствам:

и

Пространства столбцов матриц P+ и P- являются подпространствами собственных векторов матрицы A, соответствующими и , соответственно.

Матрицы 2×2

Для размерностей от 2 до 4 существуют использующие радикалы формулы, которые можно использовать для вычисления собственных значений. Для матриц 2×2 и 3×3 это обычная практика, но для матриц 4×4 растущая сложность формул корней[англ.] делает этот подход менее привлекательным.

Для матриц 2×2

характеристический многочлен равен

Собственные значения можно найти как корни квадратного уравнения:

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

с подобными формулами для c и d. Отсюда следует, что вычисление хорошо обусловлено, если собственные значения изолированы.

Собственные векторы можно получить, используя теорему Гамильтона — Кэли. Если λ1, λ2 — собственные значения, то (A - λ1E )(A - λ2E ) = (A - λ2E )(A - λ1E ) = 0, так что столбцы (A - λ2E ) обнуляются матрицей (A - λ1E ) и наоборот. Предполагая, что ни одна из матриц не равна нулю, столбцы каждой матрицы должны содержать собственные векторы для другого собственного значения (если же матрица нулевая, то A является произведением единичной матрицы на константу и любой ненулевой вектор является собственным).

Например, пусть:

тогда tr(A) = 4 - 3 = 1 и det(A) = 4(-3) - 3(-2) = -6, так что характеристическое уравнение равно

а собственные значения равны 3 и −2. Теперь:

,

В обеих матрицах столбцы отличаются скалярными коэффициентами, так что можно выбирать любой столбец. Так, (1, -2) можно использовать в качестве собственного вектора, соответствующего собственному значению −2, а (3, -1) в качестве собственного вектора для собственного числа 3, что легко можно проверить умножением на матрицу A.

Матрицы 3×3

Если A является матрицей 3×3, то характеристическим уравнением будет:

Это уравнение можно решить с помощью методов Кардано или Лагранжа, но аффинное преобразование матрицы A существенно упрощает выражение и ведёт прямо к тригонометрическому решению. Если A = pB + qE, то A и B имеют одни и те же собственные векторы и β является собственным значением матрицы B тогда и только тогда, когда α = + q является собственным значением матрицы A. Если положить и , получим:

Подстановка β = 2cos θ и некоторое упрощение с использованием тождества cos 3θ = 4cos3 θ - 3cos θ сводит уравнение к cos 3θ = det(B) / 2. Таким образом,

Если det(B) является комплексным числом или больше 2 по абсолютной величине, арккосинус для всех трёх величин k следует брать из одной и той же ветви. Проблема не возникает, если A вещественна и симметрична, приводя к простому алгоритму:[12]

% Given a real symmetric 3x3 matrix A, compute the eigenvalues

p1 = A(1,2)^2 + A(1,3)^2 + A(2,3)^2
if (p1 == 0) 
   % A is diagonal.
   eig1 = A(1,1)
   eig2 = A(2,2)
   eig3 = A(3,3)
else
   q = trace(A)/3
   p2 = (A(1,1) - q)^2 + (A(2,2) - q)^2 + (A(3,3) - q)^2 + 2 * p1
   p = sqrt(p2 / 6)
   B = (1 / p) * (A - q * E)       % E is the identity matrix
   r = det(B) / 2

   % In exact arithmetic for a symmetric matrix  -1 <= r <= 1
   % but computation error can leave it slightly outside this range.
   if (r <= -1) 
      phi = pi / 3
   elseif (r >= 1)
      phi = 0
   else
      phi = acos(r) / 3
   end

   % the eigenvalues satisfy eig3 <= eig2 <= eig1
   eig1 = q + 2 * p * cos(phi)
   eig3 = q + 2 * p * cos(phi + (2*pi/3))
   eig2 = 3 * q - eig1 - eig3     % since trace(A) = eig1 + eig2 + eig3
end

Снова, собственные векторы A можно получить путём использования теоремы Гамильтона — Кэли. Если α1, α2, α3 — различные собственные значения матрицы A, то (A - α1E)(A - α2E)(A - α3E) = 0. Тогда столбцы произведения любых двух из этих матриц содержат собственные векторы третьего собственного значения. Однако если a3 = a1, то (A - α1E)2(A - α2E) = 0 и (A - α2E)(A - α1E)2 = 0. Таким образом, корневое собственное подпространство α1 натянуто на столбцы A - α2E, в то время как обычное собственное подпространство натянуто на столбцы (A - α1E)(A - α2E). Обычное собственное подпространство α2 натянуто на столбцы (A - α1E)2.

Например, пусть

Характеристическое уравнение равно

с собственными значениями 1 (кратности 2) и −1. Вычисляем:

,

а затем

.

Тогда (-4, -4, 4) является собственным вектором для −1, а (4, 2, -2) является собственным вектором для 1. Векторы (2, 3, -1) и (6, 5, -3) являются корневыми векторами, соответствующими значению 1, любой из которых можно скомбинировать с (-4, -4, 4) и (4, 2, -2), образуя базис корневых векторов матрицы A.

См. также

Комментарии

  1. Термин «простой» здесь употребляется лишь для подчёркивания различия между «собственным вектором» и «корневым вектором».
  2. где постоянный член умножается на единичную матрицу E.
  3. Такой порядок в скалярном произведении (с сопряжённым элементом слева) предпочитают физики. Алгебраисты часто предпочитают запись w • v = v* w.

Примечания

  1. Sheldon Axler. Down with Determinants! // American Mathematical Monthly. — 1995. — Вып. 102. — С. 139—154.
  2. F. L. Bauer, C. T. Fike. Norms and exclusion theorems // Numer. Math. — 1960. — Вып. 2. — С. 137—141.
  3. S. C. Eisenstat, I. C. F. Ipsen. Relative Perturbation Results for Eigenvalues and Eigenvectors of Diagonalisable Matrices // BIT. — 1998. — Т. 38, вып. 3. — С. 502—9. — doi:10.1007/bf02510256.
  4. 1 2 3 William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery. Numerical Recipes in C. — 2nd. — Cambridge University Press, 1992. — ISBN 0-521-43108-5.
  5. Х. Д. Икрамов. Разреженные матрицы. — 1982. — Т. 20. — (Итоги науки и техники. Сер. Мат. анал).
  6. K. Neymeyr. A geometric theory for preconditioned inverse iteration IV: On the fastest convergence cases. // Linear Algebra Appl. — 2006. — Т. 415, вып. 1. — С. 114—139. — doi:10.1016/j.laa.2005.06.022.
  7. Уилкинсон, 1970, стр. 274, Метод деления пополам
  8. T. Y Li, Zhonggang Zeng. Laguerre's Iteration In Solving The Symmetric Tridiagonal Eigenproblem - Revisited // SIAM Journal on Scientific Computing. — 1992.
  9. Парлетт, 1983, стр. 156, глава 8, Алгоритмы QR и QL
  10. Moody T. Chu. A Note on the Homotopy Method for Linear Algebraic Eigenvalue Problems // Linear Algebra Appl. — 1988. — Т. 105. — С. 225—236. — doi:10.1016/0024-3795(88)90015-8.
  11. Inderjit S. Dhillon, Beresford N. Parlett, Christof Vömel. The Design and Implementation of the MRRR Algorithm // ACM Transactions on Mathematical Software. — 2006. — Т. 32, вып. 4. — С. 533—560. — doi:10.1145/1186785.1186788.
  12. Oliver K. Smith. Eigenvalues of a symmetric 3 × 3 matrix // Communications of the ACM. — Т. 4, вып. 4. — С. 168. — doi:10.1145/355578.366316.

Литература

  • Дж. Голуб, Ч. Ван Лоун. Матричные вычисления. — Москва: «Мир», 1999. — ISBN 5-03-002406-9.
  • Б. Парлетт. Симметричная проблема собственных значений. — Москва: «Мир», 1983.
  • Дж. Х. Уилкинсон. Алгебраическая проблема собственных значений. — Москва: «Наука» Главная редакция физико-математической литературы, 1970.

Дополнительная литература

  • Adam W. Bojanczyk, Adam Lutoborski. Computation of the Euler angles of a symmetric 3X3 matrix // SIAM Journal on Matrix Analysis and Applications. — Jan 1991. — Т. 12, вып. 1. — С. 41—48. — doi:10.1137/0612005.