Hier ist eine C-Implementation der Sinusberechnung mit der Taylor-Reihenentwicklung:

    /***********************************************
     * Sinusberechnung mit Taylor-Reihenentwicklung
     * 
     * Marco Dickert
     * https://misterunknown.de
     **********************************************/
    #include <stdio.h>
    #include <math.h>

    //Potenzberechnung bei natürlichen Exponenten
    double hochInt(double base, int exponent) {
        double ret = 1.0;
        int i = 0;
        for(i = 0; i < exponent; i++)
            ret = ret * base;
        return ret;
    }
    // Fakultätsberechnung
    int fakultaet(int f) {
        if(f<=0)
            return 1;
        else
            return (f * fakultaet(f-1));
    }
    //Sinusberechnung mit Taylor-Reihenentwicklung
    double sinus(double x, double summe, int iteration) {
        double glied = ( hochInt(x, (2 * iteration + 1) ) / fakultaet(2 * iteration + 1) );
        if( fabs(glied) >= 0.00001 ) return sinus(x, summe + (hochInt(-1.0, iteration) * glied), iteration + 1);
        else return (summe + hochInt(-1.0, iteration) * glied);
    }

    int main(void) {
        double x = 0.0, tmp = 0.0;
        int k = 0;
        printf("Sinusberechnung mit Taylor-ReihenentwicklungnBitte geben sie eine Zahl ein: ");
        // Benutzereingabe
        //scanf("%lf", &x);

        printf("Das Ergebnis ist: %lf", sinus(1.4,0,0));
        return 0;
    }

http://codepad.org/OgqUfEhC

Nächster Beitrag Vorheriger Beitrag