Symbolhanterade program och programmering i undervisningen Föredrag B307 på Matematikbiennalen 2016 Johan Wild [email protected] 2016-02-13 Abstract Jag argumenterar för att vi skall använda symbolhanterade programvara och programmering för att nå nya delar av matematiken stället för att bara lösa lite mer tillskruvade varianter av dagen ”normala skolboksproblem”. Jag exemplifierar både med fall som ryms inom dagens centrala innehåll och som är lite mer visionära. För att kunna avhandla denna typ av matematik finns ett stort fortbildningsbehov av dagens lärare, vilket jag tycker vi skall se positivt på. Jag har inga svar på frågor som rör vad man i framtiden skall betrakta som ”normala skolboksproblem” och vad man rimligen kan komma att kräva av framtidens elever för olika betyg. Min erfarenhet av hur långt man faktiskt kan nå övertygar mig dock om behovet av att lyfta dessa frågor. 1 Inledning Det finns många program som utför symbolisk matematik, något som ofta förkortas CAS, sprunget ur Computer Algebra System. Några är fria och gratis, till exemepl Maxima, Sage och Geogebra. Vissa tillverkare av miniräknare har funktioner för CAS i sina premiummodeller. Begreppet programmering är mycket omfattande och innefattar allt från att välja program på en diskmaskin till att skriva program för datorer med flera processorer för högprestandaberäkningar. Sedan Gy11 får man använda CAS på nationella prov, och i samhällsdebatten hörs allt fler som vill införa programmering som ett ämne, eller del av något annat, från grundskolans tidigaste år. Trots detta hörs sällan något om vad målet med detta egentligen är. På ett allmänt plan tas det för självklart att det finns fördelar, men det hörs sällan något om eventuella nackdelar och än mer sällan om konkreta mål. Min erfarenhet av CAS är att det inte är ett mirakelmedel som får svaga elever att nå godkänt. Möjligen kan vissa fenomen visualiseras så att vissa elevgrupper kan förstå några begrepp och kanske klara olika sorters problem med lite mindre jobb. Det är också detta jag sett exemplifierat i de flesta fall jag kommit i kontakt med reklam för CAS. Jag tycker vi borde sikta lite högre, och jag har också erfarenhet av att det är möjligt. 2 Exempel Alla exempel i detta avsnitt är genomförda och det finns material att ladda hem för den som önskar, se länkarna i 4. Jag skriver därför inget om hur man gör i olika program, utan fokuserar istället på vad som gjorts. 1 2.1 Abstrakt algebra Med hjälp av CAS kan polynom av hög grad faktoriseras, och man kan bestämma kvot och rest vid polynomdivision. Man kan alltså med små medel få elever att ”uppleva” likheterna mellan polynom och heltalen. Begrepp som största gemensamma delare, minsta gemensamma multipel, kvot, rest med mera fungerar på samma sätt. Hur grafen till polynomfunktioner beror av faktorernas typ1 och multiplicitet. Det blir ännu mer intressant för rationella uttryck, där både täljare och nämnare har sin faktorisering. En liten finess man kan belysa är att om divisionen av t(x) med n(x) ger kvoten q(x) och resten r(x) gäller att det rationella uttrycket t(x) → q(x) då x → ∞. n(x) Att kunna resonera om denna sorts begrepp och problem tycker jag ryms inom dagens centrala innehåll. Delar av det tas upp i de flesta läromedel, men då oftast bara i relativt enkla problem rörande att identifiera nollställen till nämnaren i ett rationellt uttryck givet en graf. 2.2 Numerisk lösning av PDE Att skriva ett litet program som stegar fram en position med hjälp av en hastighet i små steg i tiden är mycket enkelt. Att det är att lösa en ordinär differentialekvation med Eulers stegmetod behöver man inte säga om man inte undervisar i Matematik 5. Elever i Fysik 1 klarar det i alla fall. Elev Elevsson 2013−05−24 Lika enkelt är det att ha olika parametrar koordinatberoende. I två dimensioner kan man då vips simulera rörelser i kraftfält. Diverse roliga problem, som att få partiklar att studsa mot ytor och då kanske även förlora rörelseenergi, belyser många viktiga begrepp inom både matematiken och fysiken. Ett exempel på ett elevresultat av en sådan övning visas nedan. −3.0 1 Över de reella talen finns inte irreducibla polynom av högre grad än två, men det är ändå intressant att identifiera i funktionens Detta skall f rest lladetta en laddad partikel som rgraf. r sig i omloppsbana runt en laddning med styrkan (−3.0 Colomb). Den f r sin elliptiska bana tack vare colombkraften som p verkar partikeln i varje punkt. Samtidigt visar vektorf ltet i bakgrunden kraftf ltets styrka och riktning. 2 Här visas både kraftfältet, som är av typen f (r) = − k . r2 och rörelsen för en partikel i det. Partikelns läge är inte ritat för alla tidpunkter. Vill man inte göra själva programmeringen till det huvudsakliga problemet kan man tillhandahålla ett ”skalprogram” som där den grundläggande funktionaliteten för att stega fram tiden och datorgrafiken redan finns. Då kan eleverna fokusera på den intressanta matematiken och fysiken. Steget till att lösa partiella differentialekvationer är inte stort. Med notationen att fn0 är ”vid punkt n” och ”nu”, samt fn+ och fn− som ett steg fram och tillbaka i tiden gäller f0 − f0 ∂f → n+1∆x n ∂x 0 0 − 2fn0 + fn−1 fn+1 ∂ 2f → ∂x2 ∆x2 ∂f ∂t ∂ 2f ∂t2 fn+ − fn0 ∆t fn+ − 2fn0 + fn− → ∆t2 → (1) En elev i årskurs ett accepterar de två första utan problem, om man jämför med fallet då f (t) beskriver en rörelse. De två sista går att begripliggöra lite mer handviftande om man jämför med fallet då andraderivatan beskriver en krökning av en kurva. Ett program som löser till exempel vågekvationen blir inte långt. Vågen kan utan problem ha en koordinatberoende utbredningshastighet, och kommer naturligtvis att uppvisa kända fenomen vid övergångar. Nedan visas en lösning till vågekvationen. Programmet är ca 40 rader långt och är skrivet av en elev i årskurs 2. Tiden går uppåt i bilden och prickarnas storlek är proportionell mot vågens utbredningshastighet. Till och med kopplade partiella differentialekvationer kan lösas enkelt med följande metod. 3 Antag att vi vill lösa x ∂fx ∂fy ∂ 2 fx = 0 2 + 2 ∂t x + y 2 ∂t ∂t ∂ 2 fy y ∂fx ∂fy = 0 2 + 2 2 ∂t x + y ∂t ∂t där fx (x, y) och fx (x, y) beskriver ett vektorfält i R2 . Detta är på sätt och vis svårt, men någon CAS-proramvara kan användas för att göra bytet (1). Då fås ett (omfattande) algebraiskt ekvationssystem som kan lösas med avseende på + + . Detta ger en numerisk lösning. och fyn fxn 2.3 Differentialgeometri och allmänna relativitetsteorin Som en variant på förra exemplet skall jag beskriva det mest avancerade fallet jag hittills tagit upp. Fysik 3 skall ge en orientering av den allmänna relativitetsteorin. Den innehåller förhållandevis avancerad matematik. För att begripliggöra denna studerar vi fallet där vi inför en metrik i R2 genom avståndet i R3 på en yta av typen z = f (x, y). z = f (x, y) = 1 1 = 2 N x +y +1 2 ger metriken ds 2 2 2 4x2 8xy 4y 2 2 = 1+ 4 dx + 4 dxdy + 1 + 4 dy 2 . N N N (2) där N = x2 + y 2 + 1. Med mycket handviftande kan man motivera att det finns en differentialekvation vars lösningskurvor är geodeter: a c d 2 xb b dx dx + Γ = 0. ac dt dt dt2 (3) Även denna kan lösas med metoden beskriven ovan. Behovet av CAS är uppenbart då den pythonkoden för ”nästa steg” i vardera komponent blir ca 1000 tecken långt. Lösningsmetoden är lika enkel som när man löser f 0 + k(M − f )f = 0, vilket kanske är mer brukligt i Matematik 5. Nedan visas några geodeter som utgår från punkten (2, −2) och har olika riktningar. Cirklarna är nivåkurvor för z = f (x, y). 4 0.1 0.1 0.2 0.2 0.1 0.3 0.6 0.2 0.2 0.6 0.1 0.1 0.1 0.2 0.7 0.60.7 0.5 0.4 0.3 0.3 0.4 0.1 0.2 0.1 0.1 Efter konkreta övningar i R2 kan man göra motsvarande i rumtiden, till exempel beräkna längden av kurvor i Schwarzschildmetriken. 3 Framtidsfrågor Exemplen ovan belyser några intressanta problem som vi inom lärarkollegiet måste förhålla oss till. Med rådande centralt innehåll och kunskapskrav tycker jag att man mycket väl kan klämma in en hel del abstrakt algebra i Matematik 2-4 och lite intressantare differentialekvationer i Matematik 5. Inom Fysik 2 ska man göra simuleringar av rörelser, vilket skapar förutsättningar för mervärde. Ägnar man mycket tid åt detta finns naturligtvis risken att man blir sämre på något annat. Till exempel att öva inför nationella prov. Att betyg avviker från resultat på NP är en känslig fråga. Det finns också en möjlighet/risk att eleverna lär sig lite olika saker då valet av problem för diverse programmeringsprojekt kan vara ganska fritt. Det är i huvudsak bra att undervisningen blir mer intressedriven, men vi måste ändå hantera detta som ett potentiellt problem. Om man ser längre in i framtiden, bortom dagens centrala innehåll, öppnas det väldigt många möjligheter. Frågan är då vad vi vill att elever skall ha insikt i. Skall vi ägna tid åt abstrakt algebra, differentialgeometri, matematisk statistik, linjär algebra och/eller partiella differentialekvationer eller något annat? Vad ska vi rimligen kräva av våra elever på olika betygsnivåer? Idag finns en rad ”standardproblem” man förväntas lösa i olika kurser. Vilka är framtidens standardproblem? Nästa problem, kanske det intressantaste, är att man med CAS och lite programmering kan nå delar av matematiken som många av dagens lärare inte kan speciellt mycket om. Med dagens organisation för att utbilda lärare förväntas man lära sig all matematik man någonsin kommer att behöva kunna inom ramen för lärarutbildningen. Möjligheterna till ämnesfortbildning är nästan obefintliga. Min erfarenhet är tyvärr också att intresset för att lära sig mer ofta dör på grund av för hög arbetsbelastning och avsaknad av incitament. Vi måste vända denna fråga till något positivt! Naturligtvis skall även vi fortbilda oss i 5 våra ämnen, och det måste finnas resurser för det. Jag tycker det är rimligt att man läser en kurs om ca 5p / 7,5 hp på C-, D- eller forskarutbildningsnivå vart tredje år inom ramen för sin tjänst. Det skulle kosta ca 5% av vår arbetstid, vilket inte är orimligt mycket. Att bli mer kunnig i sitt ämne känns för mig som en relevant karriärmöjlighet för lärare. Alla behöver naturligtvis inte bli ämnesexperter. Det kommer finnas behov av lärare av alla sorter med olika kompetens, men för att nyttja allas kompetens bäst kanske vi behöver organisera om oss. Att samma lärare undervisar alla i en klass och handleder alla programmeringsprojekt är kanske inte rimligt. Personligen ser jag fantastiska möjligheter till diverse samarbeten mellan olika ämnen och kollegor och hoppas många vill engagera sig denna utveckling. 4 Mer information och länkar En längre version av denna text, som även innehåller bilder, finns på www.strangnaskanotmaraton.se/Wild Där finns också olika läromedel som berör exemplen som tas upp i denna text. Det gäller även de skalprogram som används inom programmeringen och instruktionsfiler om hur man använder Maxima och Sage. Maxima finns på http://andrejv.github.io/wxmaxima/ Sage finns på http://www.sagemath.org 6