• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

C# Logik fehler

SaimonSC1

Neues Mitglied
Hallo Leute!

Ich muss für eine Studienarbeit eine Konsolenanwendung erstellen die die zahl PI nach der Formel von Walles auf 1e-12 stellen genau berechnet.
( Formel Pi nach Walles: Wallissches Produkt)

Ich bekomme kein richtiges ergebniss und finde (trotz mehrstündiger suche) den fehler nicht,..
Denke ich steh da grad ziemlich auf der leitung,..
Ich habe allerdings den verdacht das der fehler irgendwo an meiner logik liegt,..
Könnte mir villeicht jemand helfen?

Code:
Code:
class Program
    {
        static void Main(string[] args)
        {

            // Variablen Definieren
            double pi0 = 1;
            double pi1 = 1;
            double pi2 = 1;
            double piX = 1;
            double piKontrollwert;
            double differenzAbs;
            const double DIFF_ABS_MAX = 1e-12;
            int i = 1;




            do
            {
                pi0 = piX;
                piKontrollwert = piX;
                pi1 = (2*i)*(2*i);
                pi2 = 2*(((2*i)-1)*((2*i)+1) / pi1);
                piX = pi0 * pi2;
                
                i++;



                differenzAbs = (Math.Abs(piX - piKontrollwert));

                


            } while (differenzAbs > DIFF_ABS_MAX);

            Console.WriteLine("Pi ist auf 10e-12 Stellen genau: {0}", piX);
        }
    }
}
 
Werbung:
Hallo nochmal.

Also,.. ich bin mittlerweile doch noch auf den richtigen ansatz gekommen!

hier der funktionierende Code (fall es jemanden interresiert).
Code:
static void Main(string[] args)
        {

            // Variablen Definieren
            double pi0 = 2;
            double pi1;
            double pi2;
            double differenzAbs;
            const double DIFF_ABS_MAX = 1e-12;
            int i = 0;

           
            // Berechnung von PI
            do
            {
                pi1 = pi0;
                i++;
                pi2 = i * 2;
                pi0 = (pi0 * (Math.Pow(pi2, 2) / ((pi2 - 1) * (pi2 + 1))));

                differenzAbs = (Math.Abs(pi0 - pi1));

            } while (differenzAbs > DIFF_ABS_MAX);


            Console.WriteLine("Pi ist auf 10e-12 Stellen genau: {0}", pi0);
        }
    }
}

lg Simon
 
Hallo Simon,

nein, ich bin nicht wirklich interessiert, an der Berechnung des wallisschen Produkts mit C#. Aber ich finde es trotzdem immer gut, wenn im Forum, egal in welchem, nicht nur die Frage gepostet wird, sondern gegebenenfalls auch die selber gefundene Lösung. Zumal Du bei der Google-Suche nach "berechnung wallissches produkt c#" im Moment auf der ersten Seite stehst, und so vielleicht Deinen Kommilitonen helfen kannst.

Gruß thuemmy
 
Werbung:
Zurück
Oben