|
Арифметика высокой точности в ALGLIB, как ее использовать? |
|
|
|
Dec 10 2013, 09:06
|
Частый гость
 
Группа: Участник
Сообщений: 85
Регистрация: 20-05-13
Пользователь №: 76 911

|
Всем доброго времени суток. Надеюсь, что мой вопрос не останется без ответа. Использую функцию rmatrixsolvels из пакета alglib. Подключил просто - закинул в папку с проектом все хедеры и сишники alglib. Из 13 файлов пришлось подключить 6 для вызова лишь одной функции. exe подрос заметно в размерах, время компиляции увеличилось заметно, ну да ладно, главное цель достигнута. Решается система линейных уравнений с прямоугольной матрицей - число уравнений превышает число неизвестных. Минимизируется невязка. Но чувствую, не хватает точности. В alglib есть возможность работы с арифметикой высокой точности http://alglib.sources.ru/equations/linear.php Но как ее подключить ? Что-то я не соображу... Так все запутано в этом alglib. Использую компилятор MinGW-W64. Буду признателен за любые подсказки.
|
|
|
|
|
 |
Ответов
|
Dec 10 2013, 10:26
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата MSP430F: Но чувствую, не хватает точности. Каким образом почувствовали? Какого размера система? Каким способом решается? Вероятно, необходимость в высокой точности необоснована.
|
|
|
|
|
Dec 10 2013, 12:32
|
Частый гость
 
Группа: Участник
Сообщений: 85
Регистрация: 20-05-13
Пользователь №: 76 911

|
Цитата(thermit @ Dec 10 2013, 14:26)  Каким образом почувствовали? Какого размера система? Каким способом решается? Вероятно, необходимость в высокой точности необоснована. Я проверил максимальную ошибку в вычислении свободных членов по найденным решениям, использую функции rmatrixsolve (для квадратной матрицы) и rmatrixsolvels (также в режиме квадратной матрицы). Ошибки отличаются на 3-5 порядков (в первой от 10-10 до 10-7, во второй от 10-5 до 10-3), хотя данные идентичны. Мне же предстоит решать систему не с квадратной, а прямоугольной матрицей. Если с квадратной такие ошибки, то что же ожидать от прямоугольной ?
|
|
|
|
|
Dec 10 2013, 14:33
|
Частый гость
 
Группа: Участник
Сообщений: 85
Регистрация: 20-05-13
Пользователь №: 76 911

|
Цитата(Xenia @ Dec 10 2013, 16:47)  Если у вас на квадратной матрице rmatrixsolvels дает ошибку от 10-5 до 10-3, то при переходе на прямоугольною матрицу хуже уже не будет. Ухудшение на "3-5 порядков" - это плата за метод более общего типа (в нем арифметики больше), которую вы уже заплатили. Спасибо за ответ! Я чувствовал нечто подобное, а Вы подтвердили мои догадки. Да, похоже, что использовать арифметику высокой точности по-любому очень проблемно здесь. Но если бы кто, подсказал, как, то можно было и попробовать. Если бы можно было просто заменить double на long double... Но там иакой финт не пройдет, слишком все в alglib наворочено. Цитата(thermit @ Dec 10 2013, 17:47)  Исходные данные можете предоставить? Да. В файле матрица 21x21 элемент и массив B из 21-го элемента (правая часть). Максимальная ошибка для этих данных соответственно у меня получилась 1,1х10-9 и 1,9х10-4.
|
|
|
|
Сообщений в этой теме
MSP430F Арифметика высокой точности в ALGLIB, как ее использовать? Dec 10 2013, 09:06 TSerg Проверьте с использованием мат.пакетов Матлаб, Мат... Dec 10 2013, 11:49 thermit ЦитатаMSP430F:
Я проверил максимальную ошибку в вы... Dec 10 2013, 13:47 thermit 1. Плохо обусловленная задача. Число обусловленнос... Dec 10 2013, 15:31 Xenia Цитата(thermit @ Dec 10 2013, 19:31) Боюс... Dec 10 2013, 16:27 MSP430F Цитата(thermit @ Dec 10 2013, 19:31) Вам ... Dec 10 2013, 16:44 thermit ЦитатаMSP430F:
И где же взять код этих адгоритмов ... Dec 10 2013, 19:03 MSP430F Цитата(thermit @ Dec 10 2013, 23:03) Можн... Dec 11 2013, 07:51 thermit Честно говоря, лень ковыряться с чужими исходникам... Dec 11 2013, 11:00 MSP430F Цитата(thermit @ Dec 11 2013, 15:00) Чест... Dec 11 2013, 13:01  thermit Цитата(MSP430F @ Dec 11 2013, 16:01) Это ... Dec 11 2013, 14:20   TSerg Цитата(thermit @ Dec 11 2013, 18:20) стар... Dec 11 2013, 19:42   MSP430F Цитата(thermit @ Dec 11 2013, 18:20)
Я ... Dec 12 2013, 09:01 _pv Кодvoid GaussSolve(double * A, double * Y, int... Dec 11 2013, 11:48 thermit Цитата_pv:
обычный Гаусс на этих данных даёт ошибк... Dec 11 2013, 12:07 _pv 5*10^-10
если то же самое в чём радость по сравнен... Dec 11 2013, 13:29 thermit Ошибки здесь нет. Исходная матрица лежит в памяти ... Dec 12 2013, 09:18 MSP430F Цитата(thermit @ Dec 12 2013, 13:18) Ошиб... Dec 12 2013, 10:18 _pv тогда простой Гаусс даст ошибку в 10^-12.
а для пр... Dec 12 2013, 10:28 thermit ЦитатаMSP430F:
Зачем же здесь тогда транспонирова... Dec 12 2013, 10:56 MSP430F Цитата(thermit @ Dec 12 2013, 14:56) Для ... Dec 12 2013, 12:03 thermit ЦитатаMSP430F:
Нет, Вы не правы. В моих данных все... Dec 12 2013, 12:15 MSP430F Цитата(thermit @ Dec 12 2013, 16:15) Это ... Dec 12 2013, 14:42 thermit ЦитатаMSP430F:
Правда, пришлось немного попотеть, ... Dec 12 2013, 14:49 Xenia Цитата(thermit @ Dec 12 2013, 18:49) Заче... Dec 12 2013, 15:08
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|