07B: Wiskunde

Les 7 heeft drie delen A, B, C die in een willekurige volgorde kunnen worden doorgenomen.
Tot zover hebben we in Python gerekend met de operatoren +,  -, */ en de functies max en min. In deze les zullen we kennis maken met meer operatoren en functies en zullen we leren hoe we meer complexe berekeningen kunnen uitvoeren.

Operatoren uit de wiskunde

We heben reeds kenis gemaakt met de operatoren voor optellen (a + b), aftrekken (a - b), vermenigvuldigen (a * b) en delen (a / b). We zullen nu drie extra operatoren leren kennen.

  • De tot-de-macht-operator a ** b berekent ab (a vermenigvuldigd met zichzelf b keer). Bijvoorbeeld, 2 ** 3 is 8 (2×2×2).
  • De geheeltallige deling-operator a // b berekent het "quotiënt" van a gedeeld door b waarbij de rest wordt weggelaten. Bijvoorbeeld, 14 // 3 heeft als uitkomst 4, waarbij dus 2 wordt weggelaten.
  • De modulus-operator a % b berekent de rest bij a gedeeld door b. Bijvoorbeeld, 14 % 3 heeft als uitkomst 2.

Voorbeeld
De tot-de-macht-, geheeltallige deling-, en modulus-operatoren

Programmeeroefening: Rekenen met eieren
Eierdoosjes bevatten elk precies 12 eieren. Schrijf een programma dat een geheel aantal eieren inleest vaninput(), en dan twee getallen afdrukt: hoeveel eierdoosjes er kunnen worden gevuld, en hoeveel eieren er over blijven. Bijvoorbeeld: bij 27 eieren wordt afgedrukt

2
3
want met 27 eieren kun je 2 doosjes vullen en blijven er 3 eieren over.Hint
Tik de invoer voor je programma hieronder in.

De modulus-operator wordt voor een reeks van taken gebruikt. Het kan gebruikt worden om vragen te beantwoorden zoals deze:

De check of een jaar een schrikkeljaar is komt neer op het testen van deelbaarheid; in de volgende oefening vragen we je een programma te schrijven dat gaat over deelbaarheid in het algemeen.

Programmeeroefening: Deelbaarheid
Schrijf een programma dat twee positieve getallen a en b inleest op gescheiden regels. Wanneer a deelbaar is door b, druk dan de boodschap "deelbaar" af. Druk anders de boodschap, "niet deelbaar" af. Een voorbeeld: wanneer de invoer is

14
3
dan dient het programma af te drukken "niet deelbaar". Hint
Tik de invoer voor je programma hieronder in.

Functies uit de wiskunde

Python kent vrijwel alle wiskundige functies die op een wetenschappelijke rekenmachine te vinden zijn.

  • sqrt(x) berekent de wortel van een getal x.
  • exp(x) enlog(x) zijn de exponentiële functie en die van de natuurlijke logaritme.
  • sin(x), cos(x), tan(x) maar ook andere trigonometrische functies zijn aanwezig.
  • pi, de bekende constante uit de wiskunde 3.1415...,  is ook aanwezig.

Wanneer je trigonometrische functies uit Python gebruikt, dan moet de hoek x in radialen worden weergegeven, niet in graden.

Python kent zoveel functies dat ze zijn ondergebracht in groepen die modules worden genoemd. Bovenstaande functies behoren tot de module math (wiskunde). Voordat je een functie uit een module kunt gebruiken, moet je eerst de module importeren zoals in onderstaand voorbeeld te zien is. Om een functie uit een reeds geïmporteerde module te gebruiken moet je de naam van een module intypen, gevolgd door een punt en dan gevolgd door de naam van de functie.

Voorbeeld
Functies gebruiken uit de module math (wiskunde)

Programmeeroefening: Pizza Cirkels
Je vrienden hebben hun vierkante pizza's opgegeten en bestellen nu een ronde pizza. Schrijf een programma dat de oppervlakte berekent van deze ronde pizza. De invoer is een kommagetal, laten we het r noemen, dat de straal in cm weergeeft. De uitvoer moet de oppervlakte weergeven in cm2, berekend door gebruik te maken van de formule A=pi*r2. Gebruik daarbij pi uit de module math in plaats van 3.1415...
Tik de invoer voor je programma hieronder in.

Programmeeroefening: Meetkundig gemiddelde
Het meetkundig gemiddelde van twee getallen a en b is het getal \sqrt{ab} Schrijf een programma dat twee positieve kommagetallen inleest, en als uitvoer het meetkundig gemiddelde ervan produceert.
Bijvoorbeeld: Wanneer de invoer is:

