P01 Matematikprojekt01

Detta är en ämnesövergripande uppgift där vi arbetar ämnesöverskridande mellan matematik- och programmeringsämnet. Det finns två olika uppgifter, de som läser Ma1c gör uppgift 1 (som består av flera delar) och de som läser Ma3c gör uppgift 2 men kan också välja att göra någon eller flera av deluppgifterna för uppgift 1.

P01.1 Matematik1c

Primtalsfaktorer

Denna uppgift är främst för elever som läser Matematik 1c.

I denna uppgiften, som är uppdelad i fyra delar, så skall du skapa en applikation som undersöker ett tal genom att kika på hur ett angivet tal är uppbyggt. Uppgifterna bygger på varandra så du kan hela tiden bygga vidare på din applikation, i alla fall i de tre första uppgifterna.

A. Uppgift A - delbarhet [klicka för att öppna]

Bygg en applikation som frågar användaren efter ett heltal. Lista sedan alla tal som talet är jämnt delbart med.

Om ett tal bara är delbart med 1 och sig själv är det ett primtal, bestäm om talet är ett primtal och skriv ut om så är fallet eller inte.

Exempelutskrift 1

Ange ett tal: 24
Talet 24 är delbart med följande tal; 1, 2, 3, 4, 6, 8, 12, 24,
Talet 24 är delbart med 8 st tal och är därför inget primtal

Exempelutskrift 2

Ange ett tal: 7
Talet 7 är delbart med följande tal; 1, 7,
Talet 7 är ett primtal

Tips

Planera uppgiften innan du börjar koda, bygg gärna upp det med pseudokod så att du har lösningen klar för dig först. Ta sedan inte bort eventuell pseudokod utan låt den följa med vid inlämningen.

B. Uppgift B - primtalsfaktorisering [klicka för att öppna]

Bygg nu vidare på uppgift A och nu vill jag att du dessutom bryter ner det inmatade talet i primtalsfaktorer. Lägg till i den tidigare utskriften vilka primtalsfaktorer som talet är uppbyggt av.

Exempelutskrift

Ange ett tal: 24
Talet 24 är delbart med följande tal; 1, 2, 3, 4, 6, 8, 12, 24,
Talet 24 är delbart med 8 st tal och är därför inget primtal
Talet 24 kan delas upp i primtalsfaktorer med följande tal; 2, 2, 2, 3,
Talet 24 har 4 primtalsfaktorer och är därför inget primtal

Tips

Det finns en anledning att talet 1 inte är ett primtal!

C. Uppgift C - primtalsfaktorisering i potensform [klicka för att öppna]

I uppgift B så såg vi att talet 24 är uppdelat i primtalsfaktorerna 2, 2, 2, 3 vilket innebär att 24 = 2 3 * 3. Bygg ut applikationen så att det skriver ut primtalsfaktorerna i potensform.

Exempelutskrift

Ange ett tal: 24
Talet 24 är delbart med följande tal; 1, 2, 3, 4, 6, 8, 12, 24,
Talet 24 är delbart med 8 st tal och är därför inget primtal
Talet 24 kan delas upp i primtalsfaktorer med följande tal; 2, 2, 2, 3,
Talet 24 skrivs i potensform 2^3 * 3.
Talet 24 har 4 primtalsfaktorer och är därför inget primtal

Tips

Det finns listor som gåtts igenom men som vi inte har övat på. Ännu.

D. Primtal [klicka för att öppna]

Dags att släppa analysen av det inmatade talet och istället lägga fokus på primtal. Denna uppgift är tvådelad, bygg en applikation med bägge delarna eller bygg dem var och en för sig i två olika applikationer.

  1. Den första uppgiften handlar om att låta användaren mata in ett tal (n) och sedan plocka fram de n första primtalen.
  2. Den andra uppgiften är att låta användaren ange ett tal (n) och sedan lista alla primtal som finns upp till n.

Exempelutskrift 1

Ange hur många primtal du vill hämta: 12
De 12 första primtalen är [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]

Exempelutskrift 2

Ange ett tal till vilket du vill hämta alla primtal: 24
Mellan 1 och 24 finns det 9 st primtal.
Alla primtalen [2, 3, 5, 7, 11, 13, 17, 19, 23]

Gör så många uppgifter som du klarar av. När du är klar så läs igenom inlämningsinstruktionerna och lämna in enligt dessa.

P01.2 Matematik 3c

Derivatans definition

Denna uppgift är främst för de elever som läser Matematik 3c.

Uppgift A. Andragradsfunktioner [klicka för att öppna]

Din uppgift är att bygga en applikation för att undersöka derivatan med hjälp av derivatans definition. Till att börja med ska du arbeta med funktionen f(x)=5x2

Konstruera en applikation som studerar f'x med derivatans definition, genom att låta h gå från 1 till 0 med steglängden 0.01. Applikationen ska alltså beräkna

funktion
  • Applikationen ska be användaren mata in värden på x, tills användaren på något sätt som du bestämmer inte längre vill mata in fler värden på x som ska undersökas.
  • Utskriften ska på ett lämpligt sätt synliggöra derivatan där det tydligt framgår att då h går mot 0 närmar vi oss derivatan för det inmatade värdet på x.

Exempelutskrift

