Wie lösen einer Integralgleichung in python?
Ich versuche, die Lösung dieser Integralgleichung mit Python:
wobei z im Bereich von 0 bis 1.
Den scipy.quad-Funktion stellt nur die numerische Lösung für ein bestimmtes Intervall, aber nicht die Lösung über dem Intervall.
def f(z,Om,Ol): return 1./p.sqrt((1+z)**2 * (1+Om*z) - z*(2+z)*Ol)
quad(lambda r:f(r,Om,Ol),0,1)
(0.77142706642781111, 8.5645609096719596e-15)
Aber ich weiß nicht, wie man eine vollständige Vektor in diesem Intervall, wie Sie bei der Verwendung von scipy.odeint zum lösen einer Differentialgleichung.
In der anderen hand, sympy.integrieren kann es nicht. Bekomme ich einen stack overflow. Plus, ich kann nicht herausfinden, wie ersetzen Sie die Symbole durch eine Liste,d.h.:
sy.integrate(x**2,x).subs(x,1)
1/3
sy.integrate(x**2,x).subs(x,[1,2])
TypeError: unhashable type: 'list'
Die Frage ist also: weiß jemand, wie man bei der Lösung eines integralen Gleichung mit python?
herzlich willkommen auf stack overflow
wie Sie reden über eine integral-Gleichung: Was ist der Wert, den Sie suchen ? Wollen Sie z1 für eine bestimmte D_L ?
Sie haben ein z vor das integral, ist das ein Tippfehler ?
Ich kann nicht herausfinden, wie zu verwenden linalg zum lösen einer Integralgleichung.
InformationsquelleAutor Illa Rivero Losada | 2011-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich verstehe, dass Sie möchten zur Lösung einer Differentialgleichung
dF/dz1 = f(z1, Om, Ol)
und wollenF(z1)
an verschiedenen Standorten. Wenn dies der Fall ist, dann ist die Gewöhnliche Differentialgleichung (ODE) Routinen von SciPy sind der Weg zu gehen. Möchten Sie vielleicht überprüfenodeint()
, insbesondere, wie es kann geben Sie die Werte Ihrer Integrale an stellen, die Sie angeben.Losada Rivero: Vielen Dank. Versuchen Sie zu Python haben finden ein analytische Formel für das integral? "Die Lösung eines integralen Gleichung" in der Tat hat eine sehr spezielle Bedeutung haben (en.wikipedia.org/wiki/Integral_equation), scheint nicht zu gelten für Ihre Frage. Wenn Sie wirklich suchen für eine analytische Lösung, ein guter Ort, um diese Frage zu stellen wäre mathoverflow. Der Fall ΩM = 0 ist machbar (en.wikipedia.org/wiki/List_of_integrals_of_irrational_functions), aber ich bin mir nicht sicher über den Allgemeinen Fall...
InformationsquelleAutor Eric O Lebigot
Ich nehme an, dass das z vor dem integral ist ein Tippfehler, das sollte z1, und Sie sind auf der Suche für z1 angegebenen DL.
Erstes setzen Sie die Rechte Seite (rhs):
Nun müssen Sie finden ein z0, so dass rhs(z1, ...) = DL, das ist das gleiche wie
Was bedeutet, dass Ihr problem reduziert auf das finden der null (es gibt nur eine, denn die Rechte Seite ist monoton), der
Hier können Sie wenden viele Methoden für die Wurzel zu finden (siehe http://en.wikipedia.org/wiki/Root-finding_algorithm) von http://docs.scipy.org/doc/scipy/reference/optimize.html#root-finding
InformationsquelleAutor rocksportrocker
In der sympy im Abschnitt "Beispiele" an, http://docs.sympy.org/0.7.1/modules/integrals.html, Sie zeigen Lösungen auf nahezu identische Probleme. Können Sie Ihre sympy code?
Für scipy, haben Sie versucht, mit einem Tupel, das ist hashable, statt einer Liste? z.B.:
InformationsquelleAutor Profane
Habe ich endlich die "quad" - Funktion mit einer for-Anweisung um mein problem zu lösen:
Danke Euch allen für Eure Ideen, Sie war wirklich hilfreich.
InformationsquelleAutor Illa Rivero Losada