I've often felt it to be helpful to treat dimensionless quantities as a smell that the dimensions might be too unspecific. 12 meters / 3 meters is just a unitless 4, but 12 meters east / 3 meters north is a much more interesting 4 units-east-per-unit-north. Keeping track of these invariant "hidden units" was sometimes helpful to me in physics classes, especially in later classes where nondimensionalizing your equations was so handy.
Units are to calculations as Types are to code. They help prevent a large class of common errors. If your types aren't consistent, you know your code is wrong. If your units aren't consistent, you know your calculation is wrong.
Just like there can be stronger and weaker type systems, there can be stronger and weaker unit systems. Stronger unit systems catch a larger class of errors. I commonly catch errors nobody else sees because I use a stronger unit system than they do, which is amended with generics ("kg of what?"). Just like you said: a unitless quantity is weak; ppm doesn't help you catch errors very well. It could be mg/kg or µL/L, and it matters when you start canceling ratios. But you can take it further: mg<constituent>/kg<soil>. When you start throwing in soil density and molecular mass, it's very easy to come up with examples that "pass" the standard dimensional analysis but "fail" your advanced unit checker. You can look like a wizard by detecting errors in equations completely outside of your field of expertise.
Once you realize that there can be as many unit-systems as type-systems and the only criterion for a good vs. bad unit system is how well it catches errors, the purists who try to enforce their physics textbook's view of units will look really silly to you. The only problem is that you start arguing with them about whether specific gravity is really unitless or not (it's more helpful to say it's not), and they immediately decide you must be a moron because that's not what their textbook says. Oh well. You're getting the right answer, and they're not.
This is the most insightful comment I've read today. Ties up a number of thoughts I've had while explaining this to my kid. You're right that there's a choice about how strongly typed your unit system is.
Another useful tidbit is if your formula has a log or an exp, the arg needs to be dimensionless.
> Another useful tidbit is if your formula has a log or an exp, the arg needs to be dimensionless.
I have cognitive dissonance about that. I understand that if you look at the Taylor series of Exp(x), you're clearly adding terms containing 1, x, x^2, x^3, etc., and that it doesn't make sense to add a meter to a square meter to a cubic meter and so forth. So therefore Exp(1m) doesn't/shouldn't make sense.
But on the other hand, I can come up with examples that seem to make sense, but seem "dimensionful". Is a bit dimensionless? Because it certainly makes sense to consider 2^(32 bits) and 2^(4 bytes). Yet bits are deeply related to entropy and might even be considered a unit of energy. Are we sure they're dimensionless? What is a "square bit" anyway?
I can also define "specific meters" to be the length of an object divided by the length of a 1-meter-long stick. This value is now dimensionless, so it should be OK to exponentiate it, correct? Am I cheating? How?
Or I should be allowed to take Log(7 mg/kg) because mg/kg is dimensionless. But this should equal Log(7 mg) - Log(1 kg), which I'm not allowed to do. What gives?
Again I come back to: is this actually helping me catch errors in my calculation? I'm honestly not sure here.
Yeah, so the problem is that the units of a function applied to a value is not necessarily the same as the value. Consider the area of a square. It has one argument whose unit is of length type. But, the function returns something of area type - totally fine.
If you want to talk about e^(x) then you're totally free to do that but, you're right: if x is not dimensionless then the expression has no physical meaning (as little meaning as one meter added to one second, as an example of another clearly nonsensical physical function).
In Physics, your starting point always makes sense dimensionally (F=m*a, E=m*g*h) and the game is to combine expressions that make dimensional (and physical) sense to glean insight into how different physical constraints of the system are related.
If you have any Physics problem where you end up with e^(x) or sin(x) and x is not dimensionless then it's a dead giveaway that you performed an algebraic misstep at some point when playing the game.
So, in short, you can propose a lot of functions that make no sense from a physical standpoint, but you won't arrive at those if you're working from first principles which are, by nature, dimensionally consistent.
I would treat a Taylor series as "numeric trickery" that happens to produce useful approximations, in which case I wouldn't care about units.
As for Log of a unit, if it is useful in some strange circumstance, would require a different unit to keep track of (like logkg), similarly to i (the imaginary unit) being the result of sqrt(-1).
I think it's more errors in derivations that you're after. Like the sibling comment mentions, in physics you get a bunch of different units but they have to be consistent, eg despite there being different expressions that describe energy, they end up being the same under the hood.
I'm not sure I can think of a case where you can do otherwise.
Entropy is J/K and seems to follow the same dimensionality constraints as everything else, though I'm not well versed in information theory so I don't know how they think about it.
The log example only works because log only takes a dimensionless parameter. The only way to get that is to cancel the two kinds of meters and shove the dimensionless 0.007 into it. Ie it is a type error to take the log of 7mg or anything with a unit.
One interesting thing I came across is in the cpp book by Stroustrup he actually builds a custom type system capable of preventing issues like this and uses physics examples.
I'm not suggesting that I have a better unit system for all of physics than what is currently used in physics. I am suggesting that there are lots of different unit systems and the "best" one depends on what problem you're trying to solve (the same as with programming languages). I'm suggesting that concepts from software engineering could benefit many other disciplines, because in some ways software engineering is simply the study of how to solve problems reliably and repeatably. I'm suggesting that we should feel free to tinker and experiment with unit systems as we do with programming languages.
I don't have concrete examples other than adding in "of X material" when appropriate (e.g. mass and volume, but not energy), but don't underestimate how useful that really is. One calculation I encounter a lot that is wrong a troublingly large amount of the time, despite passing a traditional dimensional analysis, is this one:
Calculate the mass of SO2 produced from burning 1,000 moles of gas with a molecular weight of 24 g/mol containing 2% H2S by weight (and no other sources of sulfur).
It's not hugely complicated: there are really only two units to keep track of here (g and mol) but they can be "of" three different materials (whole gas, SO2, and H2S), so it's very easy to cancel terms when you really shouldn't if you analyze it traditionally. With the materials attached to each unit, you're also forced to include a term that is otherwise invisible (the stoichiometric ratio of SO2 to H2S, which is usually omitted because it's 1), which helps guide your intuition on how the calculation relates to the chemistry of what's happening and helps you come up with the correct calculation when more complicated chemical reactions are involved.
On a related note, I've been dealing with some process chemistry recently, and I've noticed that a lot of dimensionless quantities that are ratios retain their original units - I've seen many cases of units like e.g. [kg/kg]. Not sure what's the reasoning behind this, but I suppose this prevents mixing up [kg/kg] with [m/m] and other unrelated ratios.
And in communication theory / information theory there is spectral efficiency, which is 1/s/Hz (rate over bandwidth. Sometimes given in bits, sometimes in symbols)
If you are having snags with dimensionless ratios in chemistry, why not talk to any half competent cook/chef? They don't piss about like that!
The reason your quantities (LMT etc) are dimensionless is because you need to bake a decent cake or mix a cocktail and get a grip 8)
I am being flippant but I don't think that mixing kilos and meters in any unlikely ratio is likely to end well. They tend to become quite forceful if not mixed carefully.
> If you are having snags with dimensionless ratios in chemistry, why not talk to any half competent cook/chef? They don't piss about like that!
I don't! Also, doing this would go against my belief that I already mentioned on HN several times - that the difference between process chemistry and cooking is that the former actually cares about the quality of outcome ;).
You have to pick your time(zone) when deploying them. I generally find that GMT/UTC >=+6 is when a sense of humour failure generally kicks in. At +8 it relents a bit when en_AU kicks in and is reinforced at +11 by en_NZ.
Worst downvotes I ever got, in response to a fellow from Google expressing a very uncontroversial opinion and then making it clear it was only his own opinion, I wrote: "Hi Jim, this is Chet from HR. Let's have a chat on Monday." Even my "Sorry, bad joke. I'm not 'Chet' and I don't work at 'Google HR'" response got downvotes. Many, many responses hating on Google HR in particular and HR in general.
We had a physics prof infamous for "randomly" regrouping a bunch of constants into a new unitless (or just combined) constant. Except he never explained it; a new "α'" would just appear and bunch of old constants were gone! It was frustrating at first, but then we discovered how handy it was to do and our cohort nicknamed the "method" after him. It was common to ask each other 'did you "Rebka-tize" that term here?'.
That kind of trick is honestly the reason why I don't like reading engineering textbooks. A physicists prose is usually better, sure, but I'm not very good at reading so that doesn't bother me: What I can't stand is cumbersome notation, which many mathematical (i.e. FEM) engineering books I've read suffer from immensely.
There is this Erlang unit, for the number of simultaneous calls a telecommunication system can handle. https://en.wikipedia.org/wiki/Erlang_(unit) It's dimensionless, because it multiplies the rate that calls are initiated by the average length of a call: 'calls / second' by 'seconds / call'. Dimensionless.
But that makes little sense - we're measuring the number of simultaneous calls. It gets reflected in buffers, circuits, sockets, channels allocated, etc.
It would be better to consider 'call starts / second' as the rate at which calls are initiated, and the average 'call.seconds / call start', which when multiplies gives the more sensible unit 'call'.
Or simpler: just measure the average length in seconds. So we have so many 'calls / second' initiated, and the average length is so many 'seconds', which when multiplied again gives a unit of 'call'.
Agreed, though I'd interpret it slightly different. Like if I said 100 cars per hour and each car needs 30 seconds of spacing per car the units don't cancel out because they are physically taking up space for the "30 seconds of spacing per car."
I'd say the same applies in this case. It'd be more "calls/sec" times "active phone * sec/calls". Though I guess for "call" in your case or "active phone" the industry has chosen 'Erlang' a bit recursively.
Same thing with radians (a "dimensionless" unit) -- angle is the ratio of two lengths, arc length/radius, so technically dimensionless, but those two lengths are not of the same thing. I always felt more comfortable saying "pi radians" rather than just "pi" because radians feel like a real unit in the same way that units-east-per-unit-north do.
I wonder if there's been any study into when it's ok to cancel two of the same unit and when it's better to leave it as a ratio of two quantities with the same unit but describing different dimensions. Is there a way to make this notion precise?
Dimensionless numbers are the opposite of a smell - they are the most pristine, fresh quantities you can get in physics.
You usually want to express everything you possibly can in a dimensionless way. It tends to make the math a lot simpler and to punch to the heart of the problem.
You talk about math like it’s poetry … can it really be that artistic of a practice? I suppose that’s how I view writing software.. What is an example of dimensionless numbers?
I would put dimensionality more in the purview of physics than pure math, and at that point it might be more reverse engineering than poetry. Fine structure constant, quantum phase, angles, e, pi are all dimensionless.
Sometimes they're well established and provide very useful characterizations that tie into physical behavior. For examples Reynolds numbers and Mach numbers in aerodynamics are quantities that can tell you immediately what kind of flight dynamics range you're dealing with.
What's a use case for "units-east-per-unit-north"? Proportions of a room? Call it 3:2 or whatever, makes perfect sense. A direction? Use an angle. Like some other commenter said having to deal with "units-east-per-unit-north" is like code smell.
12m east / 3m north does not make any sense, since vector division is undefined. You might be thinking about the derivative which has no units in this case.
Since we've chosen a basis of the vector space (east, north) we can think of it as two 1-dimensional vector spaces. So we're dividing meters east by meters north.