Вы не можете вспомнить запрос, но можно установить значение тайм-аута, после которого будет проигнорирован ответ. Посмотрите этот страница для опций AJAX jQuery. Я полагаю, что Ваш ошибочный обратный вызов назовут, если период тайм-аута будет превышен. По каждому запросу Ajax уже существует тайм-аут по умолчанию.
можно также использовать аварийное прекращение работы () метод на объекте запроса, но, в то время как это заставит клиент прекращать прислушиваться к событию, это может , забастовка>, вероятно, не будет мешать серверу обработать его.
Линейные решатели обычно являются частью библиотеки LAPACK, которая является расширением более высокого уровня библиотеки BLAS. Если вы используете Linux, в Intel MKL есть несколько хороших решателей, оптимизированных как для плотных, так и для разреженных матриц. Если вы используете Windows, у MKL есть бесплатная пробная версия на один месяц ... и, честно говоря, я не пробовал ни одну из других. Я знаю, что в пакете Atlas есть бесплатная реализация LAPACK, но я не уверен, насколько сложно запустить его в Windows.
В любом случае, поищите библиотеку LAPACK, которая работает в вашей системе.
Читая документацию по boost, не похоже, что решение по x реализовано. Решение по y - это всего лишь вопрос произведения матрицы на вектор, который, кажется, реализован в ublas.
Следует иметь в виду, что blas реализуют только «простые» операции, такие как сложение, умножение и т. Д. Вектора и матрицы. типы. Все, что более продвинуто (решение линейных задач, например «решить в xy = A x», собственные векторы и т. Д.), Является частью LAPACK, который построен на основе BLAS. Я не знаю, что дает толчок в этом отношении.
Взгляните на JAMA / TNT . Я использовал его только для не разреженных матриц (вам, вероятно, нужны факторизации QR или LU, оба из которых имеют служебные методы решателя), но, по-видимому, он имеет некоторые возможности для разреженных матриц.
Настройка пакета линейной алгебры Boost сосредоточена на "плотных матрицах". Насколько мне известно, в пакете Boost нет решателя линейных систем. Как насчет использования исходного кода в «Числовом рецепте на языке C ( http://www.nr.com/oldverswitcher.html )»?
Примечание. В исходном коде может быть небольшая ошибка индекса (в некоторых кодах используется индекс массива, начинающийся с 1)
Один из лучших решателей для Ax = b, когда A разреженный, - это UMFPACK
UMFPACK
Тима Дэвиса, вычисляющий разреженное LU-разложение A. Это алгоритм, который
используется за кулисами в Matlab, когда вы вводите x = A \ b
(а A является разреженным
и квадрат). UMFPACK
является бесплатным программным обеспечением (GPL)
Также обратите внимание, если y = Ax и x известен, а y нет, вы вычисляете y, выполняя умножение разреженных матриц векторов, а не путем решения линейной системы .
да, вы можете решать линейные уравнения с помощью библиотеки 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.