faecher:informatik:oberstufe:java:algorithmen:arrays:uebungen_integral:start

Übungen: Integral

Wenn es in der Mathematik ans Berechnen von Flächen unter Funktionsfgraphen geht, nähert man sich dem Problem häufig durch Bildung von Rechtecksummen: man unterteilt das Intervall [a;b], das man betrachtet (im Bild von a=2 bis b=5) in n Teilintervalle und nähert die Fläche unter der Kurve durch die Summe der Rechteckflächen an. Mathematisch unterscheidet man dabei Ober- und Untersummen: Bei der Obersumme verwendet man in jedem Intervall den größten, bei der Untersumme den kleinsten Funktionswert im Intervall als Höhe des Rechtecks.

Weil man diesen größten/kleinsten Funktionswert jedes Intervalls erst noch suchen müsste, vereinfachen wir das hier zunächst dahingehend, dass wir uns einfach entscheiden, ob wir den linken oder den rechten Intervallrand zur Berechnung der Höhe des Rechtecks verwenden wollen.

Einige grundlegende Einsichten:

  • Je mehr Intervalle man bildet, desto genauer wird der Näherungswert
  • Je mehr Intervalle man bildet, desto kleiner werden die Teilintervalle, deren Breite $h$ ist nämlich offensichtlich $h=\frac{b-a}{n}$
  • Der Näherungswert für die Fläche ist $A\approx h \cdot (f(x_0)+f(x_1)+...+f(x_n))$. Wobei $x_0, ... ,x_n$ eben entweder die linken oder die rechten Intervallgrenzen sind, je nachdem wofür man sich entscheidet.

Hier findest du eine GeoGebra-Aktivität, mit Hilfe derer du dir ein Bild der Situation machen kannst 1).

Passe die Vorlage schrittweise so an, dass für die beiden Aufrufe zSumme.getBorders("l"); bzw. zSumme.getBorders("l"); die korrekten Werte für die x-Werte der Teilintervalle ausgegeben werden.

Verändere auch die Klassenvariablen n, left und right um zu überprüfen, ob das auch mit einer anderen Anzahl von Teilintervallen und anderen Intervalllängen funktioniert.

Als Funktion verwenden wir fürs erste $f(x)=-0.2(x-3.8)^3+2x-3.5$. Implementiere die Funktion in deinem Java-Code. Teste die Richtigkeit deines Terms an einigen Beispielen.

Implementiere die Methode calculateSum() so, dass dein Programm einen Näherungswert für den Flächeninhalt berechnet.

Untersuche anschliessend…

  • Welche Auswirkung hat der Wechsel vom linken zum rechten Teilintervallrand?
  • Was passiert, wenn du vergisst, die Methode getBorders("x") aufzurufen, bevor du mit calculateSum() eine Näherungslösung bestimmst.
  • Verändere die Anzahl der Teilintervalle und beobachte die Auswirkungen auf deine Näherungslösung.

Verändere den Konstruktor deiner Klasse nun so, dass sie in der Main-Methode folgendermassen aufgerufen werden kann:

public static void main(final String[] args) {
    // Argumente n, links, rechts, Teilintervallseite [l|r]
    integral zSumme = new integral(5,1,4,"r");
    double approxValue = zSumme.calculateSum();
    System.out.println("\nNäherungswert für die Fläche: " + approxValue);
  }

Überprüfe in deinem Programm auch die Sinnhaftigkeit der an den Konstruktor übergebenen Argumente.


1)
Außerdem kannst du später dein Programm damit überprüfen
  • faecher/informatik/oberstufe/java/algorithmen/arrays/uebungen_integral/start.txt
  • Zuletzt geändert: 19.01.2020 20:26
  • von sbel