Dabei wird zwischen der unteren Fläche, die sich aus Rechtecken mit der Kantenlänge gleich Funktionswert der linken Intervallgrenze ergeben, und der oberen Summe, die diesmal aus Rechtecken mit der Kantenlänge gleich dem Fkt.-wert der rechten Intervallgrenze zuusammengesetzt ist, unterschieden. Die "wahre" Fläche ergibt sich durch Mittelung der beiden Flächen, was einer Näherung mittels Trapezen entspricht.
Problemschilderung:
Wenn ich das Prog. kompiliere und ausfĂĽhre wird nur nach der erstren Integrationsgrenze gefragt und der "Rest" ausgegeben???
(Ich glaub mit der "funktion" stimmt auch was nicht.)
Wäre sehr dankbar für Lösungsvorschläge!!!
- Code: Alles auswählen
#include <stdio.h>
#include <math.h>
int i,n;
float anfang, ende, interv, wert, sum_u, sum_o;
double funktion(double);
main()
{
printf("Die untere Integrationsgrenze angeben :\n");
scanf("%f",&anfang);
printf("Die obere Integrationsgrenze angeben :\n");
scanf("%f",&ende);
printf("Geben Sie die Anzahl der Intervalle an (maximal 32000):\n ");
scanf("%d",&n);
/* Initialisierung zu Null*/
wert =0.0;
sum_u=0.0;
sum_o=0.0;
/* Berechnung der Intervallbreite (Breite des Trapezes). */
interv = (ende - anfang)/n;
/* Aufsummierung der einzelnen Intervallflächen für die obere Fl„che und die untere Fläche, */
for (i=0;i<=n-1;i++)
{
sum_u = sum_u + funktion(anfang + 1 * interv) * interv;
sum_o = sum_o + funktion(anfang + (i+1) * interv) * interv;
}
/* Berechnung der "wahren" Fläche durch Mittelung der beiden Flächen. */
wert=(sum_o+sum_u)/2;
printf("Das Integral in den obigen Grenzen hat den Wert: %f \n", wert);
}
/* Definition der benutzten Funktion */
double funktion(double x)
{
return(exp (-x*x));
}
***EDIT penguinforce: fĂĽr sourcecode haben wir den bb-code "code", bitte diesen zwecks fĂĽr sourcecode immer verwenden! (ausser bei php, da gibts einen eigenen )***