Assenstelsels en het plotten van Functies in LOGO

advertisement
Assenstelsels en het plotten van
Functies in LOGO
Nicky Van Thuyne
[email protected]
http://studwww.rug.ac.be/~nvthuyne/index.htm
Herhaling van de Logo werelden
•
•
•
•
Schildpadwereld
Taalwereld
Muziekwereld
Sprokenwereld
Doelstellingen
• Wiskunde toegepast op LOGO
• Tekenen van assenstelsels (les 1)
• Functies (les 2)
– Evalueren
– Tekenen
– Toepassingen
Het Assenstelsel
• Uit wat bestaat een assenstelsel?
– 2 assen (horizontaal = Xas & verticaal = Yas)
– Een nulpunt : punt met coordinaten (0,0)
– Schaalfactoren : Deze zijn nodig om de
eenheden op de assen aan te duiden
Een voorbeeld
Assenstelsel opbouwen (1)
• Instellen van de schaalfactoren
– Voor de X-as nemen we bv 10
– Voor de Y-as nemen we bv 10
• LOGO scherm gaat van –500 tot 500
• Dus dan hebben we 50 eenheden op de
halve X-as en 50 op de halve Y-as.
Assenstelsel opbouwen (2)
• Een voorbeeld
– Als we wensen het punt met coordinaat (2,3)
aanduiden dan moeten we wat doen?
– 2 * 10 stappen op de x-as
– 3 * 10 stappen op de y-as
Toegepast op logo
ASSEN
bepalen schaalfactoren
2 * halve Y-as tekenen
2 * halve X-as tekenen
Functie ASSEN
to ASSEN :xs :ys
make "xschaal :xs
make "yschaal :ys
local "xrep
local "yrep
make "xrep int
(xdim / :xschaal)
make "yrep int
(ydim / :yschaal)
repeat 2 [yas :yrep
rt 90 xas :xrep rt 90]
end
• Opslaan
schaalfactoren
• Aanmaken 2 locale
variabelen die aantal
eenheden aanduiden
op halve assen
• Tekenen van de assen
zelf adv repeat
Procedures Xas & Yas
to XAS :xrep
repeat :xrep
[mark :xschaal]
bk product :xrep
:xschaal
end
to YAS :yrep
repeat :yrep
[mark :yschaal]
bk product :yrep
:yschaal
end
• Beide functies zijn
analoog
– “Aantal streepjes op de
halve as” keer wordt de
functie mark
uitgevoerd
– Daarna wordt terug
gekeerd naar de
oorsprong
Helpfuncties & verder verloop
to XDIM
output 500
end
to YDIM
output 500
end
to MARK :schaal
fd :schaal cross :schaal
end
• Hulpfuncties die de
“lengte” van halve Xas en Y-as weergeven
• De functie mark die
een platte T zal
tekenen
De functie Cross
to CROSS :schaal
local "bar
make "bar :schaal / 10
lt 90
fd :bar
bk 2* :bar
fd :bar
rt 90
end
• Locale variabele die
grootte van een half
streepje bevat
• En we nemen de
schaalfactor gedeeld
door 10 voor deze
variabele
• Daarna tekenen we het
streepje
Bewegen van de schildpad
to SCHALEN :xs :ys :punt
op list (:xs * first :punt)
( :ys * last :punt)
end
to SP :punt
setpos schalen :xschaal
:yschaal :punt
end
• In deze eerste
procedure worden de
ingegeven punten
herschaald
• En in de tweede wordt
de schildpad naar de
juiste positie gebracht
in het assenstelsel
Voorbeeld van herschaling
• Stel we wensen een coordinaat (3, 3) aan te
duiden
• En de schaalfactoren voor de X-as en Y-as
zijn respectievelijk 20 en 10
• Dan moeten we wat ingeven?
• Antwoord : (60, 30)
Toepassing : een huisje
to HUISJE
pu sp [1 1]
pd sp [11 1]
pu sp [0 5]
pd sp [6 11]
pu sp [6 8]
pu sp [2 1]
pd sp [2 4]
pu sp [5 2]
pd sp [5 5]
pu home
end
sp [11 6] sp [1 6]
sp [1 1]
sp [12 5]
pd
circle :xschaal
sp [4 4]
sp [10 5]
pd
sp [4 1]
sp [10 2]
sp [5 2]
Resultaat : het huisje
Functies
• Wat zijn functies?
• Functies zijn wiskundige formuleringen van
de volgende vorm : y = f(x) waarbij x en y
variabelen zijn.
• Een eenvoudig voorbeeld : y = 3x+2
Waarom nu functies?
• Voor het tekenen van functies hebben we
een assenstelsel nodig
• Dit hebben we in de vorig les behandeld en
zitten nog fris in het geheugen.
• Maar toch een korte herhaling…
Hoe functies tekenen
• We kiezen een minimum en maximum waarde van
x waarvoor we de functie gaan plotten (de grenzen
genaamd)
• We berekenen f(x) voor gekozen x (meestal min
waarde) en duiden bekomen resultaat aan op
assenstelsel
• Daarna doen we hetzelfde voor een volgende
waarde (bv x+1) en dit tot maximum waarde
bereikt wordt
Hoe een functie evalueren in
LOGO?
• Dit gebeurt met behulp van het volgende
commando
– Run [regel]
• Een voorbeeld (op de commando lijn)
– make “x 8
– Show run [3*:x–9]
– Resultaat = 15
Procedure EVALX
to EVALX :regel :x
op run :regel
end
• Ingeven in command line is omslachtig
• Dus steken we de evaluatie in een procedure
• Vb : show Evalx [3*:x-9] 8
Hoe gaan we te werk?
• We creëren een functie graph, die we
gebruiken om de volledige functie af te
beelden; deze roept een functie plot op die
de afbeelding maakt
De functie Graph
to GRAPH :regel :x :max
local "statelist
make "statelist pos
pu
plot :regel :x :max
pu
setpos :statelist
pd
end
• De argumenten zijn
respectievelijk de functie,
de startwaarde en het
maximum
• De beginpositie van de
schildpad wordt
opgeslagen om na het
plotten van de functie (met
dezelfde argumenten als
de functie Graph) te
kunnen terugplaatsen
De functie Plot
to PLOT :regel :x :max
if :x > :max [stop]
setpos list :xschaal * :x
:yschaal * evalx :regel :x
pd
plot :regel :x + :inc :max
end
• Controle of maximum nog
niet overstegen is
• Eerste x evalueren en de
schildpad naar het punt
verzetten
• Recursieve oproep naar
plot met de zelfde regel en
de zelfde waarde voor
max maar andere waarde
voor x. -> waarde van x
verhogen met inc
Extra procedure : Setinc
to SETINC :num
make "inc :num
end
• Waarom een extra procedure?
• Antwoord : We zetten die waarde niet rechtstreeks
in de procedure plot , omdat we nu we heel
gemakkelijk de waarde ervan kunnen veranderen.
Oefeningen/voorbeelden
• Teken een assenstelsel factoren 10 10
• Zet waarde van inc op 1
• Teken de functie van y = 3x – 4 voor x gaande van
–14 tot 14
• Teken nieuw assenstelsel factoren 50 50
• Plot functie x*x van –3 tot 3
• Corrigeer door ander inc te kiezen
• Enz.
Waarvoor kunnen we dit nu
gebruiken ?
• Sneller een schatting maken van de snijpunten van
een functie met de assen. Of kan je de snijpunten
van 2 functies vinden, dit kan je dan gebruiken
voor het oplossen van stelsel en dergelijke.
• Het kan ook gebruikt worden om de minima en
maxima te vinden van een functie, dit kan je
gebruiken bij afgeleiden en integralen.
Oefeningen/voorbeelden
• Opm : zoek zelf de beste waarden voor inc
en grenzen
• Bepaal ongeveer de snijpunten van de assen
met de volgende functie : y = 0.3x – 4
• Zoek de snijpunten (ongeveer) van de
volgende functies : y = (x-5)(x+4) en z =
0.7(x-2)
• enz
Download