2016-04-23 5 views
3

Bitte den folgenden CodeSchwierigkeit bei der Verwendung sympy Solver in Python

from sympy.solvers import solve 
    from sympy import Symbol 
    x = Symbol('x') 
    R2 = solve(-109*x**5/3870720+4157*x**4/1935360-3607*x**3/69120+23069*x**2/60480+5491*x/2520+38-67,x) 
    print R2 

Die Ausgabe des Codes ist

[2 * CRootOf (109 * x ** 5-4157 * x * * 4 + 50498 * x ** 3 - 184552 * x ** 2 - 527136 * x + 3507840, 0), 2 * CRootOf (109 * x ** 5 - 4157 * x ** 4 + 50498 * x ** 3 - 184552 * x ** 2 - 527136 * x + 3507840, 1), 2 * SCHROTT (109 * x ** 5 - 4157 * x ** 4 + 50498 * x ** 3 - 184552 * x ** 2 - 527136 * x + 3507840, 2), 2 * CRootOf (109 * x ** 5 - 4157 * x ** 4 + 50498 * x ** 3 - 184552 * x ** 2 - 527136 * x + 3507840, 3), 2 * CRootOf (109 * x ** 5 - 4157 * x ** 4 + 50498 * x ** 3 - 184552 * x ** 2 - 527136 * x + 3507840, 4)]

Kann jemand erklären, was die Antwort darstellen und wie die Ausgabe in herkömmlicher Form erhalten also sagen, wenn die Antwort 0.1,0.2,0.3,0.1,0.4 sympy in der Regel ist die Antwort als [0.1,0.2,0.3,0.1,0.4] gibt

Antwort

1

um numerische Annäherungen in einer Antwort zu erhalten, Sie können N() verwenden. Da Sie mehrere Lösungen haben, können Sie die Liste durchlaufen. Ich habe eine einfachere Gleichung verwendet, da Ihr eine Weile dauert, ...

Try this:

from sympy.solvers import solve 

from sympy import Symbol, N 
x = Symbol('x') 
#R2 = solve(-109*x**5/3870720+4157*x**4/1935360-3607*x**3/69120+23069*x**2/60480+5491*x/2520+38-67,x) 
R2 = solve(x**2+2*x-4,x) 
print R2 
print [N(solution) for solution in R2] 

[EDIT]: Wie weiter unten in den Kommentaren erwähnt, ist die fünfte Ordnung Gleichung kann erst nach sympy Upgrade gelöst werden (zu 1,0 in meinem Fall).

+0

Danke, aber wenn Sie erklären könnten, was die Antworten für z. 2 * CRootOf (109 * x * \ * 5 - 4157 * x * \ * 4 + 50498 * x * \ * 3 - 184552 * x * \ * 2 - 527136 * x + 3507840, 0) –

+0

Wie lange hast du gewartet für ein Ergebnis? Habe innerhalb von 20 Sekunden keine bekommen. – tfv

+0

Es scheint ein Problem zu geben, auf meinem Laptop dauert es nicht viel, aber auf dem Laptop meines Freundes dauert es 31,48 Sekunden –

0

SymPys solve gibt nur symbolische Lösungen. CRootOf ist eine Art, Wurzeln von Polynomen symbolisch darzustellen, deren Wurzeln nicht durch Radikale repräsentiert werden können. Wenn Sie nur an numerischen Lösungen interessiert sind, können Sie N für jeden der von @tfv vorgeschlagenen Begriffe verwenden oder nsolve verwenden, wodurch die Gleichung numerisch gelöst wird. Im Allgemeinen ist der symbolische Wert solve möglicherweise zu hoch, wenn Sie nur an numerischen Lösungen interessiert sind.

Verwandte Themen