Eignet sich scipy fuer Berechnungen mit Einheiten?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Nebelhom
User
Beiträge: 155
Registriert: Mittwoch 19. Mai 2010, 01:31

Samstag 28. Juli 2012, 02:12

Hi,

wie der Titel sagt, kann man mit Scipy auch Berechnungen mit physikalischen Einheiten durchfuehren? Ich habe in der Doku bisher nur eine Referenz zu der CODATA database gefunden, die die Einheiten fuehrt, aber so richtig einen Verweis darauf, wie man mit Einheiten rechnet, habe ich nicht gefunden.

Bei "mit Einheiten rechnen" meine ich, dass man zum Beispiel 1 m + 1 km berechnen kann, ohne gross selber mit Konvertierungen aktiv zu werden.

Ist das moeglich oder sollte ich lieber auf soetwas wie ScientificPython zurueckgreifen? Das macht genau, was ich will, das letzte Update war jedoch 2007 und ich bin mir nicht sicher, ob das Projekt noch aktiv ist. Mit den unaufhaltsamen, jedoch sehr langsamen Umstellungen verschiedenster Projekte auf Python 3 haette ich "eigentlich" gerne eins, dass noch aktiv ist... ;)

Danke schonmal.

Nebs
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Samstag 28. Juli 2012, 20:40

Code: Alles auswählen

In [1]: from scipy.constants import *

In [2]: 60*minute == 1*hour
Out[2]: True

In [3]: (100*kilo)/(1*hour)
Out[3]: 27.77777777777778
Ob das sinn macht musst du selber wissen.
Nebelhom
User
Beiträge: 155
Registriert: Mittwoch 19. Mai 2010, 01:31

Sonntag 29. Juli 2012, 01:43

@Sr4l: Danke fuer die Antwort. Also "Sinn" machen im Sinne von, warum ich diese Antwort bekomme, ist schon klar. Ist nur natuerlich leider nicht, was ich mir erhofft habe ;)

Wollte natuerlich im Idealfall etwas, dass zum Beispiel bei 2 km / 2 s als Resultat 1 km s^-1 gibt, aber das war mir von Anfang klar, dass das nicht klappt ;)

So wie ich das sehe, beschreiben deine Beispiele ja nur Platzhalter fuer passende Multiplikatoren (minute=60, hour=3600, kilo=1000)...

Nachtrag:
Ok, ich habe in der Doku, den Teil gefunden, auf den du anspielst.

I guess, that'll have to do ;)
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Sonntag 29. Juli 2012, 11:35

http://docs.scipy.org/doc/scipy/referen ... tants.html

Genau schön ist es nicht. Man muss immer noch wissen was man tut. Am Ende kommen immer SI Einheiten raus, aber man kann nicht sagen ob es `m`oder `m/s^2` sind.

Wenn du noch was schöneres findest kannst du es hier schreiben. Ich kenne mich mit SciPy nur wenig aus, nutze es nur für den Import von Matlab her.
Nebelhom
User
Beiträge: 155
Registriert: Mittwoch 19. Mai 2010, 01:31

Sonntag 29. Juli 2012, 12:19

Vollständigkeitshalber erwaehne ich jetzt noch das Modul quantities, was auf den ersten Blick im Grunde dasselbe macht wie Scientific Python, nur etwas neuerem Datum ist.

Beispiel:

Code: Alles auswählen

import quantities as pq

p1 = 20 * pq.kg
p2 = 1 * pq.m
p3 = 10 * pq.s**2

print p1/(p2*p3)
Output waere dabei

Code: Alles auswählen

2.0 kg/(m*s**2)
Natuerlich muss man auf solche Sachen achten wie:

Code: Alles auswählen

p1 = 20 * pq.kg
p2 = 1 * pq.m**(-1)
p3 = 10 * pq.s**(-2)

print p1*p2*p3
Denn das ergibt dann 200.0 kg/(m*s**2)

Ist auf jeden Fall ein Schritt in die richtige Richtung...
Antworten