This blog post has been published on 2010-11-19 and may be out of date.
Hier noch ein Beipspiel für eine Funktion, in welcher die “eulersche Zahl” zu einem bestimmten Exponenten berechnet wird…
#include <stdio.h>
/*
Die Exponentialfunktion e^x kann als eine unendliche Reihe geschrieben werden, um sich dem Ergebnis anzunaehern!!!
------
e^x = 1 + x + x²/2! + x³/3! + x⁴/4! + ... = 1 + x + 1/2*x² + 1/6*x³ + 1/24*x⁴ + ...
------
i! ist hier die Fakultaet von i und ist definiert als
------
i! = 1*2*3* ... *(i-1)*i
------
- 1.) die Fakultaet ist fortlaufend mit den aufsteigenden ganzen Zahlen zu multiplizieren
- 2.) die Potenz ist fortlaufend mit Exponenten zu multiplizieren
- 3.) die Summanden koennen aus Fakultaet & Potenz berechnet werden
- 4.) die Summenbildung wird abgebrochen, wenn die Summanden kleiner als eine bestimmte Genauigkeit (Epsilon) werden
*/
double exp_fkt( double exponent) {
int fakultaet=1; /* i! */
double potenz=1.0; /* x^i */
double resultat=1.0, summanden;
int n=1;
do {
fakultaet *= n; // 1.)
potenz *= exponent; // 2.)
summanden = potenz/fakultaet; // 3.)
resultat = resultat + summanden;
printf("%3d %12d %12.6f %12.6f\n", n, fakultaet, summanden, resultat); // test - Ausgabe
n++;
} while (summanden >= 0.0001); // 4.)
return resultat;
}
int main(void) {
double exponent;
printf("Berechnung von e^x\n\n");
printf("Exponent = "); scanf("%lf", &exponent);
printf("\nDurchlauf Fakultaet Summanden Resultat\n");
printf("----------------------------------------\n");
printf("\nexp(%.1lf) = %.16lf\n", exponent, exp_fkt(exponent));
return 0;
}