Ga naar hoofdinhoud

Het verschil

Je rekende zeven dagen vooruit, en na zes dagen veranderde er bijna niets meer. Om de computer zelf te laten stoppen, moet hij eerst kunnen meten hoeveel er in één dag veranderd is. Dat meet je met één getal: de grootste verandering van een kans.

info

abs en max ken je uit itereren tot het stabiel is.

Voorspel​

oud = {"zon": 0.38, "wolken": 0.35, "regen": 0.27}
nieuw = {"zon": 0.349, "wolken": 0.362, "regen": 0.289}

verschil = 0
for weer in nieuw:
verschil = max(verschil, abs(nieuw[weer] - oud[weer]))
print(round(verschil, 3))

Wat print dit?

Antwoord
0.031

Zon zakt 0,031, wolken stijgen 0,012 en regen 0,019. abs haalt het min-teken weg, en max houdt de grootste verandering bij: 0,031.

Zo werkt het​

abs(nieuw[weer] - oud[weer]) is hoeveel één kans veranderde, of hij nu stijgt of daalt. max(verschil, …) houdt in verschil de grootste verandering tot nu toe bij. Na de loop weet je dus hoeveel de kans veranderde die het meest veranderde. Is dat minder dan 0,001, dan verandert geen enkele kans nog merkbaar.

Opdracht: hoeveel verandert er?​

Reken uit hoeveel de verdeling in één dag verandert. Vanaf een zonnige dag print je:

0.5

Begin klein, en breid de code stap voor stap uit:

  1. Draai de code: hij rekent de verdeling van morgen uit en print hem.
  2. Zet onder de berekening verschil = 0, en loop met for weer in nieuw: langs het weer. Bewaar in verschil steeds de grootste van verschil en de verandering van dat weer. Print verschil na de loop: 0.5.
  3. Begin op de verdeling van dag 2 uit de vorige stap: verdeling = {"zon": 0.38, "wolken": 0.35, "regen": 0.27}. Hoe groot is het verschil nu?
Python
Code-omgeving wordt voorbereid…
Tip

Krijg je een negatief getal, of 0? Zon daalt van 1 naar 0,5, dus nieuw["zon"] - verdeling["zon"] is negatief. Wat doet abs daarmee?

Antwoord

Dit komt onder de berekening in de editor:

verschil = 0
for weer in nieuw:
verschil = max(verschil, abs(nieuw[weer] - verdeling[weer]))
print(round(verschil, 3))
0.5

Zon verandert het meest, van 1 naar 0,5. Begin je op de verdeling van dag 2, dan krijg je 0.031, net als in de Voorspel.

Door naar tot het stilstaat.