|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.09.2013, 07:17 | #1 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Операции с числами.0 очень разных порядков
Здравствуйте.
Занимался линейной регрессией методом наименьших квадратов (y = ax + b) и столкнулся с ситуацией когда операнды очень сильно отличаются (при большом количестве точек), например 1е1 / 1e25. В такой ситуации точность расчетов сильно страдает. long double не помогает. Что можно сделать? Предполагаю что есть какие-то библиотеки с типами для подобных целей. |
06.09.2013, 07:54 | #2 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
|
|
06.09.2013, 07:56 | #3 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Увы, но таких библиотек не существует. По крайней мере, я таких не знаю. Вам нужно копать в сторону "длинной арифметики". Где-то на форуме, эта тема уже обсуждалась.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
06.09.2013, 12:20 | #4 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Smitt&Wesson
длинка на массивах для целых чисел, а вместо дробных юзать самописные дроби. А то, что я выше писал не подойдет (когда нормализовать будешь таки потеряешь точность ведь..) |
06.09.2013, 15:25 | #5 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Примерно такая ерунда:
Код:
У меня получается: 2.911865009487482219422197198682722 429908e-007 |
06.09.2013, 15:51 | #6 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Я не занимался вплотную длинной арифметикой. Это познания, ради эрудиции, не более.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
06.09.2013, 17:11 | #7 | |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
Цитата:
|
|
06.09.2013, 17:42 | #8 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Может это какая-то обрезка чисел при ручной вставке (при подсчете знаминателя куда-то исчезают последние разряды). У меня по этой формуле строятся графики, визуально наблюдаю, что при большом количестве исходных данных линия неверна.
|
07.09.2013, 17:12 | #9 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Спасибо за участие.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Арифметические операции с числами | JeFix | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 12.10.2012 11:21 |
Операции с большими числами | mrChester | Общие вопросы C/C++ | 4 | 08.12.2010 15:22 |
Borland C 3.1. Операции с 32-х разрядными числами | ONiX | Помощь студентам | 8 | 23.06.2009 13:49 |
операции с вещественными числами на ассемблере. | Fredy | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 28.01.2008 15:43 |