Естественные науки

Вы встречали такие дифференц. краевые задачи или кубические сплаины, при численном решении которых получалась ОГРОМНАЯ

трёхдиагональная матрица (СЛАУ), которая требует огромные временных ресурсов (для не суперкомпьютеров)? Что это была за задача?
У меня было малость хуже! Вся геодезия или еще хуже фотограмметрия сводится в итоге к огромным СЛАУ, в которых почти все нули, в среднем где-то 4-6 ненулевых элемента на строку, но они все разбросаны как попало, регулярные методы типа прогонки не работают.

Для аэрофотосъемки реально решались СЛАУ по 36 тысяч уравнений. Естественно, разреженные, с кучей ухищрений, замедляющих заполнение.

Тут еще есть беда, о которой не знают новички: в таких системах ошибка копится так, что легко потерять все значащие цифры. Но есть методы!

Для геодезии я знаю способ, эксплуатирующий планарность сети - далекие связи встречаются реже, чем близкие.

Кстати, можно для матриц с несколькими диагоналями попробовать рекурсивные методы типа Зейделя. Он не должен заполнять матрицу и не так страдает накоплением ошибок. Естественно, хранить только диагонали, а не нули.
Andrey Malcev
Andrey Malcev
66 904
Лучший ответ
Лилия Ильясова Ого, вот это вы монстр!!! :)

А именно огромные трехдиагональные? Или не слишком большие, но в большом количестве?
Ищите "разреженные матрицы". Для них придуманы (и давно) весьма эффективные алгоритмы и структуры хранения. Голой теорией, то есть матрицами типа "двумерный массив" толку не измыслите. Есть книга (не в интернете, а в библиотеке) Тьюарсон Р. "Разрежённые матрицы" - классика этой области.
Лёдик *****
Лёдик *****
77 120
Лилия Ильясова Меня интересуют конкретно трехдиагональные, которые попадались в реальных задачах. Не методы их решения, а они сами
Участвовал в подобном проекте - расчет прочности сосудов высокого давления. Моя задача была инженерной - перевести программный комплекс с фортрана на С для использования арифметики высокой точности, чтобы показать устойчивость используемого метода и его реализации.

Задача сводилась к СЛАУ больших размерностей (до нескольких тысяч, если я правильно помню). Матрицы были разреженные, поэтому использовался специальный алгоритм, который учитывал эту особенность для экономии ресурсов - памяти и производительности.

Дело было уже давно, лет 15-20 назад. На "слабом" по тем временам компьютере один прогон мог занимать от нескольких часов до суток компьютерного времени. После оптимизации алгоритма и использования новых на то время процессоров самый большой прогон занимал несколько часов. Для одной задачи нужно было выполнить десятки прогонов с разной точностью вычислений и с разной размерностью.
Лилия Ильясова А что, в Фортране нет (или тогда не было) двойной точности? Или нужно что-то ещё точнее?

Разреженные матрицы... То есть, видимо, не трёхдиагональные? А из трехдиагональных не припомните случаем?

Похожие вопросы