För att få första och sista elementet i en lista kan man använda First och Last

Relevanta dokument
Laboration 3: Rekursiva definitioner, listor och ett olöst problem

I detta arbetsblad finns ett antal exempel på hur man kan använda Mathematica för att få översikt över funktioner och datamängder.

MMA132: Laboration 2 Matriser i MATLAB

1, 2, 3, 4, 5, 6,...

Texten är en omarbetning av en text skriven av Rikard Bögvad för kursen Matematik I (30 hp).

xmax f d x. Om du tycker att texten i arbetsbladet är för liten kan du förstora den genom att ändra Magnification under Windows i den övre menyn.

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

, S(6, 2). = = = =

Hela tal LCB 1999/2000

Kombinatorik. Kapitel 2. Allmänt kan sägas att inom kombinatoriken sysslar man huvudsakligen med beräkningar av

Matematisk kommunikation för Π Problemsamling

Medan du läser den är det meningen och viktigt att du ska aktivera de celler där det står Mathematicakommandon(i fetstil).

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Lösning till tentamensskrivning i Diskret Matematik för CINTE och CMETE, m fl, SF1610, tisdagen den 2 juni 2015, kl

M0038M Differentialkalkyl, Lekt 15, H15

Matematisk kommunikation för Π Problemsamling

Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x

KOMBINATORIK. Exempel 1. Motivera att det bland 11 naturliga tal finns minst två som slutar på samma

Induktion, mängder och bevis för Introduktionskursen på I

Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

TAMS79: Föreläsning 10 Markovkedjor

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl

Algoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T

Något om Taylors formel och Mathematica

ÄNDLIGT OCH OÄNDLIGT AVSNITT 4

Laboration: Grunderna i MATLAB

1. (3p) Ett RSA-krypto har parametrarna n = 77 och e = 37. Dekryptera meddelandet 3, dvs bestäm D(3). 60 = = =

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl

DEL I. Matematiska Institutionen KTH

Lösning av tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, tisdagen den 27 maj 2014, kl

Datorlaboration :: 1 Problembeskrivning ::

Instruktion för laboration 1

Explorativ övning 4 ÄNDLIGT OCH OÄNDLIGT. Övning A

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 2 november 2015 Sida 1 / 23

Lösning till tentamensskrivning i Diskret Matematik, SF1610 och 5B1118, torsdagen den 21 oktober 2010, kl

TANA17 Matematiska beräkningar med Matlab

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

MA2047 Algebra och diskret matematik

Övningshäfte 3: Funktioner och relationer

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 14 augusti, 2002

Lösning till tentamensskrivning på kursen Diskret Matematik, moment A, för D2 och F, SF1631 och SF1630, den 10 januari 2011 kl

MAPLE MIKAEL STENLUND

När du gjort detta kan du öppna motsvarande övning i WebWork: Självstudie 3(algebra), och lösa problemen där med samma metoder.

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

MMA132: Laboration 1 Introduktion till MATLAB

Begreppen "mängd" och "element" är grundläggande begrepp i matematiken.

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

Övningar. MATEMATISKA INSTITUTIONEN STOCKHOLMS UNIVERSITET Avd. Matematik. Linjär algebra 2. Senast korrigerad:

Lösningar till utvalda uppgifter i kapitel 5

inte följa någon enkel eller fiffig princip, vad man nu skulle mena med det. All right, men

Övningshäfte 2: Induktion och rekursion

6 Derivata och grafer

Några saker som jag inte hann: Ur trigonometriska ettan kan vi uttrycka och i termer av. Vi delar båda led i trig. 1:an med :

1. (3p) Ett RSA-krypto har de offentliga nycklarna n = 33 och e = 7. Dekryptera meddelandet 5. a b c d e. a a b c d e

Föreläsning 6: Induktion

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

y y 1 = k(x x 1 ) f(x) = 3 x

Material till kursen SF1679, Diskret matematik: Lite om kedjebråk. 0. Inledning

Lösningsförslag till tentamensskrivning i SF1610 Diskret Matematik för CINTE 30 maj 2018, kl

Begreppen "mängd" och "element" är grundläggande begrepp i matematiken.

LABBA MED PRIMTAL OCH DELBARHET. Andreas Wannebo

1 Talteori. Det här kapitlet inleder vi med att ta

TALTEORI FÖR ALLA 1 Juliusz Brzezinski

När man vill definiera en matris i MATLAB kan man skriva på flera olika sätt.

STYRANDE SATSER. 1) Skriv ett program som räknar ut hur många år du har till pensionen. Vi räknar här med att man pensioneras det år man fyller 65 år.

Laboration 4: Integration på olika sätt

Introduktion till MATLAB

Uppgift 1 ( Betyg 3 uppgift )

18 juni 2007, 240 minuter Inga hjälpmedel, förutom skrivmateriel. Betygsgränser: 15p. för Godkänd, 24p. för Väl Godkänd (av maximalt 36p.

(N) och mängden av heltal (Z); objekten i en mängd behöver dock inte vara tal. De objekt som ingår i en mängd kallas för mängdens element.

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

Fri programvara i skolan datoralgebraprogrammet Maxima

Matematisk problemlösning

Lars-Daniel Öhman Lördag 2 maj 2015 Skrivtid: 9:00 15:00 Hjälpmedel: Miniräknare, lock till miniräknare

Lennart Rolandsson, Uppsala universitet, Ulrica Dahlberg och Ola Helenius, NCM

4. Bestäm alla trippler n 2, n, n + 2 av heltal som samtliga är primtal. 5. Skriv upp additions- och multiplikationstabellen för räkning modulo 4.

Diskret matematik, lektion 2

3 Man kan derivera i Matlab genom att approximera derivator med differenskvoter. Funktionen cosinus deriveras för x-värdena på följande sätt.

Laboration: Grunderna i Matlab

Bisektionsalgoritmen. Kapitel Kvadratroten ur 2

SF1900 Sannolikhetsteori och statistik, HT 2017 Laboration 1 för CINEK2

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Algebra I, 1MA004. Lektionsplanering

Mängdlära. Kapitel Mängder

I kursen i endimensionell analys är mängden av reella tal (eng. real number), R, fundamental.

Allmänt om Mathematica

Mängder och kardinalitet

2 (6) k 0 2 (7) n 1 F k F n. k F k F n F k F n F n 1 2 (8)

SJÄLVSTÄNDIGA ARBETEN I MATEMATIK

Modul 1 Mål och Sammanfattning

Programkonstruktion och Datastrukturer

MMA132: Laboration 1 & 2 Introduktion till MATLAB

Institutionen för Matematik. SF1625 Envariabelanalys. Lars Filipsson. Modul 1

TAIU07 Matematiska beräkningar med Matlab

Tentamen i Beräkningsvetenskap I/KF, 5.0 hp,

NATIONELLT KURSPROV I MATEMATIK KURS D HÖSTEN Del I, 9 uppgifter utan miniräknare 3. Del II, 8 uppgifter med miniräknare 6

Transkript:

Arbetsblad 3 I det tredje arbetsbladet tar vi upp rekursiva definitioner, listor och primtal. Precis som det tidigare arbetsbladet är detta en mindre modifiering av en text skriven av Rikard Bögvad för kursen Matematik I (30 hp). En skillnad mot tidigare arbetsblad är att uppgifterna är litet mer omfattande. För att underlätta prioritering av uppgifter har jag angivit svårighetsnivå i inledningen av varje uppgift. Svårighetsnivå 1 är den enklaste typen av uppgift, svårighetsnivå 3 är den svåraste. 1. Att hitta de största talen i en lista. Mycket av det material som Mathematica producerar är listor, alltså ordnade mängder. Vi har sett att en matris t ex är en lista av sina rader, som i sin tur är listor av tal. Lösningarna till en ekvation är en lista av transformationsregler. Det finns många kommandon för att göra allt man kan vilja göra med listor. Här är några exempel. En lista kan se ut så här: {15,25,35,45,55,65} För att sedan plocka ut i:te element ur en lista, skriver man [[i]] efter listan, t ex 815, 25, 35, 45, 55, 65<@@5DD Har man en lista av listor, t ex följande lista l av punkter i planet, kan man alltså plocka ut det 2:dra elementet ur den 3:de listan i l så här. l = 8811, 22<, 833, 44<, 855, 66<, 877, 88<< l@@3dd@@2dd För att få första och sista elementet i en lista kan man använda First och Last First@lD Last@lD Det finns kommandon för att ta snitt och komplement, och för att välja ut element som uppfyller ett visst kriterium, t ex vara jämna eller något annat. Se nästa exempel. Här tillverkar vi en lista på binomialkoefficienter, kallad bc. bc = Table@Binomial@20, id, 8i, 1, 20<D Sidospår, om att införa egna namn: Alla Mathematicas inbyggda funktioner börjar på stor bokstav. En grundregel som man kan använda för att markera att en funktion är vår egen och inte Mathematicas är alltså att låta dess namn börja med en liten bokstav. Även om denna regel inte används konsekvent i denna arbetsbok så rekomenderas ändå att du gör det! Tillbaka till vår lista med binomialkoeficienter: Det största elememtet i bc hittar vi så här: Max@bcD Vilket är det nu? Tittar vi på listan verkar det ligga mitt i. Vi kan plocka ut det tionde elementet i listan såhär: bc@@10dd Binomial@20, 10D Det finns förstås ett inbyggt kommando i Mathematica för att hitta de index där ett element förekommer:

2 Arbetsblad3.nb Position@bc, Max@bcDD Slutligen kan vi plotta alla koefficienterna JJ = ListPlot@bc, PlotStyle Ø PointSize@0.02DD Vi kan förena punkterna (i ordningsföljd) genom kommandot Joined Æ True. Show@JJ, ListPlot@bc, Joined Ø TrueDD Här är några fler exempel på listor och linjeteckningar. Nedanstående kommando skapar en lista av 1000 slumpade punkter i planet vars koordinater ligger mellan 0 och 1. Aktivera cellerna! slumppunkter = Table@RandomReal@80, 1<, 2D, 8i, 20<D; ListPlot@slumppunkterD ListPlot@slumppunkter, Joined Ø True, Axes Ø FalseD 1 (svårighetsnivå 1). Bilda en lista l1 båstående av 10000 slumpade heltal i intervallet [1,20000]. a) Avgör om elementet 10000 ligger i listan l1 (genom lämpligt kommando i Mathematica - sök i hjälpen!). b) Bestäm antalet unika element i listan l1 (genom lämpligt kommando i Mathematica - sök i hjälpen!). c) Finn ett tal i l1 med högsta frekvens (genom lämpligt kommando i Mathematica - sök i hjälpen!). 2 (svårighetsnivå 3). Bestäm hur många perfekta blandningar av en kortlek man behöver utföra för att få tillbaka kortleken i den ordning man började med. Med en perfekt blandning menar jag detta: Dela upp högen i två likadana högar och alternera kort från vardera högarna. 2. Hitta primtalstvillingar Det finns oändligt många primtal, fast de ligger glesare och glesare bland heltalen. Vissa av dem som 11 och 13 eller 34 301 och 34303 skiljer sig bara med 2 och kallas för primtalstvillingar. Ingen vet om det finns oändligt många sådana eller inte. Det närmaste man har kommit är att man lyckats visa att det finns oändligt många primtal som skiljer sig med 246. Detta är ett mycket nytt resultat, det är från 2014 och bygger på ett banbrytande arbeta av Yitang Zhang från 2013. Här ska vi leka lite och se att det finns primtalstvillingar större än en miljard. Mathematica kan avgöra om ett tal är ett primtal: PrimeQ@65 537D PrimeQ@65 536D Vi kan få det 1000:de primtalet Prime@1000D Och då kan vi använda Table för att göra en lista av de första hundra primtalen(som vanligt ger vi ett påhittat namn åt den) primtalstabell = Table@Prime@iD, 8i, 1, 100<D; Nu vill vi veta vilka av dessa som är primtalstvillingar. Vi vill alltså gå igenom listan och konstruera dellistan av de x för vilka x+2 också är ett primtal.

Arbetsblad3.nb 3 Den vägledande insikten är att Mathematica har kommandon för allt som svarar mot sedvanliga matematiska operationer. Att ur en mängd välja ut de x som uppfyller ett visst kriterium är ju ett vanligt matematiskt tillvägagångssätt. Alltså ska det finnas ett lätt sätt att göra detta på. Variabeln som löper över mängden kallas #. Så här väljer vi ut de # i primtalstabell som är mindre än 10. Select@primtalstabell, Ò < 10 &D 82, 3, 5, 7< För att få primtalstvillingar kan vi då göra så här: Select@primtalstabell, PrimeQ@Ò + 2D &D 83, 5, 11, 17, 29, 41, 59, 71, 101, 107, 137, 149, 179, 191, 197, 227, 239, 269, 281, 311, 347, 419, 431, 461, 521< Select[lista,kriterium] väljer ut de element i listan som uppfyller kriteriet. Här är listan primtalstabell, # är som tidigare namnet på variabeln som löper över elementen amanda och kriteriet är att # + 2 ska vara ett primtal. D v s vi väljer ut det första primtalet i varje par av primtalstvillingar. Nu kan vi ställa och snabbt besvara frågan om det finns några primtalstvillingar bland primtal nummer 100 000 000 och 100 000 100. storaprimtal = Table@Prime@iD, 8i, 1 000 000 000, 1 000 000 100<D; storatvillingar = Select@storaprimtal, PrimeQ@Ò + 2D &D 822 801 763 729, 22 801 763 951, 22 801 764 059, 22 801 764 959, 22 801 765 211, 22 801 765 247, 22 801 765 409< Vi har alltså flera primtalstvillingar större än 2 miljarder. Det man framförallt ska imponeras av är med vilken lätthet vi kan hantera mängder eller listor. 1. (svårighetsnivå 1) Bestäm dellistan till l1 från föregående avsnitt som består av alla tal i l1 som är primtal. 2. (svårighetsnivå 2) Hitta den 2024:e förekomsten av par av primtal på formen p,p+4. 3. Rekursionsföljder. En idealiserad modell för kanintillväxt ser ut så här. Antalet kaninpar efter n månader kallas f[n], och uppfyller rekursionsformeln f[n] = f[n - 1] + f[n - 2]. Startvillkoren är f[0]=1 och f[1]=1. En rekursiv definition lämpar sig förstås för att beräknas på dator. Clear@fD f@0d = 50; f@1d = 10; f@n_d := f@nd = f@n - 1D + f@n - 2D Observera formen av definitionen f[n_] := f[n]=. Kolonet efter f[n_] talar om för matematica att skjuta upp beräkningarna tills den verkligen behöver göra det. Att det också står upprepat f[n_] := f[n]= garanterar att programmet visserligen skjuter upp beräkningen tills det behövs, men att den också kommer ihåg redan beräknade värden, och inte upprepar beräkningen för dessa. f@10d

