Расчет пределов измерений для применения на поверхности в C++
Как рассчитать, насколько малым и большим может быть физическое измерение, чтобы приложение не подвергалось чрезмерному / недостаточному представлению при представлении измерения в виде двойного числа?
Например, я делаю несколько измерений расстояния до плоской поверхности и хочу подогнать плоскость к набору данных. Я хочу выяснить, насколько близко и как далеко я могу находиться от поверхности при проведении этих измерений, чтобы результаты применения были правильными.
В моей программе я читаю измерения в 3 кортежа двойного типа, чтобы представить точки в R3. Желаемая точность составляет 2 или 3 знака после запятой.
Не уверен, где начать.,,
РЕДАКТИРОВАТЬ: я не пытаюсь поймать переполнение; Я пытаюсь проанализировать пределы приложения.
1 ответ
Число с плавающей запятой двойной точности имеет около 15 значащих цифр, и величина может быть между 1e-308
в 1e308
,
Предположим, что расстояние от базы вашего измерения до поверхности оценивается примерно в x
единицы длины, и что шероховатость поверхности, погрешность измерения и любая другая неопределенность составляет около a
в тех же единицах длины. (Выбор единиц зависит от вас.) Здесь будет естественно предположить, что x
относительно больше, чем a
,
По крайней мере, следующие ограничения должны быть выполнены.
- Величина числа
x
меньше чем примерно1e308
, - Величина числа
a
больше чем примерно1e-308
, - Соотношение
a/x
больше чем1e-15
,
Я думаю, что вы могли бы хранить необработанные данные измерений о расстоянии от Луны до Земли (3e8
м) причесать (1e-5
m) в числах с плавающей запятой двойной точности в единицах метра.
Если вы обнаруживаете гладкую поверхность на Луне с Земли с разрешением одного атомного слоя, возможно, 15 значащих цифр числа с плавающей запятой двойной точности будет недостаточно для достоверного представления результатов измерений. Однако, если ваш измерительный прибор имеет более значимые цифры, вы можете сохранить среднее (или типичное) расстояние d
в одном числе с плавающей запятой, и сохранить разницу x-d
измеренного расстояния от среднего значения в других числах с плавающей запятой для соответствующих измерений.