Seite 2 von 2

Verfasst: Montag 30. November 2009, 23:38
von numerix
gkuhl hat geschrieben:
jbs hat geschrieben:ich glaube du hast etwas falsch gemacht
Das halte ich auch für sehr wahrscheinlich.
Ich tippe eher auf einen bisher unentdeckten Bug in sympy!

Verfasst: Montag 30. November 2009, 23:44
von jbs

Code: Alles auswählen

In [2]: from sympy import integrate

In [3]: integrate("sqrt(x)*cos(x)-4", "x")
Out[3]: Integral(-4 + x**(1/2)*cos(x), x)
Das ist exakt das, was mir mein Taschenrechner auch ausspuckt. Na gut er stellt nicht um. IMHO kein Bug, eher mathematisch bedingt.

Keine Ahnung wieso der beim Einsetzen von Grenzen trotzdem klar kommt.

Verfasst: Montag 30. November 2009, 23:46
von ms4py
Sympy kann halt das Integral nicht berechnen, was mich aber auch nicht wundert bei so einer Lösung:

Bild

Verfasst: Dienstag 1. Dezember 2009, 00:15
von jbs
Oh, LP640, hast du was mit Quantenmechanik am Hut, oder interpretiere ich da etwas falsch?

Verfasst: Dienstag 1. Dezember 2009, 08:33
von LP640
hi
Oh, LP640, hast du was mit Quantenmechanik am Hut, oder interpretiere ich da etwas falsch?
also von quantenmechanik hab ich 0 ahnung
ich brauch das nur für die berechnung von flächeninhalten bei funktionen.

also funktioniert das:

Code: Alles auswählen

from sympy import integrate, Symbol
x = Symbol('x') 
func = "sqrt(x)*cos(x)-4"
der = integrate(func,x) 
print der
a = der.evalf(subs={x:0})
b = der.evalf(subs={x:2})

print b-a
jetzt überhaupt nicht, weil:
Ich tippe eher auf einen bisher unentdeckten Bug in sympy!
oder kann man das problem irgendwie beheben???

mfg
LP640

Verfasst: Dienstag 1. Dezember 2009, 09:39
von Darii
LP640 hat geschrieben:jetzt überhaupt nicht, weil:
Ich tippe eher auf einen bisher unentdeckten Bug in sympy!
oder kann man das problem irgendwie beheben???
Nein, weil:
ice2k3 hat geschrieben:Sympy kann halt das Integral nicht berechnen
Als Bug würde ich das nicht bezeichnen, eher als Punkt für die TODO-Liste. Aber du kannst es numerisch berechnen.

Code: Alles auswählen

In [1]: from sympy.mpmath import *

In [2]: f = lambda x: sqrt(x)*cos(x)-4

In [3]: print quadts(f, (0, 2))
-7.41948573810286

Verfasst: Dienstag 1. Dezember 2009, 10:31
von LP640
vielen dank Darii, deine lösung klappt einwandfrei (zumindest bis jetzt :wink: )

mfg
LP640

Verfasst: Dienstag 1. Dezember 2009, 10:55
von LP640
hi
noch ne frage:
wie kann ich das machen, dass der mir die Integration (Aufleitung) printet???

so gehts auf jeden fall nicht:

Code: Alles auswählen

from sympy.mpmath import * 
f = lambda x: sqrt(x)*cos(x)-4 
print f
mfg
LP640

Verfasst: Dienstag 1. Dezember 2009, 11:10
von Darii
Gar nicht. Das ist eine numerische Lösung. f ist übrigens nur der Integrad und nicht die Stammfunktion, so würde das also schonmal überhaupt nicht funktionieren. Die Lösung hatte übrigens ice schon gepostet.

PS: Übrigens ist nicht jedes Integral analytisch lösbar.

Verfasst: Dienstag 1. Dezember 2009, 11:24
von LP640
also so klappt es:

Code: Alles auswählen

from sympy import integrate, Symbol 
x = Symbol('x') 
func = "x**2+1" 
der = integrate(func,x) 
print der 

x + x**3/3
aber bei manchen funktionen dauert das ziemlich lange und wie macht man, dass das ergebnis in diesem fall so:

Code: Alles auswählen

x**3/3+x
geschrieben wird???

mfg
LP640