LoslegenKostenlos loslegen

Eine einfache Funktion integrieren

Das ist eine einfache Übung, um das Konzept der Monte-Carlo-Integration kennenzulernen.

Hier berechnen wir ein einfaches Integral \( \int_0^1 x e^{x} dx\). Wir wissen, dass die exakte Antwort \(1\) ist, aber die Simulation liefert eine Näherung, daher erwarten wir einen Wert in der Nähe von \(1\). Wie im Video gesehen, ist der Ablauf simpel. Für eine Funktion einer Variablen \(f(x)\) gilt:

  1. Bestimme die Grenzen der x-Achse \((x_{min}, x_{max})\) und der y-Achse \((\max(f(x)), \min(\min(f(x)), 0))\).
  2. Erzeuge eine Anzahl gleichverteilender Punkte in diesem Rechteck.
  3. Multipliziere die Fläche des Rechtecks (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)) mit dem Anteil der Punkte, die unterhalb von \(f(x)\) liegen.

Am Ende hast du ein Vorgehen, um bestimmte Integrale mithilfe der Monte-Carlo-Integration zu lösen.

Diese Übung ist Teil des Kurses

Statistische Simulation in Python

Kurs anzeigen

Anleitung zur Übung

  • Erzeuge in der Funktion sim_integrate() gleichverteilte Zufallszahlen zwischen xmin und xmax und weise sie x zu.
  • Erzeuge gleichverteilte Zufallszahlen zwischen \(\min(\min(f(x)), 0)\) und \(\max(f(x))\) und weise sie y zu.
  • Gib den Anteil der Punkte unterhalb von \(f(x)\) multipliziert mit der Fläche zurück (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)).
  • Definiere schließlich func als \(x e^{x}\) mit einer Lambda-Funktion.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# Define the sim_integrate function
def sim_integrate(func, xmin, xmax, sims):
    x = np.random.uniform(____, ____, sims)
    y = np.random.uniform(____, ____, sims)
    area = (max(y) - min(y))*(xmax-xmin)
    result = area * sum(____(____) < abs(func(x)))/sims
    return result
    
# Call the sim_integrate function and print results
result = sim_integrate(func = lambda x: ____, xmin = 0, xmax = 1, sims = 50)
print("Simulated answer = {}, Actual Answer = 1".format(result))
Code bearbeiten und ausführen