Erste Schritte Pi Berechnung

Diskutiere Pi Berechnung im Java Basics - Anfänger-Themen Bereich.
V

Vladyslav

Guten Tag,
bitte um Hilfe.
Ich soll hier PI mithilfe von einer Kreiszerlegung berechnet werden.

double r = 1.0;
double h1= 1.0;
double h2;
int teilung; // Wie oft der viertel Kreis zerglegt werden soll
double x = 0.0;
double ausgabe = 0.0;
Scanner scanner = new Scanner (System.in);

System.out.println("Wie oft soll der Viertelkreis zerlegt \nwerden um Pi herauszufinden?");
teilung = scanner.nextInt();

for ( int i = 1; i < teilung; i++)
{
r = r / teilung;

ausgabe = h1 * r;

x = ausgabe;

h2= Math.sqrt(1-Math.pow(r,2)); // Problem wie komme ich auf die verschiedenen höhen ?
ausgabe = h2 * r;

x = (x+ausgabe) * 4;
}
System.out.println(x);

Mein Code dazu. Der Kreis wird in vier viertel geteilt, und ein einzelnes Viertel wird in Rechtecke unterteilt. Je mehr Rechtecke, desto näher ist man an Pi. Am Schluss nimmt man das Ergebnis *4 und dann sollte eine Näherung rauskommen.

Mein Problem ist, mit zwei recht Rechtecken komme ich zurecht. Bei mehr scheitere ich. Je mehr Rechtecke dazu kommen umso weniger wird h2 bei jedem einzelnen.
Könnt mir jemand auf die Sprünge helfen und mir ein hint geben und sagen wie ich es schaffe, dass ich die unterschiedlichen h2 rausbekomme?

mfG !
 
T

Tobias-nrw

Darf Sinus benutzt werden?

Java:
		for (int teile = 4; teile <= 50; teile += 2) {
			double w = 360.0 / teile;
			double a = 0.5 * Math.sin(Math.toRadians(w));
			double A = teile * a;
			System.out.println(teile + " " + A);
		}
		System.out.println(Math.PI);
 
krgewb

krgewb

Bitter immer in code-Tags posten.
Java:
double r = 1.0;
double h1= 1.0;
double h2;
int teilung; // Wie oft der viertel Kreis zerglegt werden soll
double x = 0.0;
double ausgabe = 0.0;
Scanner scanner = new Scanner (System.in);

System.out.println("Wie oft soll der Viertelkreis zerlegt \nwerden um Pi herauszufinden?");
teilung = scanner.nextInt();

for ( int i = 1; i < teilung; i++)
{
    r = r / teilung;

    ausgabe = h1 * r;

    x = ausgabe;

    h2= Math.sqrt(1-Math.pow(r,2)); // Problem wie komme ich auf die verschiedenen höhen ?
    ausgabe = h2 * r;

    x = (x+ausgabe) * 4;
}
System.out.println(x);
 
V

Vladyslav

@ krgewb sry bin neu in der Materie. Was genau meinst du damit ?

@ Tobias-NRW denke schon, jedoch ist bei mir die Aufgabenstellung die, dass es mithilfe von Rechtseckszerlegung funktionieren soll.
 
V

Vladyslav

Code:
    public static void main (String [] args )
    {
        double r = 1.0;
        double h1= 1.0;
        double h2;
        int teilung; // Wie oft der viertel Kreis zerglegt werden soll
        double x = 0.0;
        double ausgabe = 0.0;
        Scanner scanner = new Scanner (System.in);
       
        System.out.println("Wie oft soll der Viertelkreis zerlegt \nwerden um Pi herauszufinden?");
        teilung = scanner.nextInt();
       
        for ( int i = 1; i < teilung; i++)
        {
            r = r / teilung;
           
            ausgabe = h1 * r;
           
            x = ausgabe;
           
            h2= Math.sqrt(1-Math.pow(r,2)); // Problem wie komme ich auf die verschiedenen höhen ?
            ausgabe = h2 * r;
           
            x = (x+ausgabe) * 4;
        }
        System.out.println(x);
       
       
       
    }
 
T

Tobias-nrw

Mein Gott, so schwer kann das doch nicht sein, liest eigentlich jemand meine Signatur mal?

Und zu Deinem Problem, ich habe keine Ahnung, wie was "zerlegt" werden soll. Ich habe es in Dreiecke zerlegt, wenn das falsch ist, muss Dir jemand anderes helfen.
 
J

JustNobody

Ich habe mich da heute früh auch etwas mit beschäftigt und ich war mir auch nicht ganz klar darüber, die da denn genau vorgegangen werden soll.

Wenn ich das aber richtig verstanden habe, dann ist die Zerlegung in Dreiecke ja doch das, was er auch (indirekt) haben möchte, denn 2 deiner Dreiecke müssten doch sein Rechteck sein. Da ja eben die Diagonale bekannt ist, sowie ein Winkel bei bei der diagonalen, ist die Berechnung des Rechtecks über so ein Dreieck möglich.

Aber ich kann mich jetzt auch irren. Denn wenn das r bei dem TE der radius ist, dann ist der radius nicht konstant 1? Aber hier denke ich mal ist das auch einfach nur ein typisches Beispiel von "ins eigene Bein geschossen, weil keine vernünftigen Namen vergeben".

