Hallo Stefan und weitere Freundinnen und Freunde des Temperaturrechnens,
der Vollständigkeit halber noch mit den "DegreesFahrenheit[Difference]",
In[26]:= UnitConvert[Quantity[.0, "DegreesFahrenheit"], #] & /@
{"Kelvins", "DegreesCelsius"}
Out[26]= {Quantity[255.372, "Kelvins"], Quantity[-17.7778,
"DegreesCelsius"]}
wobei zu brachten ist
In[27]:= UnitConvert[Quantity[1., "Kelvins"], "DegreesFahrenheitDifference"]
Out[27]= Quantity[1.8, "DegreesFahrenheitDifference"]
In[52]:= (* correct *)
Quantity[10., "DegreesFahrenheit"] + Quantity[3.,
"DegreesFahrenheit"]
Out[52]= Quantity[517.967, "Kelvins"]
In[53]:= (* Probe *)
Quantity[255.372, "Kelvins"] + UnitConvert[Quantity[10.,
"DegreesFahrenheitDifference"], "Kelvins"] + Quantity[255.372, "Kelvins"] +
UnitConvert[Quantity[3., "DegreesFahrenheitDifference"], "Kelvins"]
Out[53]= Quantity[517.966, "Kelvins"]
In[56]:= (* correct *)
UnitConvert[Quantity[10., "DegreesFahrenheit"] + Quantity[3.,
"DegreesFahrenheit"], "DegreesFahrenheit"]
Out[56]= Quantity[472.67, "DegreesFahrenheit"]
In[57]:= (* Probe *)
UnitConvert[ Quantity[517.967 - 255.372, "Kelvins"],
"DegreesFahrenheitDifference"]
Out[57]= Quantity[472.671, "DegreesFahrenheitDifference"]
In[58]:= (* wiederum falsch, wie schon bei den "DegreesCelsius" *)
Quantity[1., "DegreesFahrenheit"] + Quantity[2.,
"DegreesFahrenheit"] + Quantity[3., "DegreesFahrenheit"]
Out[58]= Quantity[6., "DegreesFahrenheit"]
In[59]:= (* kann man machen, ist aber weder zur Freude von Geheimrat
Planck noch ein Vergnügen für Lord Kelvin *)
Quantity[273.15, "Kelvins"] - Quantity[283.15, "Kelvins"]
Out[59]= Quantity[-10., "Kelvins"]
(* junk in, junk out *)
In[61]:= Quantity[-10., "Kelvins"]
Out[61]= Quantity[-10., "Kelvins"]
Grüsse
Udo.
On 7/19/2025 2:21 PM, Susanne & Udo Krause via demug wrote:
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.
<snip>
_______________________________________________
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
_______________________________________________
DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
http://www.mathematica.ch/mailman/listinfo/demug
Archiv: http://www.mathematica.ch/archiv.html