Обновить
23
0
Максим Байтель@StarPilgrim

Разработчик на C++ и других языках

Отправить сообщение

а можно написать алгоритм)

о, отлично - и этот ответ в итоге. общими усилями, нашли. Спасибо!

видимо, баг в реализации pedantic-mode у меня в созании:)

офигенный холивар порадил нечайно я. Никогда не прикапывался к тому входит ноль или нет в натуральные числа - всегда следовал нотациям и аксиоматике источника.

а вот представьте, что у вас уже 64-битные переменные в аргументах - какие числа вам использовать тогда?

Очевидно, что речь идёт о среднем арифметическом, а не о среднем геометрическом или о среднем гармоническом

я вот не совсем понял, что конкретно вы имеете в виду, но я писал о чём-то схожем до этого https://habr.com/ru/articles/833470/

Их две: сложение (это 1) и деление (это два). Правильно посчитал до двух ?

тут я бы сам своё условие нарушил: раз сам размер не влезает в 32 бита, пришлось бы использовать uint64_t

так, такого и не заявлено

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

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

как список собранный вместе, вроде, не видел, спасибо

На самом деле вопрос в статье уже раскрыт, но давайте я ещё раз скажу:

1) если корень кратный, но ему соответсвует только 1 собственный вектор - алгоритм нормально сойдётся вот пример из статьи матрица \begin{pmatrix} 1 & 1\\ 0 & 1 \end{pmatrix}с собственным уравнением (1-x)^2 = 0, т.е. собственное число имеет кратность два, но ему соответсвует только один собственный вектор

2) если корень имеет кратность больше одного и ему соответсвует хотя бы 2 собственных вектора - алгоритм не сойдётся - пример единичная матрица \begin{pmatrix} 1 & 0\\ 0 & 1 \end{pmatrix}, также из статьи. Да пример очень простой, но не надо заблуждаться: из рассмотрения теории там не будет схождения и в более общем случае

1) Не знаю, что и куда вы скопировали: на всякий случай я перепроверил и опять получил верный результат

2)Нужно из матрицы A "вычитать" все предшествующие собственные значения, то есть для 3-го надо отнять и первое и второе

3)Не нужно быть "профессиональным математиком", что б разобраться с этим методом, нужно только найти в себе концентрацию и усидчивость

4) Если вы внимательно всё прочли - там написано, что для нахождения всех собственных значений - это не лучший метод

Кстати, я же не изобретатель этого алгоритма - действительно думаете, что вот в стольких местах он упомянут - и не работает?

в чём опечатка? вековое уравнение - от слова "век"

Могу пока что посоветовать посмотреть вот это https://en.wikipedia.org/wiki/LOBPCG

Шансов, что в матрице со случайными элементами получается одинаковые вещественные собственные числа - очень мало

Хороший совет - возможно, добавлю такой раздел, если буду писать продолжение

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Десктоп разработчик, Бэкенд разработчик