4.1. Trapezfunktion#

In dieser Aufgabe sollen Sie die in der Vorlesung vorgestellte Trapezfunktion selbst programmieren.

Aufgabenstellung#

Aufgabenteil A#

Schreiben Sie eine Funktion, die die in der Vorlesung vorgestellte Trapezregel zum numerischen Integrieren von Funktionen implementiert. Die Funktion soll ein Numpy Array an Funktionswerten und eine Schrittweite \(\Delta x\) entgegen nehmen und daraus den Flächeninhalt bestimmen. Gehen Sie davon aus, dass für die zu den Funktionswerten gehörigen x-Werte gilt: \(x_0, x_0+\Delta x, x_0 + 2\Delta x, ...\).

Aufgabenteil B#

Wählen sie eine beliebige Funktion und überprüfen Sie die von Ihnen erstellte Funktion mit der Trapezfunktion des Scipy Moduls.

Lösungsvorschlag#

Hide code cell content
import matplotlib.pyplot as plt
import numpy as np
import scipy as sp
from scipy import integrate

def fkt(xi):
    yi = np.sin(xi)
    return yi

def trapez(werte, schrittweite):
    flaeche = 0
    for i in range(len(werte)-1):
        flaeche += werte[i] * schrittweite
        flaeche += (werte[i+1] - werte[i]) * schrittweite / 2
    return flaeche

xi = np.arange(0,2*np.pi,0.2)
yi = fkt(xi)

flaeche_sp = sp.integrate.trapz(yi, xi)
flaeche_selbst = trapez(yi, 0.2)

print('Eigene Trapezfunktion:', flaeche_selbst)
print('Scipy:', flaeche_sp)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[1], line 20
     17 xi = np.arange(0,2*np.pi,0.2)
     18 yi = fkt(xi)
---> 20 flaeche_sp = sp.integrate.trapz(yi, xi)
     21 flaeche_selbst = trapez(yi, 0.2)
     23 print('Eigene Trapezfunktion:', flaeche_selbst)

AttributeError: module 'scipy.integrate' has no attribute 'trapz'