And Samma sak som && a=true; b=false; And[a,b] False a && b False Append AppendTo a={1,2,3}; Append[a,9] {1,2,3,9} Lägger till ett element sist i listan Apply a={3,4,5} AppendTo[a,6] {3, 4, 5, 6} Tillämpar en funktion med en lista som parametrar Apply[Plus,{1,2,3,4,5}] 15 Skillnaden mellan Map och Apply Map[f,{a,b,c}] {f[a], f[b], f[c]} Apply[f,{a,b,c}] f[a, b, c] BarChart Plottar stapeldiagram data taget från lista Binomial BarChart[{3,5,6,3,1}] För att erhålla en binomialkoefficient, till exempel ( ) 8 3 Binomial[8,3] 56 Håkan Strömberg 1 KTH STH
Block Inleder en flerradig funktion f[n_]:=block[{i,s=0}, For[i=1,i<=10,i++, s=s+i; ]; s ] BooleanMinimize Förenklar ett logiskt uttryck BooleanMinimize[(!a b)&&(!b&&a) (a&&b)] a && b BooleanTable Ger en sanningstabell för ingående variabler Break f1 = p && (Implies[!q,r]); BooleanTable[{p, q, r} -> f1, {p, q, r}] {{True,True,True}->True,{True,True,False}->True, {True,False,True}->True,{True,False,False}->False, {False,True,True}->False,{False,True,False}->False, {False,False,True}->False,{False,False,False}->False} Bryter loopen i vilken Break finns Clear i=0; While[True, i++; If[i>10,Break[]]; ]; i 11 [Clear[" *"] glömmer alla definitioner och tilldelningar. Lämpligt att starta ett nytt problem med Combinatorica Bibliotek med kombinatoriska funktioner. Inkluderas genom: << Combinatorica Håkan Strömberg 2 KTH STH
CompleteGraph Genererar en komplett graf, en graf med alla bågar bågar på plats g2=completegraph[5] Complement Bestämmer de element som ingår i den första mängden men inte i den andra Complement[{1,2,3,4,5,6},{1,3,5}] {2, 4, 6} ConnectedQ Tar reda på om en graph är sammanhängande Cos ConnectedQ[g] True Bestämmer cosinus för en vinkel v, given i radianer Cos[-Pi] -1 CostOfPath Tar reda på vad en tur i en graf kostar, summan av bågarnas vikter Count CostOfPath[g,{{1,2},{2,4}}] 25 Räknar antalet förekomster av ett givet element a={kalle,pelle,kalle,curt,adam,kalle}; Count[a,kalle] 3 Hur många sexor bland 100 tärningskast a=table[random[integer,{1,6}],{i,1,100}]; Count[a,6] 16 Håkan Strömberg 3 KTH STH
ChromaticNumber Tar reda på hur många färger som behövs för att färga noderna utan att två grannoder får samma färg ChromaticNumber[g] 3 DegreeSequence Listar gradtalen hos grafens noder DegreeSequence[g] {3, 2, 2, 2, 2, 2, 1, 0} DeleteDuplicates Tar bort element ur en lista så att inga dubbletter finns kvar a={1,4,2,3,2,1,4,3,2,1}; DeleteDuplicates[a] {1, 4, 2, 3} DigitCount Gör upp en frekvenstabell över talets ingående siffror Dijkstra DigitCount[11232221] {3, 4, 1, 0, 0, 0, 0, 0, 0, 0} Beräknar kortaste avståndet från noden v till samtliga noder i grafen g Dijkstra[g,v] Den första listan i resultatet innehåller numret på den nod som just föregår målet. Den andra listan innehåller kortaste avståndet, eller lägsta priset från v, till noderna i grafen. Divisors Ger samtliga delare till talen n Divisors[1024] {1,2,4,8,16,32,64,128,256,512,1024} Håkan Strömberg 4 KTH STH
Do Do[expr,{i,list}] Det finns flera varianter av Do, här den mest användbara s=0; b={1,2,3,4,5}; Do[s=s+i,{i,b}] s Vi summerar talen i en lista. i antar alltså alla tal som finns i listan. Ibland kan dessa tal användas som index till en annan lista. a={3,5,6,8,9,2}; b={1,3,5}; s=0; Do[s=s+a[[i]], {i,b}] s Ser du hur s tills sist får värdet 18? Drop För att ta bort element ur en lista Equivalent a={7,8,9,10,11}; Drop[a,{3,5}] {7,8} a=true; b=false; Equivalent[a,b] False Expand Expanderar ett uttryck Expand[(x+y)^2] ger x 2 +2xy+y 2 Håkan Strömberg 5 KTH STH
FactorInteger Faktoriserar heltal FactorInteger[1960] {{2, 3}, {5, 1}, {7, 2}} Som tolkas som 2 3 5 7 2 = 1960 Fibonacci Ger det n:te finonaccitalet Fakultet Fibonacci[100] 354224848179261915075 Fakultet skrivs som förväntat med ett utropstecken First 30! 265252859812191058636308480000000 Plockar ut första elementet från en lista Fit First[{7,9,10}] 7 Med hjälp av minsta kvadratmetoden anpassa en funktion till en mängd punkter Fit[{1,4,9,16,25},{1,x,x^},x] 5.30315*10^-15-2.39524*10^-15 x + 1. x^2 Av allt att döma handlar det om f(x) = x 2 Flatten Funktionen plattar till en lista, vilket betyder att måsvingarna på underlistor försvinner Flatten[{1,2,{3,4},{5,{6},7}}] {1, 2, 3, 4, 5, 6, 7} Genom en extra parameter kan man bestämma hur många nivåer som ska plockas bort Flatten[{1, 2, {3, 4}, {5, {6}, 7}}, 1] {1, 2, 3, 4, 5, {6}, 7} Håkan Strömberg 6 KTH STH
For For[Start,Test,Increment,Body] Ett exempel på en For-sats s=0; For[i=1,i<=100,i++, a=integerdigits[i]; Apply[Plus,a]; ] s Observera att komma används för att skilja for-satsens fyra dela åt. Inom varje del använder man sedan semikolon för att skilja satserna åt. Här ett meningslöst exempel som visar detta sum=0 For[i=1;j=2,j<20,i=i+2;j=j+3, sum = sum+i+j Print[i," ",j] ] sum FromDigits Översätter en lista med siffror till ett heltal FromDigits[{1, 2, 3, 4, 5}] 12345 FromOrderedPairs Bildar en graf utifrån listan av bågar b = {{1,3},{2,4},{1,5},{1,4}}; g2 = FromOrderedPairs[b, Type -> Undirected] Vi har skapat en oriktad graf med 4 bågar och 5 noder. GCD Bestämmer största gemensamma delaren till m och n GCD[4646,3462] 2 GraphDistance Returnerar kortaste avståndet eller billigaste vägen mellan noderna u och v i grafen g GraphDistance[g,u,v] Håkan Strömberg 7 KTH STH
GraphicQ Tar reda på om talen i en lista är en grafisk sekvens GraphPlot GraphicQ[{1,2,3,4,2,4}] True För att Plotta en graph If << GraphUtilitiesŚ g = {1->2,2->3,4->2,5->1}; GraphPlot[g, VertexLabeling -> True] Ett exempel på en If-sats med else Implies a=2; If[a>4, c=6; b=7, c=5; b=8; ] {c,b} {5,8} a=true; b=false; Implies[a,b] False Infinity Uttrycker oändligheten, Insert Sätter in ett element på önskad plats i en lista a={10,11,13,14}; Insert[a,12,3] {10, 11, 12, 13, 14} Håkan Strömberg 8 KTH STH
IntegerDigits Lägger in ett heltals siffror i en lista IntegerDigits[12345] {1, 2, 3, 4, 5} IntegerDigits[123,2] {1, 1, 1, 1, 0, 1, 1} I sista satsen ges resultatet i basen 2 IntegerLength Antalet siffror i talet n IntegerLength[123456] 6 Många andra varianter finns IntegerPartition Ger samtliga sätt att bilda summan n med hjälp av heltal IntegerPartition[4] {{4},{3,1},{2,2},{2,1,1},{1,1,1,1}} IntegerString Kan användas till att uttrycka ett tal n i basen 10 i en annan bas. Resultatet lagras som en sträng. IntegerQ IntegerString[123,2] "1111011" För att testa om ett uttryck har ett heltalsvärde IntegerQ[1/3] False Intersection Bestämmer snittet hos givna mängder Intersection[{2,3,5,6},{2,6,7,3}] {2, 3, 6} Håkan Strömberg 9 KTH STH
IsomorphicQ Tar reda på om två, till synes olika, grafer är isomorfa (identiska). Join IsomorphicQ[g1,g2] True Slår ihop listor KSubsets a={2,3,4}; Join[{1},a,{5,6,7}] {1, 2, 3, 4, 5, 6, 7} Tar ut en delmängd med bestämd storlek ur en given mängd utan att ta hänsyn till ordningen LCM KSubsets[{1,2,3,4},2] {{1,2},{1,3},{1,4},{2,3},{2,4}, {3,4}} Bestämmer den minsta gemensamma multipeln Length LCM[5216,6464] 1053632 För att ta reda på längden av en lista Limit a={{1,2},{3,4}}; Length[a] 2 Length[Flatten[a]] 4 För att bestämma gränsvärdet till en funktion Limit[Sin[x]/x,x->0] 1 Håkan Strömberg 10 KTH STH
ListPlot 12 10 8 6 4 20 40 60 80 100 Här kastar vi två tärningar 100 gånger, summerar antalet ögon och samlar resultatet i en lista, som vi sedan sorterar. Därefter skapar vi ett graf av resultatet kast[]:=random[integer,{1,6}]+random[integer,{1,6}] a=sort[table[kast,{i,1,100}] ListPlot[a] Observera att (0,2) ligger i origo Log Log[20] översatt till matematiskt språk ln20 Log[20]//N 2.99573 Log[10,1000] 3 I den andra satsen uttrycker 10 basen. Map Tillämpar en funktion på en lista f[x_]:=x^2 a={1,4,7}; Map[f,a] {1,16,49} Map[#^2&,a] {1,16,49} Map[Sqrt,{4,9,16,25}] {2,3,4,5} Skillnaden mellan Map och Apply Map[f,{a,b,c}] Håkan Strömberg 11 KTH STH
MemberQ {f[a], f[b], f[c]} Apply[f,{a,b,c}] f[a, b, c] Funktionen returnerar True om ett element kan återfinnas i en lista a={3,2,8,7,6,9,1}; MemberQ[a,8] True MinimumSpanningTree Bestämmer det kortaste (billigaste) nätet av bågar som sammanbinder grafen h=minimumspanningtree[g] MinimumVertexColoring Visar hur nodernas ska färgas med det minsta antalet färger utan att två grannoder har samma färg Mod MinimumVertexColoring[g] {1, 2, 2, 1, 1, 2, 1, 2} Bestämmer modulo, resten vid division, till exempel 123 mod 34 N Mod[123,34] 21 Skriver värdet hos ett uttryck på decial form N[1/3] 0.333333 N[Sqrt[2],10] 1.414213562 Det andra argumentet bestämmer antalet siffror Not Samma sak som! a=true; Not[a] False Håkan Strömberg 12 KTH STH
Or Samma sak som Position a = True; b = False; Or[a, b] True a b True Bestämmer den position ett givet element har i listan Partition Position[{3, 7, 4, 5, 3, 1}, 5] {{4}} Delar upp en lista i smålistor a={1,2,3,4,5,6,7,8,9} Partition[a,3] {{1,2,3},{4,5,6},{7,8,9}} Många andra varianter finns Permutations Genererar en lista av listor. Varje underlista består av en permutation av elementen i den givna listan Permutations[{1,2,3}] {{1,2,3},{1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}} Permutations[{1,2,1}] {{1,2,1},{1,1,2},{2,1,1}} Permutations[{1,2,3,4},2] {{},{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,1},{2,3}, {2,4},{3,1},{3,2},{3,4},{4,1},{4,2},{4,3}} Permutations[{1,2,3,4},{2}] {{1,2},{1,3},{1,4},{2,1},{2,3},{2,4},{3,1},{3,2}, {3,4},{4,1},{4,2},{4,3}} Den näst sista satsen plockar ut alla delmängder med storleken 2 och med hänsyn tagen till ordningen. Den sista satsen plockar ut alla delmängder med exakt 2 element och med hänsyn till ordningen. π För att uttrycka π använder man Pi Håkan Strömberg 13 KTH STH
PlanarQ Tar reda på om en graf kan ritas utan korsande bågar Plot PlanarQ[g] False För att plotta en funktion Plot[Sin[x]+Cos[x],{x,-Pi/2,Pi/2}] Funktionen plottas i intervallet [ π 2, π 2 ] Position För att i en lista söka upp på vilka platser ett element finns a={2,6,5,9,7,3,2,1}; Position[a,2] {{1},{7}} Talet 2 finns på platserna 1 och 7. Prepend Lägger till ett element först i listan Prime Prepend[{2,3,4},1] {1, 2, 3, 4} Anger det n:te primtalet Prime[168] 997 997 är det 168:e primtalet PrimePi Tar reda på hur många primtal det finns som är n PrimePi[10000] 1229 Håkan Strömberg 14 KTH STH
PrimeQ Blir True då n är ett primtal Print Prime[686846628648476867] True Skriver ut värdet av ett uttryck Product Print["Hejsan"] "Hejsan" Multiplicerar de genererade talen Random Product[i^2,{i,1,3}] 16 För att ta fram slumptal med olika egenskaper Random[Integer,{1,52}] 6 Random[Real,{0,1}] 0.694168 RandomGraph Genererar en graph med n noder och given sannolikhet för att två noder ska vara förbundna g=randomgraph[8,0.3] Graph : <7,8,Undirected> RandomSample För att till exempel blanda en kortlek med korten numrerade 1...52 RandomSample[Range[52],52] {10,9,25,33,3,22,51,46,29,20,27,32,6, 35,31,5,1,12,24,23,49,48,37,40,52,7, 17,38,36,4,45,13,14,47,19,41,43,18, 39,50,44,2,15,34,28,16,42,21,30,11,26,8} Håkan Strömberg 15 KTH STH
Range Skapar en lista Range[5] {1,2,3,4,5} Range[0,15,3] {0,3,6,9,12,15} I den senare varianten anger man start, stopp och steg Reduce Ett tuffare sätt att lösa ekvationer. Vi använder det oftast till att lösa diofantiska ekvationer Reduce[x^2-y^2==12,Integers] (x == -4 && y == -2) (x == -4 && y == 2) (x == 4 && y == -2) (x == 4 && y == 2) Den diofantiska ekvationen ovan har fyra lösningar Rest Plockar ut allt utom det första elementet till en ny lista Return Rest[{3,4,5}] {4,5} Hoppar ur funktion och returnerar värdet av uttrycket Reverse Return[a^3] Vänder en lista bak och fram Riffle a={1,2,3,4,5}; Reverse[a] {5,4,3,2,1} Blandar två listor, ungefär som man blandar en kortlek Håkan Strömberg 16 KTH STH
a={1,2,3,4,5}; b={x,y,z,u,w}; Riffle[a,b] {1, x, 2, y, 3, z, 4, u, 5, w} Finns varianter Round Avrundar till heltal RSolve Round[3.5] 4 Round[3.49] 3 Funktion för att lösa rekursionsformel Select RSolve[{a[n]==a[n-1]+n,a[0]==0},a[n],n] {{a[n]->1/2n(1+n)}} Att med hjälp av ett kriterium välja ut element ur en lista Select[{1,2,3,4,5,6},PrimeQ] {2, 3, 5} a={6,2,4,7,9,2,1}; Select[a,#>5&] {6,7,9} SetEdgeWeights Sätter vikter på grafens bågar g=setedgeweights[g,{10,12,15,12,13,15}] SetVertexWeights Sätter vikter på grafens bågar g=setvertexweights[g,{10,12,15}] ShortestPath Bestämmer kortaste avståndet mellan två noder i en graf ShortestPath[g,2,7] 207 Håkan Strömberg 17 KTH STH
ShowGraph Plottar graph av typ Combinatorica Simplify ShowGraph[g] För att förenkla uttryck Sin Simplify[(x - y)^2/(x^2 - y^2)*(x + y)] x-y Bestämmer sinus för en vinkel v given i radianer Solve Sin[Pi/2] 1 För att lösa ekvationer och ekvationssystem Sort Solve[x^2 + x - 2 == 0] {{x -> -2}, {x -> 1}} Solve[{x+y==10,x-y==2}] {{x -> 6, y -> 4}} Sorterar en lista Sqrt a={3,5,1,4,6,2}; Sort[a] {1,2,3,4,5,6} Bestämmer kvadratroten ur n Sqrt[10]//N 3.16228 //N ger ett närmevärde StirlingS2 Beräknar Stirlig-tal av an andra ordningen StirlingS2[4,2] 7 Håkan Strömberg 18 KTH STH
Subsets Genererar alla delmängder till en mängd m={1,2,3,4}; Subsets[m] {{},{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,3},{2,4}, {3,4},{1,2,3},{1,2,4},{1,3,4},{2,3,4},{1,2,3,4}} Här finns de med allihop från tomma mängden till hela mängden m Sum Summerar genererade tal Sum[1/i^2,{i,1,Infinity}] ger summan π 2 /6 Table För att skapa listor Take Table[i^2+i,{i,1,5}] {2, 6, 12, 20, 30} För att plocka ut en del ur en lista Tally a={6,5,4,3,2,1}; Take[a,{3,5}] {4,3,2} Genererar en frekvenstabell över listans innehåll a={1,2,3,2,4,4,4,5,7,7}; Tally[a] {{1,1},{2,2},{3,1},{4,3},{5,1},{7,2}} Det finns bland annat 1 etta och 3 fyror TautologyQ Bestämmer om ett logiskt uttryck alltid är sant TautologyQ[a && b!a &&! b] False Håkan Strömberg 19 KTH STH
ToCombibatoricaGraph Föra att konvertera graph till Combinatorica som hanterar grafer annorlunda Total ToCombibatoricaGraph[g] Summerar talen i en lista. Observera andra exemplet a={1,2,3,4,5}; Total[a] 15 b={{1,2},{3,4}}; Total[b] {4,6} TravelingSalesman Bestämmer den kortaste (billigaste) turen som besöker samtliga noder och återvänder till startnoden. Union TravelingSalesman[g] {1, 5, 7, 3, 4, 8, 2, 6, 1} Bestämmer unionen av mängder. Funktionen plockar även bort dubbletter och sorterar lista While Union[{2,3,4,1},{7,3,2,6}] {1, 2, 3, 4, 6, 7} Union[{3,4,3,2,5,5}] {2, 3, 4, 5} While[test,body] Här ett exempel x=1; n=0; While[x<10000, x=2x; n++; ] n Håkan Strömberg 20 KTH STH