4 Arbetsblad3.nb Table@f@nD, 8n, 1, 20<D f@120d För att få grepp om hur snabbt antalet kaninpar växer gör vi nu en tabell av (närmevärden) av kvoterna mellan ett värde och det nästa: Table@N@f@n - 1D ê f@ndd, 8n, 1, 20<D Vi kan jämföra gränsvärdet med det tal som kallas gyllene snittet. N@HSqrt@5D - 1L ê 2D 1 (svårighetsnivå 1). Nu har du lärt dig hur man definierar en rekursiv funktion. I Mathematica finns det förstås en inbyggd funktion för att beräkna fakultet. Finn denna funktion. Skriv därefter en egen rekursivt definierad funktion i Mathematica som beräknar fakultet. 2 (svårighetsnivå 2). Vi har sett att succesiva kvoter av på varandra följande fibonaccital (det är så de heter) närmar sig gyllene snittet. Vad händer om man istället tittar på kvoten f[n-a]/f[n]? Experimentera och redovisa en förmodan (du behöver inte bevisa din förmodan). Experimentera även med olika startvärden på rekursionen. Vad händer? 4. Sannolikheten för att ett tal är ett primtal. PrimePi[x] talar om hur många primtal, som är mindre än x. PrimPi[x]/x är då sannolikheten att ett slumpvis valt heltal mindre än x ska vara ett primtal. Det finns en sats som säger att för stora x är PrimPi[x]/x av samma storleksordning som 1/ln(x+1). Först några exempel. Antalet primtal mindre än 100: PrimePi@100D Andelen av talen mindre än 100 som är primtal: PrimePi@100D ê 100 êê N Andelen av talen mindre än 1000 som är primtal: PrimePi@1000D ê 1000 êê N En fjärdedel av alla tal mindre än 100 är primtal, men bara en sjättedel av de mindre än 1000. Sannolikheten minskar alltså---men hur snabbt? Vi kan använda tekniken ovan: primsannolikhet = Table@8x, PrimePi@xD ê x<, 8x, 2, 20 000<D; gprim = ListPlot@primsannolikhetD Jämför den sedan med grafen till 1/log(x), för att se en illustration av primtalssatsen. Vi ska ta kvoten mellan de två funktionern och påståendet är alltså att att PrimePi(x)Log[x]/x går mot 1 när x blir stort. ff = Table@8x, PrimePi@xD Log@xD ê x<, 8x, 2, 100 000<D; gprim2 = ListPlot@ffD Ett av de sju Clay-priserna om en miljon dollar styck handlar om att ge en bättre uppskattning. 1 (svårighetsnivå 1). Primtalen kan delas in i tre grupper. Jämna, udda på formen 4k+1, udda på formen 4k +3. Skriv en funktion som ger alla primtalen på formen 4k+3 som är mindre än n. (För n = 12 är dessa 3,7,11.) 2. (svårighetsnivå 2) Skriv en funktion som också ger alla primtalen på formen 4k+1 som är mindre

Arbetsblad3.nb 5 2. (svårighetsnivå 2) Skriv en funktion som också ger alla primtalen på formen 4k+1 som är mindre än n. (För n = 12 finns det bara ett, nämligen 5.) Undersök hur fördelningen mellan primtal på formen 4k+3 och primtal på formen 4k+1 ser ut asymptotiskt med en plot av kvoten av de två funktionerna liknande den ovan. 3. (svårighetsnivå 3) Det verkar som att antalet primtal mindre än eller lika med x är mycket större än x/ln(x) när x är litet. Vi säger att ett primtal p är stort om det är större än 1000. Formulera en hypotes om antalet stora primtal mindre än x och gör en plot motsvarande plotten ovan.