5.0
20.0
dan dient de uitvoer 10.0 te zijn.
Tik de invoer voor je programma hieronder in.

Een expressie uitrekenen

Zoals je kon zien in de vorige oefening, kun je wiskundige expressies samenstellen door bewerkingen te combineren. Python evalueert de bewerkingen in dezelfde volgorde als in de wiskunde:

Haakjes eerst, dan de Exponenten, gevolgd door Delen en Vermenigvuldigen en tenslotte Optellen en Aftrekken,

die we kunnen onthouden door de afkorting "HEDVOA". Geheeltallig delen en modulus behoren tot de categorie "Delen en Vermenigvuldigen". Bijvoorbeeld, de expressie

3 * (1 + 2) ** 2 % 4
wordt als volgt berekend: eerst (1+2 = 3), dan de exponent (3 ** 2 = 9) , dan de vermenigvuldiging (3 * 9 = 27), en tenslotte de modulus (rest bij deling door) waarmee het eindresultaat wordt: 27 % 4 = 3.

Oefening met Kort Antwoord: Volgorde van de bewerkingen
Bereken de uitkomst van de volgende Python-expressie. Denk hierbij aan de volgorde van bewerkingen.

6 - 52 // 5 ** 2
Correct!

Geheeltallig delen met negatieve getallen: De uitdrukkingen a // b en int(a / b) zijn gelijk  wanneer a en b positief zijn. Maar wanneer a negatief is zal a // b  "afgerond worden in meer negatieve richting" terwijl int(a / b)  "afgerond zal worden richting 0" (voor negatieve getallen is dat dus in positieve richting).

Voorbeeld
Geheeltallig delen met negatieve getallen

Gehele getallen en kommagetallen

Het resultaat van een wiskundige expressie is een getal. Zoals we eerder zagen, is elk getal opgeslagen als één van de twee mogelijke types: int of float. Het type int stelt gehele getallen voor, zowel positieve als negatieve, die willekeurig groot kunnen zijn.

Python accepteert geen getallen die geschreven zijn in de vorm 1 000 000 of 1.000.000 of 1,000,000. Tik in plaats daarvan 1000000.

Het type float stelt kommagetallen voor. Zoals een rekenmachine 1/3 opslaat als de benadering 0.33333333, zal ook Python kommagetallen benaderend opslaan.

Omdat Python benaderingen van kommagetallen gebruikt, zullen bepaalde vergelijkingen die wiskundig juist zijn, niet waar blijken te zijn in Python.
Voorbeeld
Voorbeeld
Daarom is het belangrijk om enige tolerantie toe te staan voor deze benaderingen wanneer we getallen van het type float vergelijken. In de interne grader die bij deze website gebruikt wordt, bijvoorbeeld, wordt een float-uitvoer als correct beschouwd wanneer ze bij benadering gelijk is aan het verwachte antwoord.

We beëindigen deze les met een paar oefeningen.

Programmeeroefening: Overhoring
Als "overhoring" krijg je drie gehele getallen en je wordt gevraagd om de eerste twee getallen bij elkaar op te tellen en het resultaat met het derde getal te vermenigvuldigen. Schrijf een programma dat de drie getallen inleest en het juiste antwoord afdrukt. Hint
Tik de invoer voor je programma hieronder in.

Programmeeroefening: Voet vertalen in cm
Voor dit programma is de invoer een kommagetal dat een hoogte weergeeft in voet. Schrijf een programma dat het equivalent in centimeters weergeeft. Gebruik daarbij dat 1 voet = 30,48 cm. Zo is bijvoorbeeld bij een invoer van 0.5, de gewenste uitvoer gelijk aan 15.24.
Tik de invoer voor je programma hieronder in.

Programmeeroefening: Zwaartekracht
Een pakje wordt vanuit een vliegtuig op een hoogte van 11000 meter naar beneden gegooid met een snelheid van v m/s. Terwijl het valt wordt de afstand naar de grond gegeven door de formule -4.9t2 - vt + 11000, waarbij t de tijd is in seconden vanaf het moment van vallen. Schrijf een programma dat als uitvoer de tijd geeft die nodig is om de grond te bereiken. De invoer bij je programma is het positieve kommagetal v. De gevraagde tijd wordt gegeven door de formule: \displaystyle{t=\frac{v-\sqrt{v^2-4(-4.9)(11000)}}{2(-4.9)}}
Tik de invoer voor je programma hieronder in.

Gefeliciteerd! Nadat je deze oefeningen hebt afgerond kun je verder met een volgende les.