© h.hofstede (h.hofstede@hogeland.nl)

PLAATJES MAKEN
       
Deze hele les is gewijd aan het maken van leuke plaatjes.
Daarmee bedoel ik geen strips of cartoons of zo, maar dingen als  histogrammen en lijndiagrammen, lijnen, cirkels, punten.
Het sluit mooi aan bij de vorige les waar je leerde om lijsten/tabellen  met gegevens te maken (via simuleren). Deze les gaan we die gegevens omzetten in plaatjes.

Het scherm van de TI.
 
Het scherm van de TI bestaat uit allemaal pixels (puntjes) die zwart zijn of niet (AAN of UIT staan)  Er zijn 95 pixels horizontaal en 63 pixels verticaal.

Eerst maak je in een programma dat tekent altijd dat scherm schoon (eventuele andere tekeningen verwijderen) met 2nd DRAW  1: ClrDraw

Net zoals in het gewone WINDOWS-menu kun je ook in een programma de Xmin, Xmax, Ymin en Ymax aangeven (een commando als  20 ® Xmax maakt bijv. Xmax gelijk aan 20).
En ook kun je zelfs ZOOM - 6:ZStandard  gebruiken om in één keer een scherm van -10 tot 10 te krijgen.

     
Om plaatjes te maken is het meestal het best om eerst alle grafieken en statistische plots uitzetten (Dat geeft soms foutmeldingen)
•  De grafieken verwijder je met met VARS - YVARS - 4: On/Off en dan 2:FnOff
•  De statistische plots verwijder je met  2nd - STATPLOT - 4:PlotsOff

(een uitzondering is het geval dat je grafieken wilt plotten via Y1. Dan moet het grafieken plotten juist AAN staan! Zie verderop)
     
1.  Een punt tekenen
 
Dat gaat met de volgende commando's:   (in het menu  2nd - DRAW - POINTS)
1:  Pt-On (X, Y)  zet het pixel met coördinaten (X, Y)  AAN.
(en  2: Pt - Off  zet het pixel uit, maar dat had je vast al; wel geraden)
3:  Pt-Change (X, Y)  verandert de toestand van het opgegeven punt (AAN wordt UIT en UIT wordt AAN)
       

Dat was het aan- en uitzetten van punten (bedenk nog even goed dat de gewone coördinaten kunnen worden ingevoerd, en dat de uitvoer afhangt van de WINDOW-instellingen)
Je kunt ook afzonderlijke pixels aan- en uitzetten, onafhankelijk van de WINDOW-instellingen

   
4: Pxl-On(Y,X) zet pixel (Y, X) AAN maar dat wordt geteld vanaf linksboven, en dan eerst de Y, en daarna de X. Y loopt dus van 0 naar 62  (dat zijn 63 pixels) en X van 0 naar 94 (dat zijn 95 pixels), zoals hiernaast.
Pxl-Off  en  Pxl -Change  werken precies zo.
Pxl-Test(Y, X) is een functie die als antwoord  0 heeft als de pixel UIT staat en 1 als hij AAN staat.
       
Van beiden een flauwekul voorbeeld.
       

1.

:  ClrHome: ClrDraw
:  FnOff
:  ZStandard
:  For (A, 1, 5)
:      For (B, -3, 3)
:          Pnt-On(A, B)
:      End
:  End 

       

2.

:  ClrHome: ClrDraw
:  FnOff
:  For (A, 0, 50)
:      For (B, 60, 80)
:          Pxl-On(A, B)
:      End
:  End 

       
Probeer je eens voor te stellen wat het volgende programma doet:
       
:  ClrHome: ClrDraw
:  FnOff
:  For (A, 0, 31)
:      For (B, 47, 94)
:           Pxl-On(A, B)
:      End
:  End 
:  For (A, 15, 25)
:       For (B,57, 77)
:            Pxl-Off(A, B)
:       End
:  End
:  For (A, 0, 62)
:      For (B, 0, 94)
:           Pxl-Change(A, B)
:      End
:  End 
       
En nu een serieus voorbeeld.
       
