AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pi mit Pythagoras berechnen

Ein Thema von bender123 · begonnen am 21. Nov 2004 · letzter Beitrag vom 16. Dez 2004
Antwort Antwort
bender123

Registriert seit: 21. Nov 2004
3 Beiträge
 
#1

Pi mit Pythagoras berechnen

  Alt 21. Nov 2004, 17:48
Hallo!

Ich bin am verzweifeln , denn folgendes klappt einfach nicht:

pi mit Pythagoras berechnen
Ein Halbkreis wird durch Rechtecke angenähert. Zunächst hat der erste Rechenlauf ein Rechteck mit der Höhe R im Vergleich mit der Halbkreisfläche. Dann wird die Höhe halbiert, 2 Rechtecke haben jeweils die Höhe R/2. Die Breite des Rechtecks ergibt sich jeweils aus dem Satz des Pythagoras. Dann wird der Radius gedrittelt, und neue Rechtecke bestimmt. Die Summe der Rechteckflächen wird jedes mal mit der Fläche des Halbkreises verglichen, die am Anfang des Programms ausgerechnet wurde. Ist die Abweichung kleiner als 1/10 Promille wird die Rechnung abgebrochen und das Ergebnis ausgegeben (mit der Anzahl der Rechtecke).


Mein Ansatz bisher:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
  begin
    close;
  end;

procedure TForm1.Button1Click(Sender: TObject);
  var i,
      kasten :integer;
      radius,
      breite,
      hoehe,
      kflaeche,
      p,
      halbkreis :double;
      genau :boolean;


  begin
    radius:=strtofloat(edit1.Text);
    halbkreis:=(pi*Sqr(radius))/2;
    kasten:=0;
    genau:=false;
    while not genau do
    begin
      inc(kasten);
      kflaeche:=0;
      for i:=0 to kasten do
      begin
        hoehe:=radius/kasten;
        if i=0
          then breite:=2*radius
          else breite:=2*(power((Sqr(radius)-Sqr(i*hoehe)),(1/2)));
        kflaeche:=kflaeche+(hoehe*breite);
      end;
      if halbkreis >= (kflaeche*0.8) then genau:=true;
    end;
    p:=(kflaeche*2)/(Sqr(radius));
    label3.caption:=floattostr(p);
    label4.caption:=inttostr(i);
  end;

Sobald ich die Genauigkeit aber höher als 80% setze, erscheint folgende Fehlermeldung:

"Im Projekt project1.exe ist eine Exception der Klasse EInvalidOp aufgetreten. Meldung:'Ungültige Gleitkommaoperation'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen."

Was mache ich falsch ?!?

Im Anhang das gezippte Projekt
Angehängte Dateien
Dateityp: zip pi.zip (251,4 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
moritz

Registriert seit: 18. Apr 2003
1.037 Beiträge
 
#2

Re: Pi mit Pythagoras berechnen

  Alt 21. Nov 2004, 17:58
Ich hab dafür mal ein Programm geschrieben, eines für die Monte-Carlo und eines für die Archimedes-Methode ( Die die du suchst ). Den Source kann ich dir mal schicken.
"Optimistisch ist diejenige Weltanschauung, die das Sein höher als das Nichts stellt und so die Welt und das Leben als etwas an sich Wertvolles bejaht."
Albert Schweitzer
  Mit Zitat antworten Zitat
bender123

Registriert seit: 21. Nov 2004
3 Beiträge
 
#3

Re: Pi mit Pythagoras berechnen

  Alt 21. Nov 2004, 18:56
Lösung selber gefunden.
Die for-Schleife lief einmal zu viel...
  Mit Zitat antworten Zitat
Tylerxxx

Registriert seit: 16. Dez 2004
Ort: Herford
3 Beiträge
 
#4

Re: Pi mit Pythagoras berechnen

  Alt 16. Dez 2004, 16:11
yo ich hab nen ähnliches problem habe schon alles ausprobiert aber das programm hängt sich beim ausführen auf bzw. ich vermute das die for schleife unendlich ausgeführt wird!

oder meine abbruch bedingung ist falsch kann mir jemand helfen!

studiere maschinenbau und habe nun informatik als fach dazu bekommen!

hier ist mein delphi code:


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

var
R,
anzahl,
i
:integer;
summe,
flaeche,
hoehe,
genau,
breite
:double;

begin
R:=100;
anzahl:=0;
summe:=0;
//Pi:=3.1415926535897932385;

  repeat
    inc(anzahl);
    summe:=2*R*R/anzahl;
    if anzahl=1 then
    begin
      hoehe:=R;
      breite:=2*R;
      flaeche:=breite*hoehe;
      summe:=summe+flaeche;
      genau:=(summe-0.5*Pi*R*R)/(0.5*Pi*R*R);
    end
    Else
        for i:=2 to anzahl do
        begin
          hoehe:=(i-1)*(R/anzahl);
          breite:=Sqrt(R*R-(hoehe*hoehe));
          flaeche:=breite*hoehe;
          summe:=summe+flaeche;
        end;

    genau:=(summe-0.5*Pi*R*R)/(0.5*Pi*R*R);
  until genau < (1/10000);
LabeledEdit2.Text:=IntToStr(anzahl);
LabeledEdit3.Text:=FloatToStr(summe*2/10000);
end;


end.
[edit=Luckie]Delphi-Tags Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#5

Re: Pi mit Pythagoras berechnen

  Alt 16. Dez 2004, 16:22
@tylerxxx

benutz doch bitte die delphi-tags beim editieren, dass kann man kaum lesen...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz