Как умные люди работают с о-о-о-чень большими "плохими" матрицами?

natali22061979

Есть матрица вот такого страшненького вида:

Размера 442x1000. Цвет соответствует величине числа в ячейке матрицы (от 0 до 1)
Необходимо решить казалось бы нехитрую задачу:
F*p = u;
Где F - указанная выше страхолюдная матрица, p - искомый вектор, u - известный вектор (его значения также принадлежат (0,1.
Но, учитывая число переменных и уравнений и, главным образом тот прискорбный факт, что значания в матрице F лежат в интервале [0,1] и имеют тенденцию группироваться около 0, стандартные алгоритмы сходят с ума (я бы на их месте сделал тоже самое). Я использовал средства предоставляемые такой штукой как R (а, оно в свою очередь юзает LINPACK и LAPACK). Так как я не великий спец в таких делах, возможно, я чо-то туплю и делаю не так.
Если быть более конкретным, то в R есть процедура для решения систем линейных уравнений. В ней есть возможность указать требуемую точность. Экспериментальным путем я подобрал что-то правдоподобное, но ответ какой-то все равно фиговый получается. Если подставить его в уравнение, вектор u получается очень паршивый. Местами он похож на правду, но местами вообще бред собачий.
Граждане, если учесть, что это только игрушечная матрица для экспериментов, а на самом деле они должны быть в несколько раз больше, то я близок к суициду. Как такие проблемы решаются по-человечески?
з.ы. Молю не давать советов в стиле "пиши алгоритм сам на ассемблере". Уверен, человечество давно и гораздо лучше чем смог бы сделать я, решило это проблему. Чего велосипед изобретать?

gera2707

Почитай здесь: http://www.nrbook.com/a/bookfpdf.php
Раздел 2. Если поможет, могу прислать pdf-ки, открывающиеся без плагина.
(Плагин-защита от копирования Ctrl-C Ctrl-V.)

natali22061979

Спасибо, скачал, почитайу. Хотя, оптимизма не внушает.

seregaohota

То есть матрица не квадратная 442x1000 и ненулевые элементы F ближе к концам строк.
Тогда положи первые 1000-442 координаты p равными нулю. Далеьше решай задачу с квадратной матрицей. Что-то получилось? Или там ранг меньше 442?

natali22061979

Предполагается что ранг = 442. Некоторые процедуры, вычисляющие оный ранг в это не верят, и говорят, что он меньше. Но если им промыть мозг и увеличить точность, что получается как и надо - 442.
>Тогда положи первые 1000-442 координаты p равными нулю
Я попробую

natali22061979

Так, погодите, я вас всех немного обманул.
На самом деле картинку надо себе представлять поставленной на попа. То есть 1000 - это число строк, 442 - число столбцов. Соответственно, длина вектора p должна быть 442. А длина вектора u равна 1000.

seregaohota

Тогда при произвольных u задача не решается в принципе какая бы хорошая матрица F не была, т.к. образ Fp при всевозможных p \in R^{442} даст тебе 442-мерное (ну или какой там у неё ранг) подпространство в 1000-мерном пространстве u.
Соответственно Fp для хороших алгоритмов должно дать проекцию u на это подпространство и проекция вовсе не обязана с u совпадать. Какой-нибудь метод наименьших квадратов минимизирующий невязку.
А то я думал может некорректная задача какая и число обусловленности матрицы левое. Есть всякие методы регуляризации по-идее.
Оставить комментарий
Имя или ник:
Комментарий: