DMUG-Archiv 2025

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: [Dmug] Temperaturrechnen

Hallo Stefan,

besten Dank für Ihren Hinweis, Temperaturen mit anderen Einheiten als "Kelvins" sollten mit der entsprechenden Differenzeinheit addiert werden.

Finden Sie  bitte in der Folge einige Beispiele, die zeigen, wie inkonsistent oder - mit Verlaub - geradezu unsinnig die Implementation umgesetzt wurde.

In[42]:= $Version
Out[42]= "14.2.1 for Microsoft Windows (64-bit) (March 17, 2025)"


Das folgende Beispiel ist falsch

(1) entweder wird zuerst auf 282.15 °C addiert und dann subtrahiert,  wodurch 281.5 "DegreesCelsiusDifference" entstehen müssen (2) es wird zuerst subtrahiert (7 "DegreeCelsiusDifference"), dann addiert: 8 °C

In[34]:= Quantity[1., "DegreesCelsius"] + Quantity[8., "DegreesCelsius"] -  Quantity[1., "DegreesCelsius"]
Out[34]= -(Quantity[-554.3, "DegreesCelsius"])

Out[34] wäre richtig gewesen, wenn die Einheit "Kelvins" gelautet hätte, das ist aber nicht der Fall.

Das folgende  ist, wie von Ihnen festgestellt, korrekt im Sinne der Reference

In[35]:= UnitConvert[Quantity[1., "DegreesCelsius"] + Quantity[8., "DegreesCelsius"], "DegreesCelsius"]
Out[35]= Quantity[282.15, "DegreesCelsius"]

In[36]:= 273.15 + 1 + 273.15 + 8. (* K *) - 273.15 (* ->  °C; korrekt im Sinne des Manuals *)
Out[36]= 282.15

Auch korrekt mit syntaktischem Zucker, es resultiert eine "DegreeCelsiusDifference"

In[37]:= UnitConvert[Quantity[1., "DegreesCelsius"] + Quantity[8., "DegreesCelsius"],  "DegreesCelsius"] - Quantity[1, "DegreesCelsius"]
Out[37]= Quantity[281.15, "DegreesCelsiusDifference"]

erneut falsch, auch das sollte eine "DegreesCelsiusDifference" ergeben:

In[38]:= (Quantity[1., "DegreesCelsius"] + Quantity[8., "DegreesCelsius"]) - Quantity[1., "DegreesCelsius"]
Out[38]= -(Quantity[-554.3, "DegreesCelsius"])

das ist korrekt

In[39]:= Quantity[1., "DegreesCelsius"] + (Quantity[8., "DegreesCelsius"]  -  Quantity[1., "DegreesCelsius"])
Out[39]= Quantity[8., "DegreesCelsius"]

Nun kann man Temperaturzeitreihen betrachten:

In[29]:= Clear[ts]
ts = TimeSeries[Table[{DateObject[{2025, 6, o}], Quantity[o, "DegreesCelsius"]}, {o,1, 30}]]

Out[30]= TemporalData[TimeSeries, {{
QuantityArray[
StructuredArray`StructuredData[{
     30}, {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
       18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30},
      "DegreesCelsius", {{1}}}]]}, {
TemporalData`DateSpecification[{2025, 6, 1, 0, 0, 0}, {2025, 6, 30, 0,
     0, 0}, {1, "Day"}]}, 1, {"Continuous", 1}, {"Discrete", 1},
  1, {ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1},
   ValueDimensions -> 1}}, True, 14.2]

Im folgenden  fehlen im Sinne des Manual 30 * 273.15.

In[31]:= Total[ts]
Out[31]= Quantity[465, "DegreesCelsius"]

In[33]:= Plus @@ Range[30]
Out[33]= 465

Das TimeSeriesWindow[] tut es nicht besser und ist im Sinne des Manuals eben falsch:

In[40]:= Total[TimeSeriesWindow[ts, {DateObject[{2025, 6, 1}], DateObject[{2025, 6, 4}]}]]
Out[40]= Quantity[10, "DegreesCelsius"]

In[41]:= Plus @@ Range[4]
Out[41]= 10

in der Zeitreihe werden Temperaturen [°C] auf die Art des kleinen Manns von der Straße addiert, aber warum?

Mit den besten Grüssen
Udo.


On 7/18/2025 12:37 PM, Stefan Welke wrote:
Lieber Udo,

die letzte Rechnung ergibt sich aus der Erläuterung (Hilfe) zu Temperature Units:

"When adding two temperature quantities, the result will be the sum of the values including the difference from absolute zero. The result of summing two temperatures is equivalent to converting those temperatures to Kelvin and then summing, with results canonically given in Kelvin:"

D.h. in diesem Fall: -8°C = (273.15 - 8) °K und -0.5°C = (273.15 - 0.5) °K, also -8°C + (-0.5)°C = (273.15 -8 + 273.15 - 0.5) °K = (273.15 -8 + 273.15 - 0.5 -273.15) °C = (273.15 -8.5) °C = 264.65°C

Viele Grüße

Stefan

On 17.07.25 17:45, Susanne & Udo Krause via demug wrote:
Liebe Freundinnen und Freunde der Temperatureinheiten,

Mal sind die "DegreesCelsius"  doch schon "Kelvins", aber das will keiner, der "DegreesCelsius" schrieb

In[52]:= (Quantity[-8., "DegreesCelsius"] -  Quantity[-.5, "DegreesCelsius"])/2
Out[52]= Quantity[-3.75, "DegreesCelsiusDifference"]

In[79]:= UnitConvert[(Quantity[-8., "DegreesCelsius"] + Quantity[-.5, "DegreesCelsius"])/2, "DegreesCelsius"]
Out[79]= Quantity[-4.25, "DegreesCelsius"]

In[72]:= Mean[{Quantity[-8., "DegreesCelsius"], Quantity[-.5, "DegreesCelsius"]}]
Out[72]= Quantity[-4.25, "DegreesCelsius"]

In[71]:= -8. + 3.75 + 3.75
Out[71]= -0.5

(* soweit gut *)


In[84]:= UnitConvert[ Quantity[-8., "DegreesCelsius"] + Quantity[-.5, "DegreesCelsius"], "DegreesCelsius"]
Out[84]= Quantity[264.65, "DegreesCelsius"]

In[85]:= 273.15 - 8.5
Out[85]= 264.65

In[82]:= UnitConvert[ Quantity[8., "DegreesCelsius"] + Quantity[.5, "DegreesCelsius"], "DegreesCelsius"]
Out[82]= Quantity[281.65, "DegreesCelsius"]

In[86]:= 273.15 + 8.5
Out[86]= 281.65


die letzten beiden sind falsch in der Einheit.

In[92]:= $Version
Out[92]= "14.2.1 for Microsoft Windows (64-bit) (March 17, 2025)"


Grüsse

Udo.

_______________________________________________
DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
http://www.mathematica.ch/mailman/listinfo/demug
Archiv: http://www.mathematica.ch/archiv.html

*******************************************************************************
   Dr. Stefan Welke
   In der Wehrhecke 29
   D 53125 Bonn
   phone: +49228250772
*******************************************************************************

_______________________________________________
DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
http://www.mathematica.ch/mailman/listinfo/demug
Archiv: http://www.mathematica.ch/archiv.html

Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html