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: 14251
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                    
[]
“All tribal myths are true, for a given value of 'true'.” — Terry Pratchett, The Last Continent
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: 14251
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Da gibt's wahrscheinlich was von `numpy` oder `scipy`.
“All tribal myths are true, for a given value of 'true'.” — Terry Pratchett, The Last Continent
Antworten