• No results found

2 3

def herons_formel(a, b, c):

s = (a + b + c) / 2

return (s*(s-a)*(s-b)*(s-c))**0.5 print(3, herons_formel(3, 4, 5)) print(13, herons_formel(13, 14, 15)) print(51, herons_formel(51, 52, 53)) print(193, herons_formel(193, 194, 195)) print(723, herons_formel(723, 724, 725))

# svaret blir som väntat identiskt med uppgift 1

3. Utgår.

4. Uppgiften tillhör kategorin NR eftersom den handlar om att använda en

programkod. Uppgiften handlar om förståelse kring användning av Herons formel för att beräkna en triangels area.

10.3.4.3 Uppgift 3

1. Hitta alla Heronska trianglar som har en area mindre än 100 a.e.

# programmet från uppgift 2 rad 1-3 samt … for a in range(1, 100):

# svaret blir 26 st trianglar (inte 20 st som det står i uppgiften)

3. Utgår.

4. Herons formel är given, däremot finns ingen lösningsmall för att hitta samtliga trianglar.

5. En utvidgad sökning ger ingen lösningsmall.

6. Uppgiften tillhör kategorin GLR.

10.3.4.4 Uppgift 4

1. Arean av alla Heronska trianglar är delbara med samma tal. Titta i föregående uppgift och ta reda på vilket detta tal är.

2. ”3 4 5 6.0” kan räknas som basfallet eftersom alla 26 trianglars areor är delbara med just 6.

3. Utgår.

4. För att lösa den här uppgiften så krävs kunskaper kring minsta gemensamma nämnare. Detta anses vara låg nivå för Matematikkurs 3c. Detta anses vara ekvivalent med att en lösningsmall är given.

5. Utgår.

6. Uppgiften tillhör kategorin HR.

10.3.4.5 Uppgift 5

1. Det finns exakt fem Heronska trianglar där arena och omkretsen är samma tal.

Hitta dessa.

2. En rimlig lösning kan vara:

# programmet är identiskt med uppgift 3 förutom att i rad 9 läggs ytterligare en ”And”

till: and (a+b+c) == A

# svaret blir följande fem trianglar med area lika med omkretsen

4. Lösningen visar att det krävs en trivial förändring för att hitta svaret på uppgiften. Detta anses vara ekvivalent med att en lösningsmall är given.

5. Utgår.

6. Uppgiften tillhör kategorin HR.

10.4 Exponent 1c

Tabell A-4. Sammanfattning av analysresultatet för Exponent 1c. Tabellen visar antal uppgifter från respektive lösningskategori samt totala antalet uppgifter.

10.4.1.1 Uppgift 102

1. Skriv ett program som avgör om ett inmatat tal är ett primtal.

2. En rimlig lösning kan vara:

1 def primtal(tal):

3