==> Mach Dir eine genaue Skizze, auf der aufgezeichnet ist, wie dein Vorgehen aussieht. Da trägst Du dann auch ein, was bekannt ist und was der Wert ist, der Dich interessiert. Dann wird alles sauber benannt und dann kann man Berechnungen auch nachvollziehen. Und so skizzen kann man z.B. mit dem Smartphone abfotografieren und online stellen. Also ist das teilen von so Skizzen auch kein Thema.

Stilistische Mittel wie sinnvoller Einsatz von Farben und so ist noch nicht einmal gefordert ....
 
mihe7

mihe7

Verstehe ich hier was falsch oder ist die Sache im Prinzip sehr einfach? Man hat n Streifen der Breite r/n. Die Höhe ergibt sich aus r² = x² + y², also y(x) = sqrt(r²-x²) für alle x = k*r/n mit k=0,1,...,n-1. Flächen berechnen, aufsummieren, Thema erledigt.
 
T

Tobias-nrw

enn ich das aber richtig verstanden habe, dann ist die Zerlegung in Dreiecke ja doch das, was er auch (indirekt) haben möchte, denn 2 deiner Dreiecke müssten doch sein Rechteck sein.
Das habe ich auch verstanden. Aber um eine Hälfte des Rechtecks zu erhalten, also genau 1 Dreieck, brauche ich doch wieder den Sinus... (und nicht sqrt und pow) Vielleicht bin ich heute auch einfach zu doof dafür. :D
 
J

JustNobody

Das habe ich auch verstanden. Aber um eine Hälfte des Rechtecks zu erhalten, also genau 1 Dreieck, brauche ich doch wieder den Sinus... (und nicht sqrt und pow) Vielleicht bin ich heute auch einfach zu doof dafür. :D
Ja, vollkommen klar. Denn man hat halt nur die Diagonale und 2 Winkel (einer halt ein rechter Winkel). Und da geht die Berechnung nur über sin / cos.

Daran kann ich mich noch sehr gut erinnern - das war damals 8. Klasse und ich habe das dann sogar als Programm geschrieben, das das Dreieck berechnet und dann gezeichnet hat. (Was eine ganz schöne Arbeit war. Auf dem Monitor senkrechte und Waagerechte Linien gemalt und ausgemessen (Monitor damals war ja kein gerade TFT wie heute sondern eine gebogene Röhre ...) und das dann auch auf dem guten alten Nadeldrucker .... Die Seiten des Dreiecks mussten ja exakt richtig gezeichnet sein. Und das Zeichnen ging ja manuell mit Zirkel, d.h. ich habe dann auch die "Kreisabschnitte" gezeichnet - was aber dann natürlich bei mit Ellipsen sein mussten ... Unterschiedliche Anzahl Pixel in x und y Richtung pro cm.
 
mihe7

mihe7

Was habt Ihr alle mit Eurem Sinus?

Verstehe ich hier was falsch oder ist die Sache im Prinzip sehr einfach? Man hat n Streifen der Breite r/n. Die Höhe ergibt sich aus r² = x² + y², also y(x) = sqrt(r²-x²) für alle x = k*r/n mit k=0,1,...,n-1. Flächen berechnen, aufsummieren, Thema erledigt.
 
J

JustNobody

Wie berechnest du denn da dann das Rechteck? Das ist ja der Grund, wieso ich da eine Skizze einfordere.

Ich gehe bisher von so etwas aus.
Pi-Berechnung-Dreieck.png
Gezeigt wird ein 1/4 Kreis. Der wurde weiter unterteilt und man hat dann halt so ein Dreieck.
Vom Dreieck wissen wir:
- wir haben den Radius
- Wir haben den rechten Winkel
- Wir haben den Winkel, der da grün eingemalt wurde. (Unterteile ich den Kreis in 36 solcher Kuchenstücke, dann sind das 360°/36 = 10°

Die roten Linien haben wir nicht, aber diese lassen sich natürlich berechnen. Einmal ist es radius * sin(alpha) und einmal radius * cos(alpha). Wobei für den Umfang nur das erste gebraucht wird.

Das ist vermutlich etwas, das auch Tobias im Auge hatte weil er dachte, dass dieses kurze rote Stück das ist, was der TE haben will.

Also nun meine Frage: Über was redet ihr genau? Wieso braucht ihr den Sinius nicht?
 
J

JustNobody

Falls Sinus erlaubt ist, wird System.out.println(Math.acos(-1)); wohl auch als Lösung akzeptiert werden. Aber warum dann nicht gleich System.out.println(Math.PI);? ;)
Für die Berechnung des Sinus mit einer bestimmten Genauigkeit benötigt man aber kein pi. Daher ist es nicht so, dass man mit pi eben genau dieses ausrechnen würde.

Aber klar: Damit gewinnt man auf Dauer keinen Blumentopf, da der Aufwand der Berechnung zu groß wird. Daher ist es ja auch so toll, dass es sowas wie die Kettenbrüche dafür gibt.... Aber das hilft dem TE nicht wirklich weiter.
 
Thema: 

Pi Berechnung

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben