Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

THE BOOST MPL LIBRARY: Dimensional Analysis

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Front Page / Tutorial: Metafunctions and Higher-Order Metaprogramming / Dimensional Analysis

Dimensional Analysis

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

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

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

F = ma

Так как масса и ускорение имеют разные размеры, то размеры силы должны каким-то образом захватывать их сочетание. На самом деле размеры ускорения уже как раз такие составные, изменение скорости с течением времени:

dv/dt

Поскольку скорость — это просто изменение расстояния (l) с течением времени (t), основными размерами ускорения являются:

(l/t)/t = l/t2

И действительно, ускорение обычно измеряется в квадратных метрах в секунду. "; Из этого следует, что размеры силы должны быть:

ml/t2

и сила обычно измеряется в кг (м/с2), или "килограмм-метры в секунду в квадрате. "; При умножении количества массы и ускорения мы также умножаем их размеры и переносим результат, что помогает нам убедиться, что результат имеет смысл. Официальное название этой бухгалтерии —размерный анализ, и нашей следующей задачей будет реализация её правил в системе типа C++. Джон Бартон и Ли Накман были первыми, кто показал, как это сделать в своей основополагающей книгеНаучный и инженерный C++[BN94]. Мы изменим их подход в терминах метапрограммирования.

[BN94]Джон Бартон и Ли Р. Накман.Научно-технический С++: введение с передовыми методами и примерами.Чтение, МА: Эддисон Уэсли. ISBN 0-201-53393-6. 1994.

Статья THE BOOST MPL LIBRARY: Dimensional Analysis раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 05:39:56/0.0078499317169189/1