konvergieren von PI



  • zuerst einmal hallo 😃

    also ich bin ein neuling auf dem gebiet von C und hab ein bisschen begonnen mich ein zu leben. ich habe auch schon ein paar mini programme (wenn man das so nennen darf) geschrieben und neulich habe ich mir vorgenommen ein kleines programm zu schreiben welches die Zahl PI auf 2 arten konvergiert. einmal mit der wallis reihe und einmal mit der leibnitz reihe. allerdings habe ich dabei ein paar kleinigkeiten (die wahrscheinlich viel größer sind) dich ich mit einfach nicht erklären kann und darum kann ich das programm auch nicht vervollständigen. oder es ist komplett falsch. ich weiß es leider nicht.

    die aufgabenstellung die ich an mich gestellt habe war jene das man eine zahl eingibt und dann die zahl PI mit den 2 reihen berechnen lässt. anschließend jeweils die differenz mit PI bildet und dann das ergebnis jener reihe ausgibt, welche die kleinere differenz besitzt. ach ja den compiler den ich verwende ist der von bloodshed.

    [url=http://upload.wikimedia.org/math/7/6/4/764a6d8b08f15a2c932ed09d4dded5a3.png
    ]Wallis Reihe[/url]
    [url=http://upload.wikimedia.org/math/c/d/c/cdc7391a8727e3d5579e589d25e8a12c.png]
    Leibnitz Reihe[/url]

    nach diesen beiden Reihen soll konvergiert werden.

    also meine bisherigen versuche havben alle so geendet:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    #define Pi 3,14156

    int main(void)
    {
    int a, b, c;
    signed f;
    float L, W, y, z;

    printf("Bitte geben Sie die Anzahl der Reihenglieder an, die berücksichtigt werden soll in der Form x.0 ein: ");
    scanf("%i", &a);

    for(c=0,f=-1,L=0;c<=a;c++)
    {
    f*=-1;
    L=L+(4.0*-1.0*f/(2.0*a+1.0));
    }

    L=L+4;

    for(c=0,W=1;c<=a;c++)
    {
    W=W*2.0*((4.0*a*a)/(4.0*a*a-1.0));
    }

    printf("Die Leibnitz - Reihe hat berechnet: %i \n", L);
    printf("Die Wallis - Reihe hat berechnet: %i \n", W);

    z=Pi-L;
    y=Pi-W;

    if(z<0)
    {
    z*=-1;
    }

    if(y<0)
    {
    y*=-1;
    }

    printf("Die Differenz der Leibnitz - Reihe beträgt: %i\n",z);
    printf("Die Differenz der Wallis - Reihe beträgt: %i\n",y);

    if(z>y)
    {
    printf("Die Leibnitz - Reihe konvergiert besser.");
    }
    else
    {
    if(z<y)
    {
    printf("Die Wallis - Reihe konvergiert besser.");
    }
    else
    {
    printf("Die Reihen konvergieren gleich gut.");
    }
    }

    system("PAUSE");
    return 0;
    }

    (ich entschuldige mich gleich falls der beitrag in ein anders theard gehört hätte).



  • seit wann konvergiert pi, ich denk die zahl ist transzendent.



  • nein ich habe damit gemeint das die beiden reihen pi konvergieren.



  • kennst du die c/c++ tags ?

    ohne:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    #define Pi 3,14156

    int main(void)
    {
    int a, b, c;
    signed f;
    float L, W, y, z;

    printf("Bitte geben Sie die Anzahl der Reihenglieder an, die berücksichtigt werden soll in der Form x.0 ein: ");
    scanf("%i", &a);

    for(c=0,f=-1,L=0;c<=a;c++)
    {
    f*=-1;
    L=L+(4.0*-1.0*f/(2.0*a+1.0));
    }

    L=L+4;

    for(c=0,W=1;c<=a;c++)
    {
    W=W*2.0*((4.0*a*a)/(4.0*a*a-1.0));
    }

    printf("Die Leibnitz - Reihe hat berechnet: %i \n", L);
    printf("Die Wallis - Reihe hat berechnet: %i \n", W);

    z=Pi-L;
    y=Pi-W;

    if(z<0)
    {
    z*=-1;
    }

    if(y<0)
    {
    y*=-1;
    }

    printf("Die Differenz der Leibnitz - Reihe beträgt: %i\n",z);
    printf("Die Differenz der Wallis - Reihe beträgt: %i\n",y);

    if(z>y)
    {
    printf("Die Leibnitz - Reihe konvergiert besser.");
    }
    else
    {
    if(z<y)
    {
    printf("Die Wallis - Reihe konvergiert besser.");
    }
    else
    {
    printf("Die Reihen konvergieren gleich gut.");
    }
    }

    system("PAUSE");
    return 0;
    }

    mit:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    #define Pi 3,14156
    
    int main(void)
    {
    int a, b, c;
    signed f;
    float L, W, y, z;
    
    printf("Bitte geben Sie die Anzahl der Reihenglieder an, die berücksichtigt werden soll in der Form x.0 ein: ");
    scanf("%i", &a);
    
    for(c=0,f=-1,L=0;c<=a;c++)
    {
    f*=-1;
    L=L+(4.0*-1.0*f/(2.0*a+1.0));
    }
    
    L=L+4;
    
    for(c=0,W=1;c<=a;c++)
    {
    W=W*2.0*((4.0*a*a)/(4.0*a*a-1.0));
    }
    
    printf("Die Leibnitz - Reihe hat berechnet: %i \n", L);
    printf("Die Wallis - Reihe hat berechnet: %i \n", W);
    
    z=Pi-L;
    y=Pi-W;
    
    if(z<0)
    {
    z*=-1;
    }
    
    if(y<0)
    {
    y*=-1;
    }
    
    printf("Die Differenz der Leibnitz - Reihe beträgt: %i\n",z);
    printf("Die Differenz der Wallis - Reihe beträgt: %i\n",y);
    
    if(z>y)
    {
    printf("Die Leibnitz - Reihe konvergiert besser.");
    }
    else
    {
    if(z<y)
    {
    printf("Die Wallis - Reihe konvergiert besser.");
    }
    else
    {
    printf("Die Reihen konvergieren gleich gut.");
    }
    }
    
    system("PAUSE");
    return 0;
    }
    

    das ganze noch ein wenig einrücken:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    #define Pi 3,14156
    
    int main(void)
    {
    	int a, b, c;
    	signed f;
    	float L, W, y, z;
    
    	printf("Bitte geben Sie die Anzahl der Reihenglieder an, "
    "die berücksichtigt werden soll in der Form x.0 ein: ");
    	scanf("%i", &a);
    
    	for(c=0,f=-1,L=0;c<=a;c++)
    	{
    		f*=-1;
    		L=L+(4.0*-1.0*f/(2.0*a+1.0));
    	}
    
    	L=L+4;
    
    	for(c=0,W=1;c<=a;c++)
    	{
    		W=W*2.0*((4.0*a*a)/(4.0*a*a-1.0));
    	}
    
    	printf("Die Leibnitz - Reihe hat berechnet: %i \n", L);
    	printf("Die Wallis - Reihe hat berechnet: %i \n", W);
    
    	z=Pi-L;
    	y=Pi-W;
    
    	if(z<0)
    	{
    		z*=-1;
    	}
    	if(y<0)
    	{
    		y*=-1;
    	}
    
    	printf("Die Differenz der Leibnitz - Reihe beträgt: %i\n",z);
    	printf("Die Differenz der Wallis - Reihe beträgt: %i\n",y);
    
    	if(z>y)
    	{
    		printf("Die Leibnitz - Reihe konvergiert besser.");
    	}
    	else
    	{
    		if(z<y)
    		{
    			printf("Die Wallis - Reihe konvergiert besser.");
    		}
    		else
    		{
    			printf("Die Reihen konvergieren gleich gut.");
    		}
    	}
    	system("PAUSE");
    	return 0;
    }
    

    jetzt sieht das schon ganz anders aus, ne ? 😉



  • oh danke 😃 stimmt jetzt ist es viel besser 😃

    lg



  • hi !
    scheint hier keiner bock drauf zu haben. ich habe keine zeit dafür. probier doch noch einmal im mathe forum, vielleicht hast du da mehr glück.


Anmelden zum Antworten