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 zich zelf b keer). Bijvoorbeeld, 2 ** 3 is 8 (2×2×2).
  • De geheeltallige deling operator a // b berekent het "quotient" 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: hoe veel eierdoosjes 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
Type 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
Type 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 exponentiele 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 input (invoer) is een decimaal getal r, dat de straal in cm weergeeft. De output (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...
Type 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 decimale getallen in leest, en als uitvoer het meetkundig gemiddelde.
Bijvoorbeeld: Wanneer de invoer is:

5.0
20.0
dan dient de uitvoer 10.0 te zijn.
Type 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 behoort 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.

Kort antwoord opgave: 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  floating-point getallen (getallen met cijfers achter de komma)

Het resultaat van een wiskundige expressie is een getal. Zoals we eerder zagen, is elk getal opgeslagen als één van de twee mogelijke typen:  int of float. Het int type representeert gehele getallen, 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. Type in plaats daarvan 1000000.

Het float type representeert decimale getallen. Zoals een rekenmachine 1/3 op slaat door de benadering 0.33333333, zal ook Python decimale getallen opslaan met hun benaderde waarden.

Omdat Python benaderingen van decimale getallen gebruikt, zullen bepaalde vergelijkingen die wiskundig juist zijn, niet waar blijken te zijn in Python.
Voorbeeld
Voorbeeld
Hierom 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 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
Type de invoer voor je programma hieronder in.

Programmeeroefening: Voet vertalen in cm
Voor dit programma is de invoer een floating-point getal 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 uitvoer gelijk aan 15.24.
Type 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 ide tijd is in seconde vanaf het moment van vallen. Schrijf een programma dat als uitvoer de tijd heeft die nodig is om de grond te bereiken. De invoer bij je programma is het positieve floating-point getal v. De gevraagde tijd wordt gegeven door de formule: \displaystyle{t=\frac{v-\sqrt{v^2-4(-4.9)(11000)}}{2(-4.9)}}
Type de invoer voor je programma hieronder in.

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