Вычисление пределов измерений для приложения подгонки поверхности в C++

Как рассчитать, насколько малым и насколько большим может быть физическое измерение, чтобы приложение не подвергалось переполнению/недостаточному заполнению при представлении измерения как двойного?

Например. Я делаю несколько измерений расстояния до плоской поверхности и хочу подобрать плоскость к набору данных. Я хочу выяснить, насколько близко и насколько далеко я могу находиться от поверхности при проведении этих измерений, чтобы результаты приложения были правильными.

В моей программе я читаю измерения в 3-кортежи типа double, чтобы представить точки в R3. Желаемая точность составляет 2 или 3 знака после запятой.

Не уверен, где начать. . .

РЕДАКТИРОВАТЬ: я не пытаюсь поймать переполнение; Я пытаюсь проанализировать ограничения приложения.


person carrytiger    schedule 01.01.2017    source источник
comment
возможный дубликат: stackoverflow.com/questions/15655070/   -  person AMA    schedule 01.01.2017
comment
дело не в переполнении, а в накоплении ошибок   -  person Oleg Bogdanov    schedule 02.01.2017


Ответы (1)


число двойной точности с плавающей запятой имеет около 15 значащих цифр, а величина может быть между 1e-308 и 1e308.

Предположим, что расстояние от основания вашего измерения до поверхности оценивается примерно в x единиц длины, а шероховатость поверхности, погрешность измерения и любая другая погрешность составляет примерно a в тех же единицах длины. (Выбор единиц зависит от вас.) Здесь будет естественно предположить, что x относительно больше, чем a.

По крайней мере, следующие ограничения должны быть выполнены.

  • Величина числа x меньше примерно 1e308.
  • Величина числа a больше примерно 1e-308.
  • Отношение a/x больше, чем 1e-15.

Я думаю, вы могли бы хранить необработанные данные измерений о расстоянии от Луны до Земли (3e8 м), чтобы разрешить волосы (1e-5 м) в числах с плавающей запятой двойной точности в единицах метра.

Если вы обнаруживаете гладкую поверхность Луны с Земли с разрешением в один атомный слой, возможно, 15 значащих цифр числа с плавающей запятой двойной точности будет недостаточно для точного представления результатов измерения. Однако, если ваш измерительный прибор изначально имеет более значащие разряды, вы можете сохранить среднее (или типичное) расстояние d в одном числе с плавающей запятой и сохранить разницу x-d измеренного расстояния от среднего в других числах с плавающей запятой для соответствующих измерений. .

person norio    schedule 09.05.2017