We gaan met een dobbelsteen gooien, en willen graag een grafiek maken met op de x-as het aantal worpen dat is geweest en op de y-as hoeveel procent daarvan 6 was.  Vooral interessant is natuurlijk hoeveel dat van de 16% (ongeveer 1/6) afwijkt.

Wat gebeurt hiernaast?
regels 1 tm 4 zijn intussen standaard denk ik (hoop ik)
regel 4: Z is het aantal zessen tot nu toe en dat wordt in het begin gelijk gemaakt aan 0.

regels 5 en 6 maken een window
regel 7 zet een horizontale lijn bij Y = 1/6

Dan wordt er N keer gedobbeld...

1  :  ClrHome
2   :  FnOff:  PlotsOff
3   :  Input"Hoeveel worpen", N
4   :  0 → Z
5   :  0 → Xmin:  N →  Xmax
6   :  0 → Ymin:  1 → Ymax
7   :  "1/6" → Y1
8   :  For(I, 1, N)
9   :       Z + (randint(1,6) = 6) → Z
10 :       Pt-On (I, Z/I)
11 :  end 
       

Regel 9 is verreweg de interessantste:
De voorwaarde (randint(1,6) = 6)  kijkt of een dobbelsteenworp gelijk is aan 6 (= bij TEST). Als dat zo is, wordt dit een 1, als het niet zo is een 0
Dus regel 9 maakt het aantal zessen (Z) één hoger als er zes gegooid wordt, en anders niet.

Regel 10 zet een stip in de grafiek bij worp I en aantal zessen Z/I.

Mijn TI gaf bij N = 50 het plaatje hiernaast.

       
2.  Een lijn, cirkel, tekst tekenen.

Met de volgende commando's kun je meetkundige objecten tekenen:  (allemaal uit het menu 2nd DRAW)
Bedenk dat X en Y geen pixels zijn, maar punten, dus de tekening hangt af van de Window-instellingen
   
Line(X1, Y1, X2, Y2)  tekent een lijnstuk van de punten (X1, Y1) naar (X2, Y2)
Twee speciale gevallen:
•  Horizontal Y tekent een horizontale lijn op hoogte Y
•  Vertical  X  tekent een verticale lijn op plaats X
Tangent(Y1, X)  tekent de raaklijn aan de grafiek van Y1 in het punt X
Circle(X, Y, R)  tekent een cirkel met middelpunt  (X, Y) en straal R.
Text(X, Y, tekst)  zet een tekst neer vanaf plaats (X, Y).
       
3.  Grafieken tekenen.
 
"Normaal" maak je grafieken op de TI via de Y=  knop  en dan vul je bij Y1 de gewenste formule in.
In programmeren gaat dat anders: 
Je voert de formule in als een variabele die je in geheugen Y1, Y2, ...Y7 zet. Die vind je bij  VARS - YVars - 1:Function
Dus de opdracht:   : "2X+1" Y1  zet de formule Y1 = 2X + 1 in Y1 en die kun je daarna afdrukken met het commando DispGraph  PRGM - I/O -  4:DispGraph.
Daarvoor moet dan wel "formules" ingeschakeld zijn  (VARS - YVARS - 4: On/Off en dan 1:FnOn) en verder moet de TI ook in de functie-mode staan  (MODE - FUNC)
Hieronder zie je een programmaatje, dat de A en B van een rechte lijn opvraagt en vervolgens die lijn plot.
       

 
4.  Histogram, Lijndiagram, Boxplot en meer....
   
De statistische plots moet je hiervoor AAN zetten:  2nd - STATPLOT - 5:PlotsOn.

Hiernaast zie je het programma uit de vorige les om het gooien van een dobbelsteen te simuleren. Laten we dat uitbreiden en er een histogram van maken.

 
PROGRAM DOBBEL
1  : ClrHome
2   : ClrAllLists
3   : seq(X, X, 1, 6) → L1
4   : 6 → dim(L2)
5   : Input"Hoeveel keer?", N
6   : For (I, 1, N)
7   :     randint(1,6)  → X
8   :     L2(X) + 1 →  L2(X)
9   : end
       
