Ich habe scipy und die Kernpakete von scipy für ein Mathematikprojekt erforscht.Wie erstellt man einen mathematischen Ausdruck in scipy?
Ich muss Kalkül Operationen auf einige Gleichungen zu tun ... so zum Lernen scipy habe ich beschlossen, eine einfache Gleichung (PDF of a normal random variable) zu testen. Ich muss die Konstanten so belassen, wie sie während der Rechenoperationen sind ... und ihr keinen Wert zuweisen.
Ich konnte es erfolgreich mit Sympy erstellen. Hier ist der Code:
from sympy import *
x = Symbol('x')
mu = Symbol('mu')
sigma = Symbol('sigma')
def normpdfeqn():
y = exp(-(((x-mu)**2))/(2*(sigma**2)))/(sqrt(2*pi*(sigma**2)))
return y
print(integrate(normpdfeqn(), (x)))
und bekam eine richtige Ausgabe:
sigma*erf(sqrt(2)*(-mu + x)/(2*sigma))/(2*sqrt(sigma**2))
Dann habe ich versucht, mit scipy das Gleiche zu tun.
Ich habe gelesen http://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html aber konnte nicht herausfinden, wie man die Gleichung dafür erstellt. Hier ist, was ich versucht habe, bis jetzt (es ist fast das gleiche wie der oben genannte Code):
from sympy import exp
from sympy import sqrt
from sympy import pi
from scipy.integrate import quad
from sympy import Symbol
x = Symbol('x')
mu = Symbol('mu')
sigma = Symbol('sigma')
def integrand():
y = exp(-((x-mu)**2)/(2*(sigma**2)))/(sqrt(2*pi*(sigma**2)))
return y
I = quad(integrand(), 0, 1,)
print(I)
Der Code könnte noch lange nicht abgeschlossen sein, ich weiß nicht, wie es zum Laufen zu bringen.
Wenn ich immer mit Gleichungen arbeiten würde, die ich oben gezeigt habe, sollte ich mich bemühen zu lernen, scipy integrieren? Oder benutze weiterhin sympy und numpy?
Wenn Sie * symbolische * Operationen tun mögen, sollten Sie sympy verwenden. Scipy macht * numerische * Operationen. – BrenBarn
@BrenBarn also, ich erstelle meine Gleichungen mit sympy und dann Lambdify (oder es war eine andere Funktion, konnte mich nicht erinnern) sie die eqn mit numpy oder scipy verwenden ... wäre dieser Workflow in Ordnung? – vicky96
Sehr interessant. Die meisten Menschen trennen die beiden Bemühungen, weil sich ihre Gleichungen nicht oft ändern. Aber Sie beabsichtigen, eine analytische Eingabe zu machen, dann macht der Code zuerst die analytische Analyse (ohne Aufsicht) und berechnet dann numerische Ergebnisse? Dies könnte ehrgeizig sein. Ich mag das. – roadrunner66