n = int(input("Ange det tal som du vill testa:

"))

innehållsförteckning ger träff i taluppfattningskapitlet.

4. Det finns ingen lösningsmall för hur man generellt sätt avgör om ett tal är ett primtal i kapitlet.

5. En utökad sökning ger inte heller den en generell lösningsmall.

6. Uppgiften tillhör kategorin GLR.

10.4.1.2 Uppgift 103

1. Skriv ett program som listar alla primtal upp till ett inmatat värde.

2. En rimlig lösning kan vara:

# programmet från uppgift 102 rad 1-8 samt

3. Från föregående uppgift ges att även denna tillhör taluppfattningskapitlet.

4. Lösningen bygger på uppgift 102 vilket innebär att även denna uppgift tillhör kategorin GLR.

5. Utgår.

6. Uppgiften tillhör kategorin GLR.

10.4.1.3 Uppgift 106

1. Skriv ett program som bestämmer alla perfekta tal upp till talet 10 000.

2. En rimlig lösning kan vara:

3. Uppgiften hamnar i aritmetik eftersom den handlar om delbarhet som tillhör taluppfattning.

4. Uppgiftslydelsen definierar begreppet perfekta tal och hur dessa hittas. Detta kan utgöra en mall som dock inte kan användas rakt av.

5. Utgår.

6. Uppgiften tillhör kategorin LLR.

10.4.2 Procent

10.4.2.1 Uppgift 105

1. Skriv ett program som låter dig mata in lånebelopp, årsräntesats och inbetalat belopp per månad och som beräknar hur lång tid det tar att bli skuldfri.

2. En rimlig lösning kan vara:

lånebelopp = float(input("Ange lånebelopp (i kr): "))

årsräntesats = float(input("Ange årsräntesats (i %): "))

amorteringsbelopp = float(input("Ange inbetalat belopp per månad (i kr): ")) antal_månader = 0

while (lånebelopp > 0):

lånebelopp +=

lånebelopp*årsräntesats/100/12 - amorteringsbelopp

antal_månader += 1

print("Efter", antal_månader // 12, "år och", antal_månader % 12, "månader är skulden avbetalad.")

# Exempel: lånebelopp=50000,

årsräntesats=6, amorteringsbelopp=500 ger svar: 11 år och 7 månader

3. Kapitel 4.3 handlar om lån som återfinns i procentkapitlet.

4. En liknande uppgift finns i kapitel 4.3, den kan dock inte användas rakt av som mall.

5. Utgår.

6. Uppgiften tillhör kategorin LLR.

10.4.2.2 Uppgift 301a

1. Anastasia har vunnit 100 000 kr på ett lotteri. Hon sätter i början av året in beloppet på ett konto som ger 2 % ränta.

Varje nyår ökas beloppet på kontot med räntan och direkt efter att räntan har satts in på kontot tar Anastasia ut 5 000 kr.

Detta upprepas varje årsskifte. Skriv ett program som beräknar hur mycket det finns på kontot efter 15 år.

2. En rimlig lösning kan vara:

belopp = 100000 for i in range(15):

belopp = belopp * 1.02 - 5000 print("Efter 15 år finns det", round(belopp, 0),

"kronor på kontot.")

# Efter 15 år finns det 48120.0 kronor på kontot.

3. Kapitel 4.3 handlar om lån och ränta som återfinns i procentkapitlet.

4. En liknande uppgift finns i kapitel 4.3, den kan dock inte användas rakt av som mall.

5. Utgår.

6. Uppgiften tillhör kategorin LLR.

10.4.2.3 Uppgift 301b

1. Utveckla föregående program så att det skriver ut hur många år pengarna räcker.

2. En rimlig lösning kan vara:

belopp = 100000 antal_år = 0 while belopp > 5000:

belopp = belopp * 1.02 - 5000 antal_år += 1

print("Efter", antal_år, "år finns det", round(belopp, 0), "kronor på kontot.")

# Efter 25 år finns det 3909.0 kronor på kontot.

3. Kapitel 4.3 handlar om lån och ränta som återfinns i procentkapitlet.

4. En liknande uppgift finns i kapitel 4.3, den kan dock inte användas rakt av som mall.

5. Utgår.

6. Uppgiften tillhör kategorin LLR.

10.4.3 Sannolikhetslära och statistik

10.4.3.1 Uppgift 101

1. I ett exempel med kast av sex tärningar, beräknas sannolikheten för minst en sexa.

2. En rimlig lösning kan vara:

from random import randrange def antal_sexor(antal_tärningar): for i in range(samtliga):

if (antal_sexor(6) > 0):

gynnsamma = gynnsamma + 1 print("Sannolikheten för minst en sexa vid",

samtliga, "försök:",

round(gynnsamma/samtliga, 3))

# svaret blir: 0,664 3. Utgår.

4. Lösningsmall för beräkning av

sannolikhet för minst en sexa finns som ett givet exempel i kursboken.

5. Utgår.

6. Uppgiften tillhör kategorin HR.

10.4.3.2 Uppgift 101a

1. Förändra koden så att andelen kast som resulterar i precis en sexa beräknas.

2. En rimlig lösning kan vara:

# programmet är identiskt med uppgift 101 förutom följande två förändringar:

# rad 13 ändras till ”if (antal_sexor(6) == 1):”

# rad 15 ändras till ”print("Sannolikheten för exakt en sexa vid", samtliga, "försök:", round(gynnsamma/samtliga, 3))”

# svaret blir: 0,402 3. Utgår.

4. Någon lösningsmall behövs inte då förändringen anses vara trivial.

5. Utgår.

6. Uppgiften tillhör kategorin HR.

10.4.3.3 Uppgift 101b

1. Förändra koden så att programmet avslutas med en sammanfattning av alla möjliga utfall från ingen sexa upp till sex sexor.

2. En rimlig lösning kan vara:

# programmet från uppgift 101 rad 1-10 samt

samtliga = 100000 sexor = [0, 0, 0, 0, 0, 0, 0]

for i in range(samtliga):

antal = antal_sexor(6);

sexor[antal] += 1 for i in range(0, 7):

print("Sannolikheten för", i, "sexor vid", samtliga, "försök:", round(sexor[i]/samtliga, 5))

# svaret kan bli: 0,33620 0,40099 0,20011 0,05393 0,00811 0,00063 0,00003 3. Utgår.

4. Ur matematiskt

problemlösningsperspektiv så är den här uppgiften lika svår som föregående uppgift, dock mer omfattande.

5. Utgår

6. Uppgiften tillhör kategorin HR.

10.4.3.4 Uppgift 104

1. Skriv ett program som beräknar sannolikheten för utfallen 3 – 18 då summan av tre kastade tärningars värden beräknas.

2. En rimlig lösning kan vara:

from random import randrange

antal_av_summa = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

samtliga = 100000 for i in range(samtliga):

summa = randrange(1, 7) + randrange(1, 7) + randrange(1, 7)

for i in range(3, 19): någon lösningsmall för beräkning av sannolikhet för kast med tre tärningar finns inte.

5. En mindre justering krävs för att det ska gå att använda lösningsmallen för två tärningar till tre tärningar.

6. Uppgiften tillhör kategorin LLR.

10.4.3.5 Uppgift 107

1. Två vänner orienterar i skogen. Elvira kommer i mål någon gång i intervallet 30 – 50 minuter, där varje sluttid är lika sannolik. För Oskars del inträffar alla tider i intervallet 40 – 60 minuter med samma sannolikhet. Bestäm

sannolikheten för att Oskar kommer i mål före Elvira.

2. En rimlig lösning kan vara:

import random

gynnsamma = 0

samtliga = 1000000

for i in range(samtliga):

Elvira = 30 + 20 * random.random() Oskar = 40 + 20 * random.random()

if (Oskar < Elvira):

gynnsamma += 1

print("Andel då Oskar kommer först:", gynnsamma / samtliga)

# svaret kan bli: 0,124841, vilket är nära den korrekta sannolikheten 1/8

3. Utgår.

4. Försök med likformig

sannolikhetsfördelning finns i samma delkapitel, dock så finns ingen

lösningsmall som kan användas rakt av.

5. Utgår.

6. Uppgiften tillhör kategorin LLR.

10.4.3.6 Uppgift 108a

1. Man drar 13 kort från en kortlek samtidigt som man räknar upp från 1 till 13. Om det dragna kortet har samma valör som det tal du just då säger, har patiensen misslyckats. Skriv ett program som beräknar sannolikheten för att patiensen lyckas. for i in range(samtliga):

if (lyckades(1)):

gynnsamma += 1

print("Andelen lyckade patienser är", gynnsamma / samtliga)

# svaret kan bli: 0,3661 3. Utgår.

4. Uppgiften tillhör kategorin NR eftersom det är tydligt hur den ska lösas enligt uppgiftslydelsen.

10.4.3.7 Uppgift 108b

1. Samma som föregående uppgift fast nu dras en hel kortlek (52 kort).

2. En rimlig lösning kan vara:

# programmet är identiskt med uppgift 108a förutom att rad 18 ändras från lyckades(1) till lyckades(4)

# svaret kan bli: 0,018 3. Utgår.

4. Uppgiften tillhör kategorin NR av samma anledning som föregående uppgift.

10.4.3.8 Uppgift 109

1. Skriv ett program som beräknar sannolikheten att få en kåk då man drar fem kort helt slumpvis från en kortlek med 52 kort. En kåk innebär att man har for i in range(samtliga):

random.shuffle(kortlek) for j in range (5):

hand[j] = kortlek[j]

hand = sorted(hand)

if (hand[0] == hand[1] and hand[3] ==

hand[4] and (hand[2] == hand[3] or hand[2]

== hand[1])):

gynnsamma += 1

print("Andelen kåkar är", gynnsamma / samtliga)

Resultatet av en exekvering kan se ut så här:

# svaret kan bli: 0,00144 3. Utgår.

4. Det finns ingen lösningsmall för hur man avgör om tre av korten har samma valör och de övriga två samma valör i kapitlet.

5. En utökad sökning ger inte heller den en lösningsmall.

6. Uppgiften tillhör kategorin GLR.

10.4.3.9 Uppgift 110

1. Yatzy spelas med fem tärningar. Efter ett första kast får man kasta om vilka tärningar man vill. Man får göra högst två extra kast. Det bästa resultatet man kan få är Yatzy, vilket innebär att alla tärningar visar samma värde. Skriv ett program som beräknar sannolikheten att få Yatzy i valfri valör på sammanlagt tre kast. Låt programmet även visa sannolikheten för att det blir fyra, tre, två eller inga lika efter de tre kasten. Efter varje kast ska man spara tärningar som det finns flest av 2. En rimlig lösning kan vara:

def kasta(tärningar, maxAntalAvSamma, indexAvMaxAntal, kastaAntalTärningar, antalKastKvar):

for i in range(kastaAntalTärningar):

tärning = random.randint(0, 5) for i in range(samtliga):

maxAntalAvSamma = kasta([0, 0, 0, 0, 0,

print("\nAndelen Yatzy är", antalYatzy / samtliga)

print("Andelen fyra lika är", antal4 / samtliga) print("Andelen tre lika är", antal3 / samtliga) print("Andelen två lika är", antal2 / samtliga) print("Andelen alla olika är", antal1 / samtliga)Resultatet av en exekvering kan se ut så här:

# svaret kan bli: Yatzy: 0,04609, 4 lika:

0,24693, 3 lika: 0,44996, 2 lika: 0,25629, alla olika: 0,00073

3. Utgår.

4. Det finns bl.a. ingen lösningsmall för hur man avgör vilka kort som ska sparas inför nästa kast. Detta kräver icke-triviala programmeringskunskaper.

5. En utökad sökning ger inte heller den en lösningsmall.

6. Uppgiften tillhör kategorin GLR.

Related documents