Potenzieren ohne pow() - 5^(2k+1)



  • Hallo zusammen,

    während meiner Klausurvorbereitung bleibe ich die ganze Zeit bei der folgenden Aufgabe hängen:

    Es muss eine unendliche Reihe von k = 0 gerechnet werden bis die Rechnergenauigkeit erreicht wurde, also das neue und das alte Ergebnis sich nicht mehr unterscheiden.

    Dabei kommt unter anderem in einem Zähler der Term 5^(2k+1) vor.
    Wie soll ich jetzt mit so etwas vorgehen ohne die Funktion pow() anzuwenden? Dies führ nämlich in der Klausur zu Punktabzug.

    Einerseits brauche ich für die Summe/Reihe ja schon eine Schleife und in dieser Schleife muss ich irgendwie noch die Potenz berechnen...

    Hier ist die Reihe, um die es geht:
    [url]http://up.picr.de/32155578je.jpg



  • 1. du könntest eine eigene Funktion mit einer Schleife schreiben.

    oder

    2. du rechnest mit dem Wert, den du noch vom vorhergehenden Durchlauf hast weiter.



  • Wenn du das iterativ berechnest, benötigst du in den aufeinanderfolgenden Schleifendurchläufen die Werte 1/5, 1/5^3, 1/5^5, ... Du könntest also einfach eine Variable für diese 5er-Potenzen am Anfang mit 1/5.0 initialisieren und in jedem Durchlauf durch 25 teilen.





  • Ich habe das Prinzip glaube ich verstanden, allerdings gibt er noch nicht das richtige Ergebnis aus:

    #include <math.h>
    #include <stdio.h>
    
    int main()
    {
    	double neu,alt,k,z1,z2,nenner;
    	int i=0;
    
    	neu=4./5-1./239;
    
    	nenner=-1;
    	z1=5*5*5;
    	z2=239*239*239;
    	k=1;
    
    	do
    	{
    		alt=neu;
    
    		neu=(nenner/(2*k+1)) * (4./z1-1./z2);
    
    		z1=z1*5*5;
    		z2=z2*239*239;
    		nenner=nenner*(-1);
    
    		k=k+1;
    		i=i+1;
    	}
    	while(neu!=alt);
    
    	printf("Anzahl der Summanden = %d\n",i+1);
    	printf("Pi Machin = %lf\n",4*neu);
    	printf("Pi arctan = %.16lf\n",4*atan(1.));
    
    	return 0;
    }
    


  • Okay hab es jetzt sofort schon selbst gesehen, musste nur noch neu = neu + ... usw. schreiben da es sich ja um eine Reihe handelt 🙂


Log in to reply