Hallo zusammen,
ich bin neu hier im Forum und studiere derzeit WI im 1. Semester.
Leider komme ich bei einer Aufgabe einfach nicht weiter.
Es geht um die Berechnung des Flächeninhalts mit Hilfe der Trapezregel.
(Die genaue Aufgabenbeschreibung ist angehängt.)
Ich habe bereits verschiedene Varianten ausprobiert, komme aber einfach nicht auf das geforderte Ergebnis. Ich denke ein Problem ist die Umsetzung des Summenzeichens.
Normalerweise, wird dies ja mit einer for-Schleife gelöst (?), ich bin mir aber nicht sicher, ob das hier richtig ist.
Wenn jemand eine Idee hat und mir einen Tipp geben könnte wäre ich sehr dankbar
Hier mein Code:
Nur die Methode "integrate" soll verändert werden!
ich bin neu hier im Forum und studiere derzeit WI im 1. Semester.
Leider komme ich bei einer Aufgabe einfach nicht weiter.
Es geht um die Berechnung des Flächeninhalts mit Hilfe der Trapezregel.
(Die genaue Aufgabenbeschreibung ist angehängt.)

Ich habe bereits verschiedene Varianten ausprobiert, komme aber einfach nicht auf das geforderte Ergebnis. Ich denke ein Problem ist die Umsetzung des Summenzeichens.
Normalerweise, wird dies ja mit einer for-Schleife gelöst (?), ich bin mir aber nicht sicher, ob das hier richtig ist.
Wenn jemand eine Idee hat und mir einen Tipp geben könnte wäre ich sehr dankbar
Hier mein Code:
Nur die Methode "integrate" soll verändert werden!
Java:
public class Functionality {
public static final double EPSILON = 1E-10;
public static void main(String[] args) {
System.out.println("Integral von 0.1 bis 0.2 = " +
integrate(0.1,0.2) + " // sollte etwa 0.0394319 ergeben.");
System.out.println("Integral von 0.5 bis 1 = " +
integrate(0.5,1) + " // sollte etwa 0.149882 ergeben.");
System.out.println("Integral von 0 bis 1 = " +
integrate(0,1) + " // sollte etwa 0.341345 ergeben.");
System.out.println("Integral von 100 bis 200 = " +
integrate(100,200) + " // sollte etwa 0 ergeben.");
System.out.println("Integral von 0.9 bis 1.337 = " +
integrate(0.9,1.337) + " // sollte etwa 0.0934488 ergeben.");
}
/**
* Die integrate(double a, double b) Methode berechnet eine Annäherung für
* das Integral von a bis b über der Funktion f.
*
* @param a - Untere Grenze des Intervalls
* @param b - Obere Grenze des Intervalls
* @return eine Annäherung des Integrals von a bis b über der Funktion f
* @return Double.NaN falls a==Double.NaN oder b==Double.NaN
*/
public static double integrate(double a, double b) {
double Flaecheninhalt=0;
double h;
double Preresult=-1;
double summe = 0;
double temp=0;
if (a==Double.NaN || b==Double.NaN)
{return Double.NaN;}
else{
for (int n = 1;Flaecheninhalt-Preresult>=EPSILON; n++) {
h=(b-a)/n;
for (int k=1;k<=(n-1);k++){
summe = f(a+k*h);
temp= summe;
summe= summe+temp;
}
Preresult=Flaecheninhalt;
Flaecheninhalt=h*((f(a)/2) + (f(b)/2) ) ;
Flaecheninhalt=(Flaecheninhalt+summe) ;
}
return Flaecheninhalt;
}
}
public static double f(double x) {
/*
* Don't change anything here!
*/
// Standardized normal distribution
return 1.0 / Math.sqrt(2.0 * Math.PI) * Math.exp(- x*x / 2.0);
}
}