Решение для Линейной алгебры повышения для y=Ax

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

можно также использовать аварийное прекращение работы () метод на объекте запроса, но, в то время как это заставит клиент прекращать прислушиваться к событию, это может , забастовка>, вероятно, не будет мешать серверу обработать его.

9
задан Eric Wilson 4 August 2009 в 02:06
поделиться

6 ответов

Линейные решатели обычно являются частью библиотеки LAPACK, которая является расширением более высокого уровня библиотеки BLAS. Если вы используете Linux, в Intel MKL есть несколько хороших решателей, оптимизированных как для плотных, так и для разреженных матриц. Если вы используете Windows, у MKL есть бесплатная пробная версия на один месяц ... и, честно говоря, я не пробовал ни одну из других. Я знаю, что в пакете Atlas есть бесплатная реализация LAPACK, но я не уверен, насколько сложно запустить его в Windows.

В любом случае, поищите библиотеку LAPACK, которая работает в вашей системе.

5
ответ дан 4 December 2019 в 06:35
поделиться

Читая документацию по boost, не похоже, что решение по x реализовано. Решение по y - это всего лишь вопрос произведения матрицы на вектор, который, кажется, реализован в ublas.

Следует иметь в виду, что blas реализуют только «простые» операции, такие как сложение, умножение и т. Д. Вектора и матрицы. типы. Все, что более продвинуто (решение линейных задач, например «решить в xy = A x», собственные векторы и т. Д.), Является частью LAPACK, который построен на основе BLAS. Я не знаю, что дает толчок в этом отношении.

3
ответ дан 4 December 2019 в 06:35
поделиться

Взгляните на JAMA / TNT . Я использовал его только для не разреженных матриц (вам, вероятно, нужны факторизации QR или LU, оба из которых имеют служебные методы решателя), но, по-видимому, он имеет некоторые возможности для разреженных матриц.

3
ответ дан 4 December 2019 в 06:35
поделиться

Настройка пакета линейной алгебры Boost сосредоточена на "плотных матрицах". Насколько мне известно, в пакете Boost нет решателя линейных систем. Как насчет использования исходного кода в «Числовом рецепте на языке C ( http://www.nr.com/oldverswitcher.html )»?

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

3
ответ дан 4 December 2019 в 06:35
поделиться

Один из лучших решателей для Ax = b, когда A разреженный, - это UMFPACK

UMFPACK Тима Дэвиса, вычисляющий разреженное LU-разложение A. Это алгоритм, который используется за кулисами в Matlab, когда вы вводите x = A \ b (а A является разреженным и квадрат). UMFPACK является бесплатным программным обеспечением (GPL)

Также обратите внимание, если y = Ax и x известен, а y нет, вы вычисляете y, выполняя умножение разреженных матриц векторов, а не путем решения линейной системы .

4
ответ дан 4 December 2019 в 06:35
поделиться

да, вы можете решать линейные уравнения с помощью библиотеки ublas от boost. Вот один короткий способ использования LU-факторизации и обратной подстановки для получения обратного:

using namespace boost::ublas;

Ainv = identity_matrix<float>(A.size1());
permutation_matrix<size_t> pm(A.size1());
lu_factorize(A,pm)
lu_substitute(A, pm, Ainv);

Итак, чтобы решить линейную систему Ax = y, вы должны решить уравнение trans (A) Ax = trans (A) y, взяв обратное (trans (A) A) ^ - 1, чтобы получить x: x = (trans (A) A) ^ - 1Ay.

18
ответ дан 4 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

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