Search
Write a publication
Pull to refresh
6
0
Send message
Число обусловленности здесь не особо подходит, например, для вырожденой матрицы число обусловленности (спектральное) есть бесконечность, и что делать дальше, если собственные значения нужно найти (одно из этих значений будет 0, а остальные)… Но здесь не об этом…
В MatLab есть тестовая матрица gallery(5), следующего вида:
А = [[-9, 11, -21, 63, -252], [70, -69, 141, -421, 1684], [-575, 575, -1149, 3451, -13801], [3891, -3891, 7782, -23345, 93365], [1024, -1024, 2048, -6144, 24572]]. Нужно найти ее собственные значения (несимвольно);
Есть даже ее совсем неправильный спетральный портрет, который подталкивает поверить в неправильно вычисленные собственные значения.
Вот и неправильный результат: eigs (A) = ( -0.03697710+0.02749668j, -0.03697710-0.02749668j, 0.01470225+0.04265918j, 0.01470225-0.04265918j, 0.04454971+0.j ) — (вычислено при помощи numpy.linalg.eig); MatLab раньше (R2008a, например) давал также неправильный результат, сейчас — не знаю, т.к. не пользуюсь MatLab давно.
Какой же результат правильный?! — 0.0 (т.е. 5-ти кратное нулевое соб. значение)

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

Не знаю, почему вы считаете, что разные разрядные сетки что-то доказывают...


Конечно не доказывают, но могут придавать уверенности, особенно в сложных вычислениях. (реально сталкивался с тем, что люди выполняют «такую проверку», осуществляя расчеты в академических учреждениях...)

Если бы наша задача состояла в вычислении собственных чисел какой-либо несимметричной матрицы, процедура вычислений не была бы столь прозрачна, и было бы очень замачиво «проверить» результат, вычислив его, например, на удвоенной и расширенной удвоенной точностях. И вот, мы проделали вычисления, и результаты «почти» совпали; вдобавок еще провели вычисления на учетвернной точности, получили «такие же» значения… так недолго и поверить, что результат «правильный» (понимаю, что вычисления на различных разрядных сетках — не основание для проверки результатов вычислений собственных значений несим. матриц, для этого есть другие подходы — например, построение их спектральных портретов — псевдоспектров).

Пример показывает, что «проверка» на различных разрядных сетках ничего не значит, т.к. почти одинаковые неправильные значения могут получаться и при увеличении точности.

Про наличие еще «одного скачка» — применительно к примеру, согласен, что фраза не учитывает, что в этом простом выражении можно легко оценить необходимое число разрядов; а если бы процедура вычислений была бы достаточно сложна и получение оценки требуемого числа разрядов было бы проблематично…

Благодарю всех за комментарии, но, к сожалению, практически все здесь увидели пример, лишь как обычную иллюстрацию влияния погрешностей округления. Смысл примера — в другом. Мы получаем практически одинаковые неправильные результаты вычислений последовательно повышая точность представления чисел, и это интересно и показательно, т.к. получение мало отличающихся результатов на различных разрядных сетках является «доказательством» его правильности.
Я не работал с WA, но он может и «схитрить» и все символьно посчитать, даже, пожалуй, подменив 333.75=333+75/100.
Прежде всего, f(а, b) — отображение, заданное в виде арифметического выражения, относительно простого, да. Но оно очень чувствительно к изменениям входящих параметров; это — фактически — явление неустойчивости.
Не совсем правильно считать данный пример ерундой; Для иллюстрации влияния погрешностей округления, действительно, можно привести пример гораздо проще, но смысл данного примера в другом: допустим мы решили посчитать данное выражение с одинарной точностью, посчитали; мы понимаем, что здесь степени и возможны влияния погрешностей округления. Для проверки результата мы можем пересчитать все это в удвоенной точности, и получим такой же результат! Вычисляя выражение с учетверенной точностью (все в рамках IEEE 754), снова получаем тот же результат. Так легко и поверить, что он правильный, но он-то оказывается не верным!

Вывод из примера, что получение мало отличающихся результатов при увеличении точности не гарантирует, что результат правильный.

Information

Rating
Does not participate
Registered
Activity