Algoritmen: Oefeningen
1. OPDRACHTEN:
- implementeer de functies beneden.
- schrijf er ook telkens testgevallen om te achterhalen of je functie zo werkt als je verwacht.
- probeer het eerst alleen > kijk in de cursus > zoek online een oplossing > vraag je buur > of vraag je leerkracht.
pi = 3.1415926535897932384626433832795028841971 # waarde van de constante "pi"
2. hoekenconversie
- schrijf een functie “deg” die hoekwaarden omzet van graden naar radialen.
- maak er de omgekeerde functie “rad” aan en formuleer de algoritme!
3. faculteit
- maak een functie “faculteit” die een natuurlijk getal “n” krijgt voor invoer
- indien het getal 0 of 1 is, geef 1 terug (basisconditie)
- anders:
- bereken de “faculteit” van n-1
- vermenigvuldig het resultaat met n
- geef de uitkomst terug.
4. hoekberekening
De volgende functie berekent de hoek tussen twee lijnen. Lees de functie en begrijp de stappen: probeer eerst met je eigen symbolen de wiskundige formules op te schrijven.
Formuleer dan de algoritme!
def LineAngle(p1, p2, p3, p4): dx1 = p2[0]-p1[0] dy1 = p2[1]-p1[1] dx2 = p4[0]-p3[0] dy2 = p4[1]-p3[1] from math import atan2 ang1 = atan2(dy1, dx1) ang2 = atan2(dy2, dx2) angle_total = ang2-ang1 return angle_total print (deg(LineAngle((0., 0.), (1., 0.), (0., 0.), (-1., -0.5))))
5. Euclidische afstandsfunctie
- maak een functie “euclid” aan die de afstand berekent tussen twee punten `p1 = (x1, y1)` en `p2 = (x2, y2)`
- bereken het verschil tussen de punten: d = (x2-x1, y2-y1)
- neem de elementen van dat verschil tot de macht twee
- tel de elementen het resultaat samen (som)
- neem ervan de vierkantewortel
- (dus, we hebben hier de vierkantswortel van de som van het quadraat van de elementen van het verschil.)
- geef het resultaat terug.
- bonus voor gevoorderden: aanpassen zo dat er vectoren van grotere dimensie mogelijk zijn, bv. 3D of 4D
6. De Taylor-reeks
- schrijf er een functie voor de conversie van een hoek.
- de functie krijgt dus een hoek “x” binnen (in radialen) en geeft een getal (“float”) terug.
- definieer een “resultaat” dat in het begin gelijk aan de waarde van x is.
- maak er een variable “sign” aan die aanvankelijk de waarde “-1” heeft.
- ga in een “while”-lus, met een loopvariabele “i” die bij 3 begint en voortgaat zolang i kleiner dan 100 is.
- bereken een tussenresultaat = sign * (x**i)/faculteit(i)
- tel het resultaat van die tussenberekening bij het resultaat
- verhoog de loopvariabele om twee
- vermenigvuldig het “sign” met -1
- (eind van de lus)
- geef het resultaat terug.
- testen met de volgende getalen (rad): [0., 1., pi/2, pi ]
- bonusvraag: komt je het resultaat bekend voor? Over welke conversie gaat het hier?
(hier een tipp als je helemaal geen idee hebt)
vorige les \(\quad\) volgende les