Dat is hiernaast gebeurd.

Bij VARS - 1: Window kun je Xmin, Xmax, Ymin en Ymax instellen
Regel 11 geeft de juiste afmetingen van de x-as
Regel 12 geeft de juiste afmetingen van de y-as:  de hoogste y is 2 meer gekozen dan de hoogste frequentie. 
Max  vind je bij  MATH - NUM - 7: max

Dan een histogram plotten:
Plot 1 zit bij  2nd  STATPLOT  (Merk op dat dat een ander menu geeft als je aan het programmeren bent dan normaal!)
Kies daarna  opnieuw bij STATPLOT - TYPE  en neem 3:Histogram
Zet daar achter de x-lijst L1 en de Y-lijst L2 gescheiden door dikke komma's.

Mijn TI gaf voor 50 keer dobbelen:
PROGRAM DOBBEL
1  :  ClrHome
2   :  ClrAllLists : FnOff :  PlotsOn
3   :  seq(X, X, 1, 6) → L1
4   :  6 → dim(L2)
5   :  Input"Hoeveel keer?", N
6   :  For (I, 1, N)
7   :     randint(1,6)  → X
8   :     L2(X) + 1 →  L2(X)
9   :  end
10 :  ClrHome
11 :  0 → Xmin: 7 → Xmax
12 :  0 Ymin : 2+max(L2) Ymax
13 :  Plot1(Histogram, L1, L2)

       
De andere plots die je in STATPLOT op deze manier uit lijsten kunt maken zijn:
   
1: Scatter (X, Y, mark) geeft de losse punten. 
Daarbij kun je met mark  (STATPLOT - MARK)  kiezen welk tekentje er op het scherm bij elk punt moet komen.
2: xyLine  (X, Y, mark)  geeft ook de losse punten, alleen nu ook nog verbonden door een lijn.
3: Histogram(X, Y)  zie hierboven.
4: ModBoxplot  (X, Y, mark)  tekent een speciale boxplot (Mod = "Modified")
De uiteinden gaan maar tot  1.5 maal de afstand (Q3-Q1) vanaf de rand van de box. De punten die daar nog buiten vallen worden als losse stippen erbij gezet (mark).
5: BoxPlot (X, Y) tekent een "gewone" boxplot    
6: NormProbPlot(L1, as, mark) tekent van een rij getallen in L1  de gegevens op normaal-waarschijnlijkheidspapier (zie deze les)  Als dat een rechte lijn oplevert, dan zijn de gegevens normaal verdeeld. 
bij "as"  kun je kiezen op welke as (X of Y)  je je gemeten getallen wilt hebben.
       

simuleren

logische functies

       
  OPGAVEN
       
1. De wet van de grote aantallen...
Je hebt al 20 keer met een muntstuk gegooid, en maar liefst 18 keer KOP gegooid (en dus 2 keer munt)
Dus denk je dat dat wel een vals muntstuk zal zijn.
Gooi daarna nog een groot aantal keren met dit muntstuk en laat met een mooie grafiek zien dat de kans op kop bij een zuiver muntstuk (inclusief die eerste 20 worpen) toch weer naar 0,5 zal gaan.
       
2. Maak een histogram voor het totaal aantal ogen dat je gooit met 4 dobbelstenen.
Zet het gemiddelde aantal rechtsboven in beeld als tekst.
       
3. Gooi 100 keer met 3 dobbelstenen en maak een boxplot voor het totaal aantal ogen.
       
4. Maak een programma dat de gebruiker vraagt van de functie  y = a + b/x  de a en b in te voeren en dat dan de grafiek tekent.
       
5. Maak een programma dat een groot aantal keer een willekeurige x (tussen 0 en 100) en een daarbij horende willekeurige y (ook tussen 0 en 100) kiest, en dat dan een plot geeft van alle paren (x, y). Laat kleine blokjes tekenen bij de punten.
       
     

© h.hofstede (h.hofstede@hogeland.nl)