Существуют ли какие-либо квадратичные арифметические разреженные матрицы?


10

Я работаю над некой обусловленной большой разреженной линейной системой уравнений. Я хочу использовать двойную арифметику или квадро-двойную арифметику для их решения. Я знаю, что существует пакет под названием MPACK, разработанный Накатой, Махо, который может выполнять числовые линейные алгебраические вычисления в четырехугольной арифметике. Тем не менее, он предназначен для плотной матрицы, а не разреженной матрицы. Знаете ли вы, есть ли какой-нибудь квадратичный арифметический набор разреженных матриц?


С какими матрицами вы работаете? Это симметрично, эрмитово, положительно определенно? Вы хотите сделать разреженный LU или использовать итерационные методы?
Виктор Лю

Ответы:


3

Начиная с версии 3.2 , PETSc поддерживает разреженные вычисления с четверной точностью на gcc / gfortran 4.6 и новее.

Вам понадобятся BLAS и LAPACK с четверной точностью, которые PETSc может предоставить вам (вместе с поддержкой четырех) с помощью следующей (частичной) команды configure:

./configure --with-precision=__float128 --download-f2cblaslapack

Увидеть FAQ для получения дополнительной информации.

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


1
Это четверная точность (128-битные реалы), а не четверная (256-битные реалы). Тем не менее, четверной точности, как правило, достаточно, чтобы понять проблемы стабильности, возникающие при двойной точности, и обычно вы хотите масштабировать систему и дискретизировать ее так, чтобы двойной точности было достаточно для производства.
Джед Браун

2

Плохо обусловленные системы лучше решаются путем регуляризации, чем путем увеличения численной точности. Ищите «неправильную регуляризацию» для кровавых подробностей.


2

Я мог бы попробовать библиотеку Трилино. Они имеют шаблонные библиотеки разреженных матриц под Tpetra (которая должна заменить Epetra, их оригинальную библиотеку разреженных матриц). Вы можете создавать шаблоны double, complex, quad и т. Д., И, возможно, они имеют самый большой выбор решателей (как прямых, так и итеративных) рядом с PETSc.

Редактировать: после прочтения комментариев непосредственная полезность Tpetra кажется немного сомнительной с точностью до четверки ...


К сожалению, большинство решателей еще не работают с Tpetra :-(
Вольфганг Бангерт

Это прискорбно. Я надеялся, но не был уверен в том, насколько далеко зашло развитие Tpetra (отсюда и «предполагается заменить Epetra»: P). Я думал, что, по крайней мере, библиотека Белоса (т.е. решатели Trilinos, не основанные на обертках вокруг сторонних кодов) поддерживает Tpetra?
Джесси Чан

Я думаю, что есть Belos2. Несомненно, проект Trilinos отдает свои ресурсы Tpetra, и это будет стандартным пакетом в будущем. Я думаю, что они еще не совсем там, хотя.
Вольфганг Бангерт

Я даже не подозреваю, что меня __float128поддерживает Tpetra, не говоря уже о четырехместном. Tpetra не является автономной и не все заголовки, и, даже если это было так, такие вещи, как std::complexработать только с floatи double.
Джед Браун

1

Набор инструментальных средств Multiprecision для MATLAB поддерживает разреженные матрицы и специально оптимизирован для вычислений с четверной точностью.

Вот временные детали для разреженных решателей с четверной точностью: Прямые решатели для разреженных матриц

(Я автор набора инструментов).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.