![]() |
|
Модераторы: bsa |
![]()
|
|
| aworld |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 30.9.2007 Репутация: нет Всего: нет |
каким образом можно уменьшить погрешность вычислений допустим при решении систем уравнений методом Гаусса?
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
aworld, например, если использовать long double вместо double.
|
|||
|
||||
| aworld |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 30.9.2007 Репутация: нет Всего: нет |
этот прием не приносит существенных результатов. я использую матрицу Гилберта размерностью 100*100. правая чать генерируется в отрезке [-1,1]. Относительная погрешность при этом равна 1.00764. Данные различаются в десятки раз...
|
|||
|
||||
| EnShTe1N |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 9.12.2007 Репутация: нет Всего: нет |
хммм
Это сообщение отредактировал(а) EnShTe1N - 10.12.2007, 19:42 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
aworld, применив длинные дробные числа либо заменив алгоритм.
|
|||
|
||||
| aworld |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 30.9.2007 Репутация: нет Всего: нет |
я ввел класс дроби но это уже другая тема, на данном этапе я хотел бы уменьшить погрешность именно с вещественным типом.. существуют ли какие то классы обобщающие или расширяющие класс double? или это бесполезно?
|
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: нет Всего: 92 |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
||||
|
||||
| aworld |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 30.9.2007 Репутация: нет Всего: нет |
сп. за одно подучу ынглиш =)
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
слышал о таком способе (сам не пробовал, так что не в курсе, насколько он помогает)
есть у нас A и y нужно найти x: Ax=y с помощью процедуры Гаусса находим x' подставляем её в уравнение: Ax'=y' из-за погрешностей вычисления у нас x' != x если A - невырождена (т.е. решение единственно), то y != y' так вот идея в том, чтобы после этого "подправить" решение Ax'-Ax=y'-y A(x'-x)=y'-y d=x'-x Ad=y'-y находим с помощью той же процедуры d (на самом деле это будет d' != d из-за погрешностей) новое приближение x''=x+d' смысл в том, что часто погрешность относительная, т.к. для бОльших чисел она бОльшая а когда мы работаем с меньшей правой частью (y'-y) вместо y, в целом числа у нас будут меньше а значит, и абсолютные погрешности тоже так что ситуация, по идее, должна лучшиться... -------------------- qqq |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |