From: Deane Yang (deane_yang_at_[hidden])
Date: 2003-10-16 17:42:16
Jan Langer wrote:
> Jan Van Dijk wrote:
>> Unfortunately the algebra (the transformation properties) is not
>> linear. Just consider conversion from the temperature-'base vector' K
>> (kelvin) to C (Celsius), C=K-273.15.
>> In technical terms: obviously the K->C base transformation cannot be
>> described with a (metric) 00-tensor (or scalar) M via the linear
>> transformation relation C=MK.
> when thinking about it, i cannot imagine a case where this is important.
> it makes imho no sense to add °C to °F or something similar. what is the
> result of 20°C plus 10°C? 30°C or (293.17+283.17)°K or just 30 Kelvin?
> it is difficult to calculate with units which cannot be used as
> differences. and if they can be used as differences they are linear. IMHO.
These are excellent points (as well as others made in other posts that I
will comment on in another posting).
Temperature is an example of what I would call an "affine" dimension
and not a "linear" one, which is what we've been focusing on so far.
When we think of grams, meters, or seconds, we are thinking of relative
measurements, namely the difference between two absolute measurements.
So there is a natural meaning for 0 and the measurement lives naturally
in a vector space. So, as a measurement of the difference between two
temperatures, both °C (= °K) and °F make perfect sense as linear units.
If you want, however, to represent absolute temperatures in Kelvin,
Centigrade, or Fahrenheit, I would say that you need to define the
notion of an affine dimension. An affine dimension corresponds to
a 1-dimensional affine space, where there is no natural origin but
given any two points in the space, there is a natural vector associated
with the two points (the difference between the two points).
So you would never add two affine measurements nor would you ever
multiply or divide affine dimensions by anything else. You would
only subtract two affine measurements, resulting in a linear measurement
(to which you can then do lots of things). (A standard example of an
affine dimension is a pointer, and the corresponding
linear dimension is the difference of two pointers.)
This also arises in time, where calendar dates as defining an affine
dimension and the difference between two dates to be the standard linear
time dimension. You would almost never multiply a date by two (nor would
you normally ever multiply a pointer address by two, but never say
never), but you might want to multiply the difference between two dates
by two (or multiply the difference of two pointers by two).
I have to say that it's really wonderful to have all these physicists
point out the shortcomings in my explanations. It really helps me to
understand things better.
I should point out, however, that in the very rudimentary
dimensions/units library I implemented, I allow myself to override
anything and everything. It's just that if I choose to do this, it
is done very explicitly and glaringly, so that I can't miss it.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk