| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Повышений точности |
| Автор: sos 20.10.2005, 23:03 |
| я ТУТ РЕШАЮ слау, Пацаны пара вопросов^ 1.Что значит 1.#INF; -1.#IND(ВЫДАЕТ В КОНСОЛИ); 2.тип double самый точный???КАК повысить тосность???(алгоритм опимизирован!!!) |
| Автор: sergejzr 20.10.2005, 23:18 |
| 1) Это значит, негативная бесконечность. 2) Точность повысить можно с пом. специальных библиотек, но они очень медленные, так как простейшие действия как сложение, умножение делаются "ручками" в коде (типа как мы делаем это столбиком), а не процессором. А doubl самый точный тип с которым процессор напрямую может работать. Но сперва необходимо выяснить, какая именно точность тебе нужна ;) |
| Автор: cardinal 20.10.2005, 23:44 | ||
И позитивная соответсвенно (как я понимаю)... |
| Автор: maxim1000 21.10.2005, 00:09 |
| когда решается какая-то задача на компьютере, погрешность появляется из-за двух причин: 1. недостаточность точности при сохранении конечного результата 2. погрешности при вычислениях для того, чтобы решить первую проблему выход единственный - менять тип результата, наверняка, придется менять тип и промежуточных переменных это медленно... зато для второго варианта есть один подход... погрешности при вычислениях с double обычно имеют относительный характер, т.е. при уменьшении числа абсолютная погрешность его тоже уменьшается для СЛАУ делают так: 1. решают ее обычным методом, т.е. находят x: Ax=b 2. получают на самом деле |Ax-b| маленькая, но не нулевая 3. решают задачу: Ay=e (e=Ax-b) в качестве более точного решения берут вместо x x-y получается A(x-y)=Ax-y=b+e-e=b на самом деле, Ay не точно равно e, поэтому точность последнего равенства тоже не абсолютная, но преимущества все равно есть: во втором процессе вычислений участвуют меньшие числа, а потому абсолютная погрешность получается меньше... конечно, ничто не спасает от погрешности при сохранении результата, но тут, как я уже писал, кроме замены типа на более точный врядли что-то придумается... хотя опять же, даже если и заменять, то можно провести такую пару вычислений и "собрать" только в конце более точные значения из пары менее точных... тогда можно будет сделать не такой сильный скачок в длительности работы алгоритма, правда, за счет точности... |
| Автор: Mayk 21.10.2005, 09:26 |
| long double точнее double |
| Автор: pablo 21.10.2005, 14:24 | ||
На некоторых компиляторах точности могут совпадать |
| Автор: Mayk 21.10.2005, 18:24 |
| Весьма на некоторых надо полагать. В борле и гнусе различаются точно. В вязанке афаир тоже. Другие не щупал. зы. float <= double <= long double и йожик с ними это конечно хорошо, но всё же точнее лонг дабла типа не найти afaik. |
| Автор: S.A.P. 21.10.2005, 21:33 |
| ИМХО тут порядок вычислений может влиять на точность. a*b/c с точки зрения математики, пофигу в каком порядке считать. А если, скажем, число C - бесконечно малое, то делить на него лучше меньшее из A и B, чтобы погрешность сократить. |
| Автор: cardinal 21.10.2005, 22:12 | ||
"ИМХО" можешь убрать, т.к. это факт. |