ubuntuusers.de

PhysikPy - Physik in Python verwenden

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

useYbrain

Anmeldungsdatum:
14. Januar 2007

Beiträge: 696

Bobbin hat geschrieben:

Ich fände es auch schön (und es wäre physikalischer), wenn nicht nur Zahlen auftauchen würden, sondern die Werte der physikalischen Größen auch Einheiten hätten (vielleicht könnte dabei auf das Programm units zurückgegriffen werden).

Hast du dir mal die aktuelle SVN gezogen? Dort steht jeweils in den XFF (XML Formula File)
in der Attribute "unit" welchen Wert das Ergebnis der Formel hat. Auch beim Eintippen
steht, welche Einheit man angeben soll.

So kannst du das ganze testen:

mkdir pyformulas
svn co https://svn.ubuntux.net/trunk pyformulas
cd pyformulas
python [reader,calko].py xff/biology/bmi.xff

bmi.xff ist die einzige XFF, die schon vollständig das Einheit-Prinzip unterstützt.

Grüsse,
Pot

Bobbin

Avatar von Bobbin

Anmeldungsdatum:
17. Mai 2007

Beiträge: 161

Wohnort: Mannheim

Oh, das hatte ich tatsächlich nicht gesehen, dass schon Einheiten unterstützt werden. ☺

Aber in der bmi.xff ist die Verwendung etwas seltsam:
Da steht z. B.:
<formula var="m" unit="Meter">kg / (m * bmi)</formula>
Besser wäre m. E.:
<formula var="l" unit="m">sqrt(m / bmi)</formula>

Die Unterscheidung zwischen Variable und Einheit hat schon eine gewisse Bedeutung. Für var="kg" unit="Kilogramm" oder var="m" unit="Meter" wäre auch die Unterscheidung zwischen var und unit nicht sehr sinnvoll... Im Prinzip gibts ja zu einer physikalischen Größe (z. B. Körpergröße) eine Variable (z. B. l), um diese Größe verkürzt in einer Formel repräsentieren zu können und dann noch die Einheit des Werts der Größe (z. B. m).
(In dem Beispiel oben ist auch noch das Problem, dass versucht wird, bei der Körpergröße diese selbst zu verwenden. Da die in der bmi-Formel quadratisch vorkommt, braucht man zur Berechnung die Wurzel.)

useYbrain

Anmeldungsdatum:
14. Januar 2007

Beiträge: 696

Bobbin hat geschrieben:

Die Unterscheidung zwischen Variable und Einheit hat schon eine gewisse Bedeutung. Für var="kg" unit="Kilogramm" oder var="m" unit="Meter" wäre auch die Unterscheidung zwischen var und unit nicht sehr sinnvoll... Im Prinzip gibts ja zu einer physikalischen Größe (z. B. Körpergröße) eine Variable (z. B. l), um diese Größe verkürzt in einer Formel repräsentieren zu können und dann noch die Einheit des Werts der Größe (z. B. m).

Das mit den Variablen kg, bmi und m war nur eine Zwischenlösung, weil es im Moment,
wo die bmi erstellt wurde, noch keine Einheitseingaben gab.
Könntest du mal ein konkretes Beispiel einer XFF posten? Bin nicht ganz sicher, ob ich dich
richtig verstanden habe.

Bobbin hat geschrieben:

(In dem Beispiel oben ist auch noch das Problem, dass versucht wird, bei der Körpergröße diese selbst zu verwenden. Da die in der bmi-Formel quadratisch vorkommt, braucht man zur Berechnung die Wurzel.)

Ou, das stimmt. Da soll natürlich m = sqrt(kg/bmi) stehen. Danke für den Hinweis.
Den Fehler ist nun in Revision 81 korrigiert.

Grüsse,
Pot

Bobbin

Avatar von Bobbin

Anmeldungsdatum:
17. Mai 2007

Beiträge: 161

Wohnort: Mannheim

Pot hat geschrieben:

Könntest du mal ein konkretes Beispiel einer XFF posten? Bin nicht ganz sicher, ob ich dich
richtig verstanden habe.

Das hier wäre ein Beispiel für so eine xff (bin von der für den BMI ausgegangen), ich vermute, dass das auch so oder so ähnlich gedacht war, wenn es die Attribute var und unit gibt:

<xff version="0.2.0-pre1">
 	        <name>BMI</name>
 	        <basicformula>bmi = m / l^2</basicformula>
 	        <description>Formel:
 	m ist die Masse der Person
 	l ist die Groesse der Person
 	bmi ist der errechnete BMI der Person
 	Idealer BMI bei Frauen ist zwischen 19 und 24
 	Idealer BMI bei Maennern ist zwischen 20 bis 25
 	        </description>
 	        <link>http://de.wikipedia.org/wiki/Body-Mass-Index</link>
 	        <version>0.2</version>
 	
 	        <formulas>
 	                <formula var="bmi" unit="kg/m^2">kg / m ** 2</formula>
 	                <formula var="m" unit="kg">bmi * m ** 2</formula>
 	                <formula var="l" unit="m">sqrt(kg/bmi)</formula>
 	        </formulas>
</xff>

useYbrain

Anmeldungsdatum:
14. Januar 2007

Beiträge: 696

Okay, warum jetzt m besser ist als kg oder l als m versteh ich immer noch nicht.
Wenn das so international gilt, dann ok 😉

Achtung, die Formeln sollten natürlich auch noch mit den neuen Variablen ergänzt
werden.

Grüsse,
Pot

adun Team-Icon

Avatar von adun

Anmeldungsdatum:
29. März 2005

Beiträge: 8606

Pot hat geschrieben:

Naja obwohl man das Phi auch zu Mathematik zuordnen könnte

Im (ugs.) universitären Betreich steht das Phi meist für Physik. (liegt hpt. an der Aussprache und daran, dass das Symbol kewl ist 8) )

Pot hat geschrieben:

Okay, warum jetzt m besser ist als kg oder l als m versteh ich immer noch nicht.
Wenn das so international gilt, dann ok

Dabei ist das eigentlich schon sehr deutlich. Was heißt denn l? Liter, Länge?

m ist eine physikalische Größe, d.h. ein Zahlenwert und eine Einheit. Ob das Feinunzen, Hochhäuser (Achtung Galileo Größe 😉 ) oder die SI-Einheit kg ist, spielt keine Rolle. Denkbar schlecht ist Einheiten und Größen zu mischen, weil auch Größen eine Zahleneinheit (Gewichtung) haben können gibt das Fehler ohne Ende.
Die Größenabkürzung (hier m) gilt übrigens nicht international, auch wenn man aus praktischen Gründen immer bestimmte Buchstaben benutzt (bei selten benutzten Größen kann das anders aussehen). Wenn ihr das seriös betrieben wollt und so sieht es aus, dann solltet ihr an prominenter Stelle definieren, was welcher Buchstabe bedeutet. Das erleichtert Leuten, die etwas Beitragen wollen, die Arbeit enorm und führt zu Wartbarkeit des Codes.

Auch wenn ich oben geschrieben habe, dass die Einheit keien Rolle spielt, ist das bei Funktionen in der Informatik natürlich nicht so. Da solltet ihr euch Gedanken zur Abstraktion zu SI (Système international d'unités, ISO 1000) machen. Instanz ist da übrigens die IUPAP (International Union of Pure and Applied Physics).

Ihr habt euch da wahrscheinlich noch nicht so den Kopf drum gemacht, aber Größen und Einheiten sind im theoretischen Teil und im Aufbau eurer Lib von entscheidener Wichtigkeit, da solltet ihr euch wirklich vorallem am Anfang mit auseinander setzen. Wenn irgendwo was unklar ist, helfe ich gerne.

useYbrain

Anmeldungsdatum:
14. Januar 2007

Beiträge: 696

Danke für deine Erklärungen und dein Hilfeangebot und entschuldigung für die späte Antwort.
Das werde ich mir, wenn ich wieder mehr Zeit habe, genauer anschauen und mit
BasterTWO darüber sprechen und eine Lösung finden.

MfG,
Pot

useYbrain

Anmeldungsdatum:
14. Januar 2007

Beiträge: 696

Gut, ich hab mich mit dem Thema befasst und sehe jetzt ein, warum
man Grössen und Einheiten nicht mischen sollte. Eigentlich wollte ich
noch mit BasterTWO darüber diskutieren, konnte ich aber noch nicht
erreichen.

Leider gibts da ein kleines Problem:

Bobbin hat geschrieben:

<xff version="0.2.0-pre1">
 	        <name>BMI</name>
 	        <basicformula>bmi = m / l^2</basicformula>
 	        <description>Formel:
 	m ist die Masse der Person
 	l ist die Groesse der Person
 	bmi ist der errechnete BMI der Person
 	Idealer BMI bei Frauen ist zwischen 19 und 24
 	Idealer BMI bei Maennern ist zwischen 20 bis 25
 	        </description>
 	        <link>http://de.wikipedia.org/wiki/Body-Mass-Index</link>
 	        <version>0.2</version>
 	
 	        <formulas>
 	                <formula var="bmi" unit="kg/m^2">kg / m ** 2</formula>
 	                <formula var="m" unit="kg">bmi * m ** 2</formula>
 	                <formula var="l" unit="m">sqrt(kg/bmi)</formula>
 	        </formulas>
</xff>

So ist unser Programm nicht mehr lauffähig, da die jeweiligen Einheitszeichen
in der Formel lediglich zum Inhalt der Variable dieses Einheitszeichens zugreifen
(Formelzeichen).

Ich werde mich damit noch auseinandersetzen und dann eine kleine Liste
erstellen, die die Grösse und dessen Einheit und Einheitszeichen enthält.
Gibt es evtl. schon eine (vollständige) vom SI?

Grüsse,
Pot

adun Team-Icon

Avatar von adun

Anmeldungsdatum:
29. März 2005

Beiträge: 8606

Hier ist eine Liste, das ist aber wie gesagt bei Formelzeichen nur der "common sense". Unkommentiert kann F=m*a alles heißen, allerdings "weiß" jeder was gemeint ist. (F(fett oder mit einem Pfeil drauf) Kraftvektor, m Masse, und a(Fett oder mit einem Pfeil drauf) Beschleunigungsvektor)

Internationales_Einheitensystem

Gerade bei abgeleiteten Einheiten, die ja häufig auch mehrfach vorkommen, gibt es dann auch schon mal Unterschiede und da ist es dann besonders wichtig pedantisch zu werden. Frag z.B. mal Leute nach dem Luftdruck, von Bar über Torr, Atmosphären, hPa und Pa gibt es da einige Möglichkeiten, die auch sinnvoller sein können als das "richtige" Pa. Kommt nur doof, wenn dein Programm kg/s²*m erwartet und g/s²*m bekommt.

useYbrain

Anmeldungsdatum:
14. Januar 2007

Beiträge: 696

Hallo

So, nach ner langen Pause haben BasterTWO und ich wieder kontakt und möchten an pyformulas weiterarbeiten.
Um nochmals sicher zu gehen, stimmt folgendes Vorgehen:

Ursprüngliche Variable:

bmi = kg / m^2

Nun nach m auflösen um die Länge des Körpers zu wissen:

bmi = kg / m^2     // *(m^2)
bmi * m^2 = kg        // /bmi
m^2 = kg / bmi       // radizieren
m = sqrt(kg/bmi)

So nun stimmen die Variablen ja nicht ganz.

l = sqrt[kg/(kg/m^2)]

So ists nun korrekt?

Grüsse
Pot

adun Team-Icon

Avatar von adun

Anmeldungsdatum:
29. März 2005

Beiträge: 8606

Wenn du den Doppelbruch auflöst bekommst du: sqrt((kg*m^2)/(kg)) → kg fliegt raus m bleibt über, was gut ist für eine Länge 😉

useYbrain

Anmeldungsdatum:
14. Januar 2007

Beiträge: 696

Ahja dann hab ich noch

l = m

Und wenn jetzt jemand seine Länge wissen muss, muss er nur seine Länge in Meter
angeben und schon kann unser Programm ihm sagen, wie Lange sein Körper ist?

Gibt doch irgendwie keinen Sinn mehr 😛

Grüsse
Pot

adun Team-Icon

Avatar von adun

Anmeldungsdatum:
29. März 2005

Beiträge: 8606

Dann verstehe ich deine Frage nicht: Es ist alles richtig was du geschrieben hast.

useYbrain

Anmeldungsdatum:
14. Januar 2007

Beiträge: 696

Die bmi-Formeldatei beinhaltet folgende Formeln:

<formula var="bmi" unit="kg/m^2">kg / m ** 2</formula>
<formula var="kg" unit="Kilogramm">bmi * m ** 2</formula>
<formula var="m" unit="Meter">sqrt(kg/bmi)</formula>

Heisst:

bmi = kg / m^2
kg = bmi * m^2
m = sqrt(kg/bmi)

So und nun kann man pyformulas mit dieser Formeldatei starten und der Benutzer will z.B. seine
Körpergrösse wissen. Dann tippt er m ein (für Meter, ja sollte eigentlich l heissen, ich weiss) und
das Programm fragt ihn ab, wie sein BMI sowie sein Gewicht ist. Aus den Angaben berechnet
pyformulas die Länge des Körpers und gibt sie aus.

Wenn ich jetzt die Formeln aber so in die Datei schreiben würde, wie empfohlen,
dann bekäme ich folgendes:

bmi = kg / m^2
m = kg
l = m

Das bringt schlussendlich nichts mehr ausser, dass man den BMI berechnen könnte, oder?

edit
Okay, vielleicht ist das ganze ein bisschen verwirrend :S
Meine Frage ist eigentlich, welche Formel nun korrekt ist:

m = sqrt(kg/bmi)


oder

l = sqrt(kg/bmi)


oder

l = sqrt[kg/(kg/m^2)]


was dann vollständig aufgelöst

l = m


ergibt.

Grüsse
Pot

adun Team-Icon

Avatar von adun

Anmeldungsdatum:
29. März 2005

Beiträge: 8606

Ach jetzt verstehe ich vielleicht wo du dich aufhängst. Der BMI wird nicht direkt mit der Länge berechnet, sondern mit einer Fläche, die sich aus der Länge erst ergibt.

bmi = m/a

a = l * l

wobei:
l in [m]
m in [kg]

> bmi in [kg/m^2] Mit Länge und Gewicht kannst du den bmi berechnen, mit bmi und Gewicht die Länge und mit bmi und Länge das Gewicht. Das ist alles.