Sie sind auf Seite 1von 17

Warum man Äpfel und Meter

nicht zusammenzählen kann


über das Rechnen mit Einheiten

Ulrich Hoffmann
uho@xlerb.de

Donnerstag, 14. Oktober 2010


Überblick

• Einheiten
• Rechnen mit Einheiten
• Ein kurzer Blick in das Paket unum

Donnerstag, 14. Oktober 2010


Einheiten
Zeit in Sekunden (s)

Längen in Meter (m)

Temperatur in Grad (K)

Donnerstag, 14. Oktober 2010


Einheiten

Stück - einheitenlos

+ = ???

Was für eine Größenart soll das sein?

Donnerstag, 14. Oktober 2010


Einheiten
Längen in Meter (m)

Massen in Gramm (g)

1kg · m
Kräfte in Newton (N) 1N =
s2

Donnerstag, 14. Oktober 2010


Einheiten

Druck in Pascal (pa)

N kg · m kg
1pa = 1 2 = 1 2 2 = 1
m m ·s m · s2

Donnerstag, 14. Oktober 2010


Rechnen in Python
• ganze Zahlen (beliebig groß)
• Gleitkommazahlen
• einheitenlos
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29)

>>> 2**64
18446744073709551616L

>>> import math; 4*math.atan(1)


3.1415926535897931

>>> aepfel=100
>>> entfernung=7500
>>> aepfel+entfernung
7600
>>>

Donnerstag, 14. Oktober 2010


Unum
http://home.scarlet.be/be052320/Unum.html

• Rechnen mit Einheiten in Python


>>> from unum.units import * # Load a number of common units.

>>> distance = 100*m

>>> time = 9.683*s

>>> speed = distance / time

>>> speed

10.3273778788 [m/s]

>>> speed.asUnit(mile/h)

23.1017437978 [mile/h]

Donnerstag, 14. Oktober 2010


Und jetzt? +

>>> aepfel=100
>>> aepfel
100
>>> entfernung=7500*m
>>> entfernung
7500 [m]
>>> aepfel+entfernung
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "unum/__init__.py", line 394, in __radd__
return Unum.coerceToUnum(other).__add__(self)
File "unum/__init__.py", line 280, in __add__
s, o = self.matchUnits(Unum.coerceToUnum(other))
File "unum/__init__.py", line 269, in matchUnits
raise IncompatibleUnitsError(self, other)
unum.IncompatibleUnitsError: [] can't be converted to [m]
>>>

Donnerstag, 14. Oktober 2010


Galileo Galilei
Wie hoch ist eine Kugel, die 3s vom
Schiefen Turm von Pisa fällt?
1 2
st = s0 − gt
2
s0 = 55m Höhe des Turms
st =?m Höhe zur Zeit t
t = 3s Fallzeit in Sekunden
m
g = 9.81 2 Erdbeschleunigung
s
Donnerstag, 14. Oktober 2010
Fallhöhe
>>> s0=55*m
>>> s0
55 [m]
>>> t=3*s
>>> t
3 [s]
>>> g=9.81*m/(s*s)
>>> g
9.81 [m/s2]

>>> s0-1.0/2.0*g*t*t
10.855 [m]
>>>

Donnerstag, 14. Oktober 2010


Galileo Galilei
Wie lange fällt eine Kugel vom
Schiefen Turm von Pisa?
1 2
st = s0 − gt
2
s0 = 55m Höhe des Turms
st = 0m Ende des Falls
t =?s Fallzeit in Sekunden
m
g = 9.81 2 Erdbeschleunigung
s
Donnerstag, 14. Oktober 2010
Galileo Galilei
Wie lange fällt eine Kugel vom
Schiefen Turm von Pisa?
1 2 1 2
st = s0 − gt 0 = s0 − gt
2 2
1 2 2s0
s0 = gt t =
2
2 g

2s0
t=
g
Donnerstag, 14. Oktober 2010
Fallzeit
>>> s0=55*m
>>> s0
55 [m]
>>> g=9.81*m/(s*s)
>>> g
9.81 [m/s2]
>>> 2*s0/g
11.2130479103 [s2]

>>> import math; math.sqrt(2*s0/g)


Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "unum/__init__.py", line 391, in __float__
return float(self.asNumber(1))
File "unum/__init__.py", line 378, in asNumber
s.checkNoUnit()
File "unum/__init__.py", line 241, in checkNoUnit
raise ShouldBeUnitlessError(self)
unum.ShouldBeUnitlessError: expected unitless, got 11.2130479103 [s2]

Donnerstag, 14. Oktober 2010


Fallzeit

>>> def sqrt(n): return n**0.5


...
>>> sqrt(2*s0/g)
3.34858894317 [s]
>>>

Donnerstag, 14. Oktober 2010


Andere Pakete zur
weiteren Evaluation

• piquant 0.1
• quantities 0.8.0
• units 0.04

Donnerstag, 14. Oktober 2010


Zusammenfassung
• Einheiten
• Rechnen mit Einheiten
• Ein kurzer Blick in das Paket unum

Gibt es Fragen?
Donnerstag, 14. Oktober 2010

Das könnte Ihnen auch gefallen