Matlab Zero Tolerance в ранговой функции - PullRequest
0 голосов
/ 15 сентября 2018

Мне интересно, есть ли техническая или теоретическая причина, почему Matlab для функции rank считает нулевым значение max(size(A))*eps(norm(A)).Можете ли вы предоставить некоторую интуицию?

Спасибо!

1 Ответ

0 голосов
/ 16 сентября 2018

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

norm(A) - это порядок величин элементов матрицы.

Таким образом,

eps(norm(A)) - это точность, которую обычно имеет представление элементов матрицы с плавающей запятой.

Теперь рассмотрим добавление N чисел, которые теоретически должны быть равны нулю, но каждое из них имеетошибка eps для него ... Я думаю, что мы ожидаем ошибку порядка sqrt(N) * eps для результата.

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

Что я не делаюзнаете, действительно ли алгоритм, который использует Matlab, имеет сложность N^2?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...