Eingeschlossene Fläche berechnen ohne Integral...

Status
Nicht offen für weitere Antworten.
Q

qwertz347

Gast
Hallo!

Ein kleines Schulproblem zu den Weihnachtsferien im Fach Programmierung:

Es geht darum, eine Fläche berechnen zu lassen, die eine Gerade mit der x-Achse und zwei x-Werten als Grenze einschließt.

Original Aufgabentext:
Sie sollen die Funktion "get_Fläche(m, b, x1, x2)" codieren, welche für eine Gerade mit der Steigung m und dem y-Achsenabschnitt b ab der Stelle x1 bis zur Stelle x2 die darunter liegende Fläche berechnet.
Dabei sollen Sie folgendes Rechenverfahren anwenden: Sehr viele zufällige Punkte erzeugen, die innerhalb einer zuvor definierten Hülle liegen. Wenn ein Punkt auch innerhalb des eingeschlossenen Dreiecks liegt, ist es ein "Treffer"! Die gesuchte Flächengröße im Verhältnis zur Fläche der Hülle verhält sich genauso, wie die Anzahl der Treffer im Verhältnis zur Anzahl der zufällig erzeugten Punkte.
Wenn sich bei einem neu berechneten Flächenwert keine Veränderung mehr vor der 2-ten Kommastelle im Vergleich zum zuvor berechneten Flächenwert mehr gibt, soll das Näherungsverfahren beendet sein.

Also Leute: Bitte helft mir! Ich bin für jede noch so kleine Idee dankbar, wie man diese Aufgabe lösen könnte. Ich steh da total auf dem Schlauch und den anderen in meiner Klasse gehts genauso. Muss aber im Januar abgegeben werden...

Danke schonmal an alle, die sich hoffentlich dazu Gedanken machen...

Gruß,
qwertz347
 
G

Guest

Gast
Na ihr seid mir ja ne tolle Hilfe...

Auf math.random bin ich auch schon gekommen. Ich kann auch feststellen, ob ein zufälliger Punkt in der Fläche liegt, oder nicht...

Aber könnt ihr mit wenigsten nen Tip geben, wie ich das Ganze so oft berechnen lasse, bis sich an der zweiten Nachkommastelle im Verhältnis Fläche zu Hülle keine Veränderung mehr ergibt?
 

mariopetr

Bekanntes Mitglied
Code:
do
{
	oldResult=newResult;
	newResult=recalculate();
}
while(Math.abs(newResult-oldResult)>0.01);
 
Q

qwertz347

Gast
Danke erst mal.

Ich hab hier mal ein bischen was gebastelt. Funktioniert für positive x-Werte zwischen 0 und 100 manchmal schon so einigermaßen. Es ergeben sich allerdings oft recht große Ungenauigkeiten.

Code:
 //Fläche berechnen für Hülle 100 x 100, positive x-Werte
 public static double get_Flaeche(int ss_m, int ss_b, int ss_x1, int ss_x2)
  {double oldResult = 0, newResult = 0, versuche = 0, treffer = 0;
   double random_x, random_y;
   do   {oldResult = newResult;
         random_x = (Math.random()*100);
         random_y = (Math.random()*100);
         versuche++;
         if(ss_x1 < random_x && random_x < ss_x2 && 0 < random_y && random_y < (ss_m * random_x + ss_b))
           {treffer++;
           }
         newResult = treffer *10000 / versuche;
        }
   while(newResult == 0 || Math.abs(newResult-oldResult)>0.01);
   return newResult;
  }

Wenn Du dafür Verbesserungsvorschläge hast, auch was die Benennung von Variablen oder die allgemeine Struktur angeht, immer her damit. Ich bin für jede Hilfe dankbar. Die Präfixe "ss" in der Parameterliste sollen wir für übergebene Variablen anhängen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben