Drop hier links of afbeeldingen om ze aan de editor toe te voegen.
Een puntmassa wordt gekenmerkt door zijn $$x$$- en $$y$$-coördinaat in het
$$xy$$-vlak, samen met de massa $$m$$ van dit punt. Beschouwen we een reeks van $$N > 0$$ van die puntmassa's,
dan hebben we:
- $$x_i$$ de $$x$$-coördinaat van het punt met rangnummer $$0 \le i \lt N$$
- $$y_i$$ de $$y$$-coördinaat van het punt met rangnummer $$0 \le i \lt N$$
- $$m_i$$ de massa van het punt met rangnummer $$0 \le i \lt N$$
Het zwaartepunt van die puntmassa's heeft als coördinaat $$(z_x, z_y)$$ en kan gevonden worden uit:
$$
z_x = \frac{\sum_{i = 0}^{N-1} m_i x_i}{\sum_{i = 0}^{N-1} m_i}
$$
$$
z_y = \frac{\sum_{i = 0}^{N-1} m_i y_i}{\sum_{i = 0}^{N-1} m_i}
$$
Schrijf de gevectoriseerde functie
zwaartepunt() met als argumenten:
- een niet-lege NumPy rij OF 1 reëel getal met de $$x$$-coördinaten van de puntmassa's
- een niet-lege NumPy rij OF 1 reëel getal met de $$y$$-coördinaten van de puntmassa's
- een niet-lege NumPy rij OF 1 reëel getal met de massa's van de puntmassa's
Je mag aannemen dat de drie argumenten van deze functie een gelijk aantal elementen hebben.
De drie argumenten zijn ook allen van hetzelfde type (dus ofwel 3 NumPy-rijen ofwel 3 reële
getallen).
De functie levert een tuple dat bestaat uit de $$x$$- en de $$y$$-coördinaat
van het zwaartepunt (zie bovendstaande uitdrukking), WAARBIJ JE ENKEL DE PUNTEN MET STRIKT POSITIEVE
MASSA in rekening brengt (dus de punten met een massa kleiner dan of gelijk aan nul, negeer je). Er is minstens
1 puntmassa met strikt positieve massa.
TIP: een boolean kan je naar een int omzetten door met de gehele waarde 1 te vermenigvuldigen. Zo levert
de uitdrukking (a == b)*1 de waarde 1 indien a en b gelijk zijn, en de waarde
0 in het andere geval.
Voorbeeld
x = np.linspace(-3, 3, 7)
y = np.linspace(-3, 3, 7)
m = np.array([1.0, 2.0, 3.0, 4.0, -1.0, -1.0, -1.0])
zwaartepunt(x, y, m) = (-1.0, -1.0)
zwaartepunt(1.0, 1.0, 10.0) = (1.0, 1.0)