Programmierung eines Einheitenumwandlers für Physik

L

Lumakrieger

Hallo Leute,

mein Physiklehrer hat letztens berichtet, dass ein großteil der Arbeit von Physikern - sei es an der Uni oder im privaten Forschungskeller - darin besteht, die berechneten komplexen Formeln zu kürzen, also auch die Einheiten. Also z.B: "1 A * 1 s" in "1 Coulomb" umschreiben. Da hab ich mir gedacht: Das muss doch computergestützt eigentlich sehr schnell gehen. Für das Beispiel 1A*1s rechnet man mit dem Computer 1*1 aus und bekommt folglich 1 als Ergebnis. Nun meine Frage: Gibt es Programme die zusätzlich noch A*s "ausrechnen" und Coulomb ausgeben, sodass man als Endergebnis die 1 und Comlomb hat (1 C) Dies ist natürlich ein ganz ganz simples Beispiel. Das Programm müsste natürlich alle möglichen Variationen von Einheiten (Gewicht: kg, pound, usw.) kennen und auf einfach Grundeinheiten umrechnen können. Es müsste alle Beziehungen/Formeln von allenmöglichen Physikdisziplinen haben, um einem Physiker die alltägliche Arbeit zu erleichtern. Ist es wirklich so, dass es noch kein Programm dafür gibt und dass die Physiker immernoch stundenlang "Einheitengleichungen" lösen müssen? Und wenn es solche Programme gibt, wie heißen diese? Ich habe bisher irgendwie noch keine gefunden.

Gruß, luma
 
Hi,

sicher lässt sich das auch automatisiert erledigen, die meisten (wenn nicht sogar alle) Einheiten für physikalische Messgrößen sind ja sozusagen "genormt" (siehe SI-Einheiten). Das heißt, man bräuchte im Prinzip eigentlich nur eine vollständige Tabelle aller definierten SI-Einheiten, in der man nachschlägt.

Ein Problem dabei wird nur sein, dass die Umwandlung der sieben Basiseinheiten in "höhere" SI-Einheiten oft in mehreren Schritten durchgeführt wird und nicht immer gleich eindeutig ist. Fallbeispiel: m / (s^2) - ist das nun Geschwindigkeit pro Zeit (v / s, mit v = m / s) oder Beschleunigung (a = v / s = (m / s) / s = m / (s^2))? Das ist als Beispiel zwar ziemlich einfach, sollte aber schon zeigen, dass eine Umwandlung iterativ oder rekursiv eben nicht immer ganz einfach umzusetzen ist. Bei komplizierteren Formeln steigt der Rechenaufwand dann natürlich enorm.

Unter Umständen muss die Beziehung der Einheiten zueinander vorher auch noch zusätzlich umgestellt werden (Beispiel: m / (s^2) = m / s / s). Das ist nicht immer gleich offensichtlich und geht zum Teil schon in den Bereich der KI.

Und dann gibt es da ja auch noch die Präfixe für die Größenordnungen, die mit berücksichtigt bzw. in SI-Einheiten verwandelt werden müssen. Beispiel: mm = 10^-3 m.

Ganz davon abgesehen wurde mir gesagt, dass man möglichst lange die Einheiten bei behalten und erst ganz zum Schluss umrechnen soll. Dadurch hat man nämlich noch eine zusätzliche Möglichkeit, die Richtigkeit der Berechnung (sozusagen "on the fly") zu kontrollieren. Wenn man beispielsweise komplexere elektrische Netze durch rechnet, kann man sich schnell mit den Widerständen verzetteln und kriegt dann am Ende völlig falsche Größen raus.

Grüße, D.

Edit: Ich hab mich zwar noch nicht so ausgiebig damit beschäftigt, aber evtl. können Derive oder Matlab solche Aufgaben (teilweise) für dich übernehmen? Müsstest du mal Google befragen.
 
m / (s^2) ist ja ganz eindeutig Beschleunigung, weil eben 2 "s" vorkommen (s^2 = s s). Man betrachtet ja hier nur die Einheiten. Die Zahlen sind schon unabhängig von den Einheiten ausgerechnet worden. Das müsste doch eigentlich auch bei längeren komplexeren Formeln funktionieren, vorausgesetzt man füttert das Programm mit allemöglichen Beziehungen und Einheiten. Und wenn man sich auf Standardeinheiten für die Ausgabe einigt, dann wüsste das Programm auch, welches Ziel zu erreichen ist. Wäre das nicht optimal für Prolog?

Gruß, luma
 
Fallbeispiel: m / (s^2) - ist das nun Geschwindigkeit pro Zeit (v / s, mit v = m / s) oder Beschleunigung (a = v / s = (m / s) / s = m / (s^2))?

Wo ist denn da der inhaltliche Unterschied? Die Geschwindigkeit ist die Ableitung des Weges nach der Zeit (v=ds/dt), die Beschleunigung die Ableitung der Geschwindgkeit nach der Zeit (a=dv/dt).

Die Beschleunigung sagt also nichts anderes aus als die Veränderung der Geschwindigkeit mit der Zeit, sollte sich die Beschleunigung eines Körpers ändern musst Du dann mit da/dt rechnen. $\frac{m}{s^2}$ kann man vielleicht inhaltlich anders interpretieren, mathematisch/physikalisch ist sie jedoch sind absolut eindeutig.
 
Hi,

hab ich irgendwo gesagt, dass es da einen inhaltlichen Unterschied gibt? Für Menschen ist da natürlich schnell offensichtlich, dass es sich eigentlich nur um Beschleunigung handeln kann. Ein Computer ist da aber grundsätzlich erstmal dumm und muss das ganze Schritt für Schritt auflösen, wenn eine SI-Einheit das Ziel ist. Und genau da fängt es nämlich an: Wird die Einheitenformeln schrittweise auseinander genommen (m / s^2 = m / s / s) und dann in einzelnen Termen umgewandelt oder wird die gesamte Formel in einer Liste nachgeschlagen?

Letzteres dürfte wohl nicht so sinnvoll sein, denn es kann ja durchaus sein, dass bei sehr komplizierten Formeln eine einzelne SI-Einheit nicht mehr ausreicht. Man muss also die Formeln in Terme zerlegen und diese einzeln als SI-Einheiten auswerten: Aus m / s wird v, das zweite s im Nenner ist schon eine Basis-Einheit. Das Ergebnis muss dann nochmals nachgeschlagen werden und führt dann erst im zweiten Schritt zur Beschleunigung.

Das ist ja auch nur ein Beispiel, mit dem ich mal zeigen wollte, dass es bei komplexen Formeln schnell sehr rechenaufwändig werden kann. Vielleicht nicht unbedingt das beste Beispiel, aber ein besseres ist mir auf die Schnelle nicht eingefallen... :rolleyes:

Grüße, D.
 
Wird die Einheitenformeln schrittweise auseinander genommen (m / s^2 = m / s / s) und dann in einzelnen Termen umgewandelt oder wird die gesamte Formel in einer Liste nachgeschlagen?

Jain. Erst werden die eizelnen Einheiten in die Basisgrößen zerlegt (I, I_v, m, n, s, t, T) und dann in möglichst wenige Einheiten zusammengelegt, wenn das nicht ohne Restbasisgrößen möglich, bzw eher unüblich ist, dann wird die nächstgrößere Menge an Einheiten verwendet.
 
Zurück