Utskriften ska innehålla:

  • Funktionen
  • Funktionens derivata
  • För varje inmatat x-värde, skriv ut derivatans värde då h=1, h=0,75, h=0,5, h=0,25, h=0,01
  • Ett värde på vad derivatan går mot då h=0, avrundat till 1 decimal.

Hur det hela presenteras får du bestämma själv, nedan följer ett exempel där mycket fokus lagts på formatering.

Utskrift (klicka på bilden för att öppna i ny flik)

Klicka på bilden för att förstora den.

Tips: Planering

Planera uppgiften innan du börjar koda, bygg gärna upp det med pseudokod så att du har lösningen klar för dig först. Ta sedan inte bort eventuell pseudokod utan låt den följa med vid inlämningen.

Tips: Upphöjt med 2

För att skriva ut x2 i Python så skriver du print("x\u00b2").

Hjälp: Pseudokod, inläsningen [klicka för att visa]

Här finns ett förslag på hur du kan skriva pseudokod för att läsa in tal.

  • Skapa en oändlig loop
    • Be användaren ange ett tal
    • Ta emot talet
      • Prova att konvertera inmatningen
        • Om ok: lägg tal i listan.
        • Om ej ok: bryt loopen

Skriv sedan ut listan för att testa att det fungerar.

Hjälp: Pseudokod, beräkningar [klicka för att visa]

Här finns ett förslag på hur du kan skriva pseudokod för att utföra dina beräkningar.

  • Skapa en variabel som innehåller uttrycket för f(x).
  • Starta en loop som låter h gå mellan 100 och 0, med steglängden -1
    • dividera h med 100.
    • om h är något av värdena 1, 0,75, 0,5, 0,25 eller 0,01
      • Skapa en variabel som innehåller uttrycket för f(x+h).
      • Skapa en variabel som innehåller uttrycket för derivatans definition.
      • Skriv ut värdet på h samt värdet på f'(x).

Det går i nuläget också bra att loopa över en lista med olika värden på h.

Tilläggsuppgift 1 [klicka för att öppna]

Betrakta nu den något mer allmänna andragradsfunktionen

funktion

Arbeta om din applikation så att användaren ska ange både a och x. Applikationen skall också låta användaren mata in flera värden på x att undersöka derivatan i.

Utskriften ska visa funktionen, derivatan för funktionen samt synliggöra derivatan för inmatade xh går mot 0 på ett tydligt sätt.

Exempelutskrift

Utskrift (klicka på bilden för att öppna i ny flik)

Klicka på bilden för att förstora den.

Tilläggsuppgift 2 [klicka för att öppna]

Vi ska nu slutligen bekanta oss med den allmänna andragradsfunktionen

funktion

Med utgångspunkt i tilläggsuppgift 1 ska du nu låta användaren ange samtliga konstanter a, b och c.

Uppgift B. Potensfunktioner [klicka för att öppna]

Bygg om din applikation för att istället hantera den allmänna potensfunktionen

funktion

I den här uppgiften ska användaren få mata in C och a för flera olika funktioner.

Derivatan ska sedan beräknas för varje funktion för samtliga heltalsvärden på x mellan 0 och 10.

Tips: Värdet på h

När du jobbar med potensfunktioner så kommer det visa sig att det inte räcker att låta h stanna vid 0.01. För att få korrekta värden kommer du behöva låta h går ännu närmare 0. Resonera kring hur nära 0 (hur låga tal för h) du behöver använda för att få ett bättre värde på derivatan.

Gör så många uppgifter som du klarar av. När du är klar så läs igenom inlämningsinstruktionerna och lämna in enligt dessa.

P01.3 Inlämningsinstruktioner

Inlämningsinstruktioner

Innan du lämnar in uppgiften kolla att följande saker är gjorda;

  • Filen med källkod har rätt namn, klass_namn_projekt01.py.
  • Applikationen körs utan error. Koden är rensad från testdata och ser ok ut att lämna in.
  • Källkoden är kommenterad. För din egen del se till att du kommenterar koden eftersom den hela tiden byggs på.
  • Skapa ett huvud i källkoden där du som en kommentar skriver ditt namn och klass, vilken uppgift som du har löst och sedan en kort utvärdering av lösningen/ditt arbete. Jag är extra intresserad över hur du har tänkt när du fått ta olika beslut.
  • Lämna in en pseudokod till den svåraste uppgift du löst som är så tydlig att till och med din mattelärare förstår lösningen. Utgå då ifrån att matteläraren förstår matematiken men att hen inte kan programmering.

Exempel på kodhuvud

# Anders Andersson, 18TEx
# Projekt01, uppgift d
# Det var en utmanade uppgift och jag klarade inte av sista tillägget.
# Det som var mest utmanande var hur jag skulle konvertera det som matades in...
# ....

Mer att göra? [klicka för att visa]

Om du är klar med alla uppgifter och inte vet vad du skall göra så fundera på om det finns någon gammal uppgift du vill göra klar, kika vidare på yatzyuppgiften du kanske började med i moment04 eller gör någon av uppgifterna från gamla kvaltävlingar för programmeringsolympiaden nedan.

Programmeringsolympiaden: Tunnelbana [klicka för att öppna]

Programmeringsolympiaden: Köpa matta [klicka för att öppna]

Programmeringsolympiaden: Minigolf [klicka för att öppna]

Programmeringsolympiaden: Busskortet [klicka för att öppna]