Sympy Solve Rechendauer reduzieren

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
hitchko
User
Beiträge: 2
Registriert: Montag 16. Januar 2023, 14:15

Hallo zusammen,

will mit Hilfe der sympy.solve Funktion eine Gleichung nach einer Variablen umstellen und mir das Ergebnis ausgeben lassen.
Das Programm rechnet jedoch ziemlich lange. Hat jemand eine Idee wie man die Rechenzeit verringern könnte? Evtl. die Lösungsmenge einschränken? Falls ja, wie könnte ich das tun?

Code: Alles auswählen

import sympy as sy
from sympy.solvers import solve
from sympy import Symbol

w=0.4
v0=2
g=9.81
h=0.24
h2=0.12
q = Symbol('q')


loesung=solve(-w + ((v0**2)/g) *(1- (q**2))**0.5 *(q +((q**2)+((2*h2*g)/(v0**2))**0.5)), q) #Berechnung von Sinus(x) (alpha)
print(loesung)
Vielleicht könnte mir dabei jemand helfen.


Vielen Dank :)
Christian
Benutzeravatar
__blackjack__
User
Beiträge: 14065
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@hitchko: Symbolisch bekommt Sympy das so nicht nach `q` aufgelöst, ist die Frage ob Du nicht besser gleich einen numerischen Lösungsansatz verwendest.

Code: Alles auswählen

from sympy import S, Symbol, symbols, pprint
from sympy.solvers import solve

w, v0, g, h2 = symbols("w v0 g h2", real=True)
q = Symbol("q")

expr = -w + ((v0**2) / g) * (1 - (q**2)) ** S("1/2") * (
    q + ((q**2) + ((2 * h2 * g) / (v0**2)) ** S("1/2"))
)
pprint(expr)
results = solve(expr, q)
print(results)
Ausgabe:

Code: Alles auswählen

            ________ ⎛                 ______⎞
       2   ╱      2  ⎜ 2              ╱ g⋅h₂ ⎟
     v₀ ⋅╲╱  1 - q  ⋅⎜q  + q + √2⋅   ╱  ──── ⎟
                     ⎜              ╱     2  ⎟
                     ⎝            ╲╱    v₀   ⎠
-w + ─────────────────────────────────────────
                         g                    
[]
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
hitchko
User
Beiträge: 2
Registriert: Montag 16. Januar 2023, 14:15

Vielen Dank!
Wie könnte man das numerisch lösen?
Benutzeravatar
__blackjack__
User
Beiträge: 14065
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Da gibt's wahrscheinlich was von `numpy` oder `scipy`.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten