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)
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).