2015-04-03 5 views
1

Мне нужно рассчитать отношение самого большого и наименьшего собственного значения матрицы, которое, как я знаю, называется «номер условия». Я нашел numpy.linalg.cond, который вычисляет номер условия матрицы, но мне было интересно, действительно ли это соответствует отношению между самыми большими и наименьшими собственными значениями. Может ли кто-нибудь дать мне указания на это?Действительно ли numpy.linalg.cond возвращает отношение самого большого и самого маленького собственного значения?

ответ

2

Согласно документации np.linalg.cond определяется как норма массива, умноженная на обратную норму массива, которая не является тем, что вы ищете. Но то, что вы хотите, легко сделать:

import numpy as np 

    Eigs = np.linalg.eigvals(yourarrayhere) 
    cond = np.max(Eigs)/np.min(Eigs) 
+1

Номер условия - отношение большего и наименьшего * особых значений *, а не отношение собственных значений. Для общих матриц это не одно и то же. Однако для так называемых [нормальных матриц] (https://en.wikipedia.org/wiki/Normal_matrix) единственными значениями являются абсолютные значения собственных значений. –

+0

Я думаю, что у некоторых людей есть другое определение номера условия. Например, в Нелинейном программировании Берцекасом, вторым изданием и третьей печатью он конкретно называет отношение наибольшего к наименьшему собственному значению номера условия на стр. 67. Если число условий велико, то он вызывает несоответствие матрицы – jfish003

+0

Стандартная линейная определение алгебры - это отношение 2-норм, как указано выше, т. е. отношение сингулярных значений. Это равно отношению собственных значений только для (положительно определенных) нормальных матриц. То, что вы пишете выше, неверно, поскольку numpy.linalg.cond использует стандартное определение. –

Смежные вопросы