Re[4]: СЛАУ
От: klovetski Россия  
Дата: 03.06.03 13:53
Оценка: 13 (2)
Здравствуйте, всем

A>Еще раз на счет "стоит подумать". Я не призываю сразу отказаться от того, что сделано. Я просто прошу обратить особое внимание на возможную неустойчивость алгоритма.


А посему следует обратить внимание на методы, специально разработанные для
решения неустойчивых задач. Основоположник — А.Н. Тихонов.
Поищите в Googl'е: решение некорретных задач линейной алгебры.
На разных сайтах МГУ много об этом говорится, есть и алгоритмы.
ищите: Тихонов, Гончарский, Ягола, Васильев и т.д.

Константин
Re[3]: СЛАУ
От: Apapa Россия  
Дата: 03.06.03 11:54
Оценка: 5 (1)
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>Т.е. стоит подумать о получении других исходных данных?


Т.е. это значит ровно то, что значит...
А вдруг у тебя исходные данные так удачно варьируют, что их случайное поведение в итоге лишь слегка изменяет обратную матрицу.
Особенно отчетливо можно наблюдать изменения при определителе, близком к нулю, или при элементах, близких к нулю.
Да что там говорить! Возьмем матрицу 1х1. Если ее единственный элемент, на самом деле равный нулю, искажается и предстает как некоторое число х, близкое к нулю. Тогда обратная матрица 1/х будет очень зависить от искажений.
У обратной матрицы 2х2, например, каждый элемент — это элемент исходной матрицы, деленный на определитель исходной матрицы, который, если он близок к нулю, сильно влияет на матрицу. Если еще и сам элемент почти что ноль, то там вообще ничего не разберешь.

Еще раз на счет "стоит подумать". Я не призываю сразу отказаться от того, что сделано. Я просто прошу обратить особое внимание на возможную неустойчивость алгоритма.

P.S. Если в системе очень много нулей, то насколько я помню, была развита целая теория разряженных матриц и соответствующих СЛУ.


Здесь могла бы быть Ваша реклама!
СЛАУ
От: Lorenzo_LAMAS  
Дата: 03.06.03 08:42
Оценка:
Я так понял, здесь все люди в вопросах математики грамотные. А потому, подскажите, пожалуйста, как быть.

0. Есть переопределенная система (я бы сказал, зверски переопределенная — число уравнений на несколько порядков больше числа неизвестных). Здесь мне уже как-то посоветовали использовать СВД. Нашел где-то в старой книге с программами на фортране что-то похожее — вроде работает.
1. Исскуственно генерируя переопределенную систему (заведомо совместную) для проверки своей программы, я получаю идеальное решение.
2. Реальные данные, с которыми приходится работать, гораздо хуже — очень много случайных данных (что-то там приборы намеряли неправильно). Потому получаемое решение мягко говоря странное.

Итак вопрос. Посоветуйте, как предварительно обработать исходные данные (и возможно ли это вообще сделать).

Немного деталей.

Есть, допустим, 40 неизвестных.
Есть 100000 наборов коэффициентов к ним (т.е. система имеет размерность 40х100000).
Коэффициенты должны быть положительными (т.е. уже сразу можно отбросить отрицательные данные, заменив их нулями). Свободные члены во всех уравнениях — одно и то же положительное число. По-идее, из каждого набора действительным (валидным, а не вещественным числом является только одно максимальное (возможно, несколько соседних с ним), остальные — случайные числа.

Как бы это все грамотно посчитать? Можно ли имея такие плохие данные что-то вообще насчитать?
Of course, the code must be complete enough to compile and link.
Re: СЛАУ
От: Apapa Россия  
Дата: 03.06.03 11:30
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>Как бы это все грамотно посчитать? Можно ли имея такие плохие данные что-то вообще насчитать?


Не уверен! Дело в том, что обратная матрица, хоть и непрерывно, но весьма неустойчиво зависит от исходной. Другими словами, мальйшее изменение одного элемента в исходной матрице может очень серьезно повлиять на результат обратной матрицы! Что уж тут говорить про псевдообратные матрицы и про нахождение решения в куче почти совместных уравнений!


Здесь могла бы быть Ваша реклама!
Re[2]: СЛАУ
От: Lorenzo_LAMAS  
Дата: 03.06.03 11:33
Оценка:
Т.е. стоит подумать о получении других исходных данных?
Of course, the code must be complete enough to compile and link.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.