Seite 1 von 1

Integrale einer Funktion berechnen

Verfasst: Dienstag 6. November 2018, 19:20
von Beckoeu
Hallo

ich möchte aus der Funktion sin(x) die Nullstellen und die Flächen (Integral) zwischen der Funktion und der x-Achse berechnen.
Dabei berechne ich die Nullstellen mit der Funktion fsolve() und das Integral mit quad(). Ich vergleiche die vorherige p mit der danachfolgenden Nullstelle k.
Das Integral wird zwischen den einzelnen Nullstellen berechnet.

Code: Alles auswählen

import numpy as np
from scipy.integrate import quad
from scipy.optimize import fsolve

def f(x):
    return np.sin(x)

i=0
k=0
p = fsolve(f, k)
while p < 20:

    if k>p:
        g = quad(f, p, k)

        # abs Betrag einer Zahl, g[0] um nur den wert des Integrals
        # und nicht die abweichung auszugeben
        print("Nullstelle: ", p, "Integral: " ,abs(g[0]))
        p = fsolve(f, k)
    else:
        i = i+0.1
        k = fsolve(f, i)
Als Ausgabe habe ich das bekommen:

Nullstelle: [0.] Integral: 2.0
Nullstelle: [3.14159265] Integral: 1.9999999999999996
Nullstelle: [18.84955592] Integral: 1.9999999999999962

Das Integral wird schon richtig berechnet, mich wundert es aber, das das Programm keine Nullstellen bei 2 Pi (6,26) usw. gefunden hat (oder ausgibt).

Re: Integrale einer Funktion berechnen

Verfasst: Samstag 10. November 2018, 10:11
von Sirius3
@Beckoeu: Du kannst nicht einfach wild einen mathematischen Algorithmus anwenden, ohne zu wissen, wie er genau funktioniert, und was man dabei beachten muß.

Am besten benutzt Du nicht ein fertiges Verfahren zur Nullstellenbestimmung, sondern programmierst es erst einmal selbst, z.B. Bisektion.