Сделаем небольшое отступление и прежде чем вернуться к вопросу плотности, построим мост между физикой и информатикой.
В прошлый раз мы пытались взвесить Петю и Васю, не имея под руками весов, и в какой-то момент, воспользовавшись качелями, сказали:
«[теперь] мы-то знаем, что Вася весит больше, чем Петя, а на сколько или во сколько раз больше?»
Но в итоге мы смогли ответить только на вопрос «во сколько раз Вася весит больше, чем Петя», а не «на сколько».
А почему не «на сколько»?
Кому интересно официальное определение термина размерность, тот может прочитать его здесь. А мы пока вспомним о нашем алгоритме покупки продуктов.
Помните, мы говорили, что для того, чтобы алгоритм стал более универсальным, нам надо задать входные параметры (переменные), которые будут обозначать «что купить», «где купить» и «какая сумма доступна»?
И уже в конце мы вскользь упомянули о том, что у переменных есть не только имя, но и тип, который определяет допустимый диапазон значений.
Например, в нашем примере сумма может быть только в рублях, её нельзя задать в метрах или в килограммах — то есть у неё был бы тип Деньги.
(Примечание: про «что купить» и «где купить» мы пока говорить не будем — эти переменные, скорее всего, будут подсписками более больших, заранее заданных, списков: продуктов и доступных магазинов и для нашего примера они слишком сложные).
Если бы у нас была ещё одна переменная, например, максимальное расстояние, на которое мы можем удаляться от дома в поисках продуктов, то она бы имела тип Расстояние.
Можно ли сравнивать переменную типа Деньги с переменной типа Расстояние?
Очевидно, что нет. Переменные разных типов нельзя ни сравнивать между собой, ни складывать друг с другом, ни вычитать из одной другую.
Так вот, возвращаясь к Пете и Васе. Посмотрим на упрощенную схему их взаимного расположения: на одном краю у нас сидит Петя, а на другом — Вася.
Обозначим расстояние от центра Пети до оси как . А расстояние от центра Васи до оси качель — как .
Обозначим предполагаемые массы Пети и Васи как и соответственно.
Что у нас говорит физика? Что во сколько раз Вася тяжелее Пети, то во столько же раз Петя будет сидеть дальше от оси, чем Вася (если мы хотим их уравновесить).
Посмотрите на формулу на рисунке: если вы делите одну на другую , то вы получаете безразмерную величину в ответе — в нашем случае это — ответ на вопрос: сколько отрезков поместится в отрезке . — это не , не (и уж не ). Это просто !
Аналогично, вы делите одну массу на другую и тоже получаете безразмерную величину.
Поэтому мы и можем сопоставить одно соотношение с другим — у них совпадают итоговые размерности, или, если говорить шутя, «безразмерности» 🙂, как это выходит в нашем случае.
Возвращаясь к вопросу, озвученному в начале нашего предыдущего сообщения: «почему мы не можем сказать на сколько [больше весит]?».
А как? У нас есть только и . Размерность каждого из этих расстояний — : . Если мы вычтем одно из другого, размерность результата останется той же.
Обратите внимание, что когда я говорю , я имею в виду размерность длины — по аналогии с типом Длина. Если из длины вычесть длину — длина и получится!
На всякий случай давайте этот момент чуть подробнее проговорим — — это конкретное значение, например, . — тоже конкретное значение, например, .
А если мы говорим про размерность, то эта формула будет выглядеть так:
Потому что неважно, складываете вы длины, вычитаете ли их, у вас все равно остается длина! Вы никогда не получите — размерность массы!
Примечание: размерность величины мы будем обозначать через , а сами размерности — заглавными буквами: — длина, — масса.
Можно сказать, что размерности ограничивают нас в возможностях, но на самом деле размерности лишь отражают нашу реальность.
А главное, чем они полезны для нас — с помощью них мы можем проверить, что не ошиблись в своих вычислениях, или в своей программе, если говорить о типах переменных.
Если в каком-либо месте при решении задачи вы вдруг начинаете из килограммов вычитать метры — значит, у вас где-то закралась ошибка!
Если в программе в какой-то момент вы начинаете сравнивать деньги и расстояние, — значит, в программе у вас ошибка!
Так размерности и типы переменных защищают нас от ошибок!
И прежде чем мы перейдем к плотности, вот вам небольшая задачка.
На подумать
Что нужно сделать, чтобы мы все-таки могли сказать какая масса у Васи?
Oтвет
Для этого нужно превратить Петю в эталон! Посмотрите на пропорцию: если умножить обе стороны равенства на , то мы получим, что , а с точки зрения размерности это выглядело бы так:
Если бы мы заранее знали, что Петя весит , то тогда смогли бы вычислить, что Вася весит .
Словарь
— размерность: — длина, — масса, …
— безразмерная величина
— тип переменной