#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Nov  8 10:51:45 2017

@author: troll
"""

#Modul mit Kontrollfunktionen für Aufgabenblatt 5
import numpy as __np
import matplotlib.pyplot as __plt

def plottefehler(fehler_schleife, fehler_direkt, Ns):
    '''Kontrollfunktion für Aufgabe 17 (Integralapproximation)
    
    Plottet die Fehler mit logarithmischer x- und y-Achse
    
    Parameter
    ---------
    fehler_schleife:
        array mit den Fehlern der Funktion "IntApprox_schleife" (a)
    fehler_direkt:
        array mit den Fehlern der Funktion "IntApprox_direkt" (b)
    Ns: 
        Liste mit der Anzahl der Auswertungen (d)
        
    Sollten Ihre Daten nicht wie erwartet sein, erscheint eine Fehlermeldung.
    '''
    assert (fehler_direkt>=0).all() and (fehler_schleife>=0).all(), 'Die Fehler sollten nicht kleiner als 0 sein'
    assert (len(fehler_schleife)==len(Ns)) and (len(fehler_direkt)==len(Ns)), 'Die Längen der Fehler und der Auswertungen passen nicht zusammen'
    assert __np.max(__np.abs(fehler_schleife-fehler_direkt))<10**(-14), 'Die Fehler sollten bei beiden Funktionen ungefähr gleich sein'
    
    __plt.figure(42)
    __plt.clf()
    __plt.loglog(Ns, fehler_schleife, '-o', Ns, fehler_direkt, ':x')
    __plt.xlabel('Anzahl Auswertungen')
    __plt.ylabel('Approximationsfehler')
    __plt.legend(('Schleife', 'Direkt'))
    __plt.title('Plot für Aufgabe 17: Integralapproximation')