In deze oefening bepalen we de oppervlakte van een vlakke figuur via de "vogelpik"-methode.
Stel dat de figuur waarvan we de oppervlakte willen berekenen, binnen de rechthoek gelegen is gedefinieerd door
$$(x_{min}, y_{min})$$ (linkeronderhoek) en $$(x_{max}, y_{max})$$. Bovendien is een functie $$f(x, y)$$
gegeven, zodat $$f(x, y) = 1$$ voor punten $$(x, y)$$ binnen de figuur, en $$f(x, y) = 0$$ voor
punten buiten de figuur. De gezochte oppervlakte $$O$$
$$
O = \int_{x_{min}}^{x_{max}}\int_{y_{min}}^{y_{max}} f(x, y) dx dy
$$
bepalen we als volgt:
N
willekeurige punten (x, y)
in de rechthoek (zie hierboven)
f
oppervlakte()
met als enig argument een strikt positief geheel getal, dat aangeeft
hoeveel willekeurige punten moeten gegenereerd worden. De methode levert de benadering van de oppervlakte
van de figuur, waarbij het algoritme zoals hierboven beschreven, gevolgd wordt. Merk op dat:
Figuur
niet over een methode f()
beschikt, deze wordt in afgeleide klassen
gedefinieerd (zie hieronder),
n
willekeurige punten aan
via onderstaande constructie. Dit is de enige plaats waar je random getallen genereert (wijzig ook de seed niet !).
x = np.random.uniform(self._xmin, self._xmax, n) y = np.random.uniform(self._ymin, self._ymax, n)
f()
.
f()
.
np.random.seed(100) c = Cirkel(10.0) print(c.oppervlakte(10000)) #314.08 np.random.seed(100) e = Ellips(10.0, 20.0) print(e.oppervlakte(10000)) #628.16