Seite 1 von 1
WIe "solved" man in Python? Was mache ich verkehrt?
Verfasst: Mittwoch 1. Oktober 2014, 15:47
von Basilius Sapientia
Liebe Ihr!
Ich habe diesen Code geschrieben:
Code: Alles auswählen
from sympy import solve, Eq, Symbol
import numpy as np
pa = Symbol('pa')
pb = Symbol('pb')
DHvap = Symbol('DHvap')
Ryd = Symbol('Ryd')
Ta = Symbol('Ta')
Tb = Symbol('Tb')
equ = Eq(-((DHvap) / (Ryd) )*(Ta**(-1) - Tb**(-1)))/(np.log(pa/pb))
print solve(equ)
Doch leider will er mir kein Resultat liefern :/ ... was tun? Ich würde gerne Tb in der Formel herausfinden:
Code: Alles auswählen
ln \left( \frac{p_1}{p_2} \right) = - \frac{\Delta_{vap}H}{R} (T_1^{-1}-T_2^{-1})
http://www.fotos-hochladen.net/uploads/ ... ok0ga7.gif
Was läuft dort schief? Wie kann ich das anders machen? Vielen Dank schon mal für eure Hilfe!!
Re: WIe "solved" man in Python? Was mache ich verkehrt?
Verfasst: Mittwoch 1. Oktober 2014, 16:14
von EyDu
Wenn etwas nicht funktioniert, dann solltest du auch erzählen was nicht funktioniert. Dazu gehören unter anderem das erwartete Ergebnis oder, wie in diesem Fall, die Fehlermeldung, inklusive des gesamten Tracebacks. Mit "funktioniert nicht" können wir dir kaum helfen.
In diesem Fall ist mindestens der np.log-Aufruf fehlerhaft. Du kannst nicht einfach SymPy und NumPy vermischen. Wenn du eine Gleichung in SymPy aufstellen möchtest, dann musst du auch die Methoden aus dem Modul verwenden. In diesem Fall also sympy.log.
Re: WIe "solved" man in Python? Was mache ich verkehrt?
Verfasst: Mittwoch 1. Oktober 2014, 16:24
von BlackJack
@Basilius Sapientia: Die Klammerung in der ``equ = …``-Zeile stimmt nicht. Wenn man dann noch das mit der falschen log-Funktion behebt und dann noch sagt für welches Symbol man das lösen möchte, also nicht nur im Beitrag sondern auch im Code, bekommt man auch ein Ergebnis.

Re: WIe "solved" man in Python? Was mache ich verkehrt?
Verfasst: Mittwoch 1. Oktober 2014, 16:27
von Basilius Sapientia
BlackJack hat geschrieben:@Basilius Sapientia: Die Klammerung in der ``equ = …``-Zeile stimmt nicht. Wenn man dann noch das mit der falschen log-Funktion behebt und dann noch sagt für welches Symbol man das lösen möchte, also nicht nur im Beitrag sondern auch im Code, bekommt man auch ein Ergebnis.

Vielen Dank

... allerdings weiß ich nicht WIE ich das machen soll. Könnten sie es mir bitte sagen? Was soll ich machen, damit es funktioniert?
Re: WIe "solved" man in Python? Was mache ich verkehrt?
Verfasst: Mittwoch 1. Oktober 2014, 16:34
von EyDu
Basilius Sapientia hat geschrieben:Vielen Dank

... allerdings weiß ich nicht WIE ich das machen soll. Könnten sie es mir bitte sagen? Was soll ich machen, damit es funktioniert?
Was von den drei Punkten? Die Klammerung? Die log-Funktion? Das Symbol? Du musst deine Fragen etwas genauer Stellen.
Re: WIe "solved" man in Python? Was mache ich verkehrt?
Verfasst: Mittwoch 1. Oktober 2014, 16:35
von BlackJack
@Basilius Sapientia: Wo liegt denn jetzt genau das Problem? `Eq()` wird benutzt um ein Gleichungsobjekt zu erzeugen. Dazu muss die gesamte linke Seite der Gleichung *in* den Klammern stehen. Und nicht teilweise drin und teilweise draussen.
Re: WIe "solved" man in Python? Was mache ich verkehrt?
Verfasst: Mittwoch 1. Oktober 2014, 17:03
von Basilius Sapientia
EyDu hat geschrieben:Basilius Sapientia hat geschrieben:Vielen Dank

... allerdings weiß ich nicht WIE ich das machen soll. Könnten sie es mir bitte sagen? Was soll ich machen, damit es funktioniert?
Was von den drei Punkten? Die Klammerung? Die log-Funktion? Das Symbol? Du musst deine Fragen etwas genauer Stellen.
Ich würde gerne T_2 in dieser Formel isolieren:
[img]
http://www.fotos-hochladen.net/uploads/ ... t6.gif/img]
Leider habe ich keine Ahnung wie ich das machen sollte. Also habe ich die Antwort von "PreludeAndFugue" auf dieser Seite:
http://stackoverflow.com/questions/4449 ... e-variable ... versucht anzuwenden. Doch leider hat es nicht ganz so geklappt wie ich wollte. Hier die Fehlermeldung:
Code: Alles auswählen
Traceback (most recent call last):
File "/home/basilius/MEGAsync/Q5/Aflevering_5/Regneri_afl5.py", line 12, in <module>
equ = ((-(DHvap/Ryd)*(Ta**(-1)-Tb**(-1)))/(np.log((pa)/(pb))))
AttributeError: log
[Finished in 2.6s]
Hier der Code [verändert]:
Code: Alles auswählen
from sympy import solve, Eq, Symbol, log
import numpy as np
import math
pa = Symbol('pa')
pb = Symbol('pb')
DHvap = Symbol('DHvap')
Ryd = Symbol('Ryd')
Ta = Symbol('Ta')
Tb = Symbol('Tb')
equ = ((-(DHvap/Ryd)*(Ta**(-1)-Tb**(-1)))/(log((pa)/(pb))))
print solve(Eq(equ, Tb))
Symbole in der Formel und Symbole in dem Script:
p1=pa
p2=pb
H_{vap}=DHvap
R=Ryd
T1=Ta
T2=Tb
T2 [also im Script Tb] ist das, was ich finden muss. Hoffentlich kann mir Jemand helfen?
Jedenfalls gibt er keine errors mehr. Doch ich kann das Resultat nicht gebrauchen. Den ersten ist es nicht richtig und zweitens wollte ich Tb finden. Was tun?
[{DHvap: Ryd*Ta*Tb**2*log(pa/pb)/(Ta - Tb)}]
[Finished in 1.0s]
Re: WIe "solved" man in Python? Was mache ich verkehrt?
Verfasst: Mittwoch 1. Oktober 2014, 18:41
von BlackJack
@Basilius Sapientia: Du hast schon wieder die Klammerung falsch. Schau doch mal wie viele und welche(s) Argument Du `solve()` übergibst.