Numeriska metoder och grundläggande programmering för P1 och T1

Relevanta dokument
Numeriska metoder och grundläggande programmering för T1

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

DN1212/numpp Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

Numeriska metoder och grundläggande programmering för P1

DN1212, Numeriska metoder & grundläggande programmering. Laboration 1 del 1-3 (frivilliga delar) Del 1-3 (dvs upg ) behöver inte redovisas

OBS! Snabbinsatt Matlab-intro vissa fönsterhanteringsdetaljer kan vara fel men gör gärna Matlab-uppgifterna. DN1240, Numeriska metoder för OPEN1.

DN1240, Numeriska metoder. Laboration 0 (frivilliga delar) (dvs uppgifterna behöver inte redovisas) Introduktion till UNIX och MATLAB

Laboration: Grunderna i MATLAB

SF1520, Numeriska Metoder och Grundläggande Programmering för K2 Lab1.

DD1311 Programmeringsteknik för S1 Laborationer läsåret

DD1311 Programmeringsteknik för CL1 Laborationer läsåret

SF1672, Linjär Algebra med Matlab för F1 Lab0

SF1546, Numeriska Metoder för O1 Lab0 - frivillig. (dvs uppgifterna behöver inte redovisas!)

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

2D1212, Numeriska metoder & grundläggande programmering för BD2, Bio2 & K2. Laboration 0 (Frivillig!) Introduktion till UNIX och MATLAB

Introduktion till Matlab

UNIX. 2D1339 Programkonstruktion Hösten 2001 Datorintroduktion Laboration 1. Mål. Vad laborationen går ut på. Redovisning

SF1520, Numeriska Metoder och Grundläggande Programmering för K2 Lab1.

Använda Python Laboration 1 GruDat, DD1344

TSBB14 Laboration: Intro till Matlab 1D

Introduktion till Matlab

Instruktion för laboration 1

Laboration: Grunderna i Matlab

MMA132: Laboration 1 Introduktion till MATLAB

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

HI1024 Programmering, grundkurs TEN

MMA132: Laboration 1 & 2 Introduktion till MATLAB

Introduktion till användning av linux-servern sledge och några övningsuppgifter

HI1024 Programmering, grundkurs TEN

Linjär algebra med tillämpningar, lab 1

Introduktion till MATLAB

MMA132: Laboration 2 Matriser i MATLAB

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

Introduktion till datormiljön och Python

HI1024 Programmering, grundkurs TEN

Polynomanpassningsprogram

TAIU07 Matematiska beräkningar med Matlab

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

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

Lab1 inginfo07. Detta dokument innehåller övningar för introduktion till Media-programmets datorsystem (Mac OS X).

Programkonstruktion med datorintroduktion, 2D1339

GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare. Karlstads universitet april

HI1024 Programmering, grundkurs TEN

Instruktion för laboration 1

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

TANA17 Matematiska beräkningar med Matlab

2 Matrisfaktorisering och lösning till ekvationssystem

HI1024 Programmering, grundkurs TEN

TAIU07 Matematiska beräkningar med Matlab

DD1310 Programmering för OPEN1 LAB1: Laborationer i Python läsåret 2011/2012

DD1310 Programmeringsteknik för Open1 och Med2 Laborationer läsåret 2014/2015

TANA17 Matematiska beräkningar med Matlab

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

Department of Physics Umeå University 27 augusti Matlab för Nybörjare. Charlie Pelland

Beräkningsverktyg HT07

FLEXILAGER Ett hjälpmedel för anpassad lagerhantering. Original -version

Skapa mapp. * Gör så här: Det finns många sätt att skapa mappar, men det enklaste sättet brukar vara följande.

MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.

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

Laboration 5: Regressionsanalys. 1 Förberedelseuppgifter. 2 Enkel linjär regression DATORLABORATION 5 MATEMATISK STATISTIK FÖR I, FMS 012, HT-08

Laboration 1 Introduktion till Visual Basic 6.0

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Lathund för BankID säkerhetsprogram

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

Kort-kort om utdelade användarkonton och datormiljön på NADA

Laboration 2: 1 Syfte. 2 Väntevärde och varians hos en s.v. X med fördelningen F X (x) MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08

DATORINTRODUKTION. Laboration E ELEKTRO. UMEÅ UNIVERSITET Tillämpad fysik och elektronik Ulf Holmgren

TMA226 datorlaboration

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

Internet. En enkel introduktion. Innehåll:

Laboration 3. Funktioner, vektorer, integraler och felskattning

2D1210, Numeriska Metoder, GK I för V 2.

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

Datorn från grunden. En enkel introduktion. Innehåll: Inledning 1 Vad är en dator? 2 Datorns olika delar 3 Starta datorn 5 Stänga av datorn 7

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

LABORATION 2. Trapetsregeln, MATLAB-funktioner, ekvationer, numerisk derivering

Liten MATLAB introduktion

Datorövning 2 Matlab/Simulink. Styr- och Reglerteknik för U3/EI2

Kursanalys DD1312 hösten 2008

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

TAIU07 Matematiska beräkningar med Matlab

Laboration 6. Ordinära differentialekvationer och glesa system

Beräkningsvetenskap och Matlab. Vad är MATLAB? Vad är MATLAB? Användningsområden. Vad är MATLAB? Grunderna i Matlab. Beräkningsvetenskap == Matlab?

Numeriska metoder, grundkurs II. Dagens program. Hur skriver man en funktion? Administrativt. Hur var det man gjorde?

HI1024 Programmering, grundkurs TEN

Rapportexempel, Datorer och datoranvändning

Instruktion Programmeringsapp och gränssnitt

Egna genvägar. Subhashish Pradhan T.C. Hollingsworth Översättare: Stefan Asserhäll

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

LABORATION cos (3x 2 ) dx I =

Lite om räkning med rationella uttryck, 23/10

Att skriva på datorn

Gränssnitt för FakeGranska. Lars Mattsson

MAPLE MIKAEL STENLUND

Matematisk Modellering

2B1115 Ingenjörsmetodik (Engineering Fundamentals)

KPP053, HT2016 MATLAB, Föreläsning 2. Vektorer Matriser Plotta i 2D Teckensträngar

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Kom igång med. Windows 8. DATAUTB MORIN AB

Transkript:

Laborationer i Numeriska metoder och grundläggande programmering för P1 och T1 våren 2008 Namn................................... Personnr............................. Lab 1 Introduktion tog timmar Godkänt den................. (senast 31/1 (P1) och 1/2 (T1)) Kvitteras............................ Lab 2 Programmering - Polynomanpassning tog timmar Godkänt den...........................(senast 25/2 ger 1 bp) Kvitteras............................ Lab 3 Grafiska gränssnitt tog timmar Godkänt den......... (senast 5/3 (P1) och 4/3 (T1) ger 1 bp) Kvitteras............................ Lab 4 Ekvationslösning, m.m. tog timmar Godkänt den...........................(senast 28/3 ger 1 bp) Kvitteras............................ Lab 5 Diffekvationer, m.m. tog timmar Godkänt den...........................(senast 18/4 ger 1 bp) Kvitteras............................ Lab 6 Projekt tog timmar Godkänt den....................................(senast 14/5) Kvitteras............................ 1 (1) DN1212 Numeriska metoder och grundläggande programmering för P1 och T1 våren 2008 Beatrice Frock och Staffan Romberger

blank.sida Page 1 of 1 Date: söndag, 2007 december 16

Staffan Romberger 2007-12-12 DN1212 Numeriska metoder och grundläggande programmering Laboration 1 Introduktion Efter den här laborationen ska du kunna använda de datorer som vi använder på labbarna, vektorer och matriser, villkorssatser och slingor samt skriva egna program som.m-filer Inledning CSC har Unix-datorer, men när man har loggat in ser skärmen ut ungefär som på en persondator. Frontpanelen längst ner på skärmen har fyra knappar i mitten som leder till fyra olika skärmar (workspaces). Till höger om dessa fyra knappar finns utloggningsknappen EXIT. Höger musknapp har en meny för att starta några vanliga program. Välj där Terminal, så får du ett fönster där du kan skriva Unix-kommandon. Fönstret blir aktivt när du klickar i det. Om du inte har använt Unix tidigare läs igenom sidorna 1 21 i det röda Unix-häftet. Lite administration På kurswebbplatsen finns information om kursanmälan. Fyll i webbformuläret och var noggrann med alla personuppgifter. (Det är viktigt för att vi ska kunna rapportera kursmoment i Ladok.) Initiera ditt konto för kursen Skriv allra först i terminalfönstret res checkin numpp08 och svara på frågorna om personnummer och studiestatus. (Om det inte fungerar så kan du istället checka in via kursens webbsida.) Anslut dig till denna kursomgång genom att skriva course join numpp08 Kommandot skapar en kurswebbsida åt dig och ser till att du får aktuella inloggningsmeddelanden från kursen. Om du ska labba ihop med någon kan du göra course labdir numme labbkompisanv. Se till att din labbkompis på sitt konto också ger motsvarande kommando (med ditt användarnamn) så kommer ni att få en gemensam katalog numme där ni kan spara de program som ni skriver i kursen. Du som labbar ensam får istället skapa en egen katalog numpp08 med hjälp av filhanteraren. Du kan, senare, kontrollera att dina labbar har blivit rapporterade genom att ge kommandot res show numpp08 i terminalfönstret. Mer om dessa kommandon står i kapitel 18 i Unix-häftet. Läs kurswebbplatsen Vi kommer att använda webben för att sprida kursinformation. Starta Mozilla eller Netscape från skärmmenyn, dvs. den meny som kommer fram när du håller ner musens högerknapp på 1

skärmbakgrunden. Adressen till kursens webbplats är www.csc.kth.se/dn1212. Börja med att titta på den allmänna kurssidan och välj sedan din egen kursomgång i menyn. Du bör titta på webbplatsen minst en gång i veckan! Starta Matlab Placera markören på skärmens bakgrund och tryck ner högerknappen. Välj Applications och välj Applications Manager. Då öppnas ett fönster med många mappar. Dubbelklicka på mappen Mathematics så öppnas ett nytt fönster med symboler för matematikprogram. Dra Matlab-symbolen till skrivbordet och dubbelklicka på den för att starta Matlab. Se kapitel 1 i kursboken för en repetition av Matlab-miljön. Matlab-uppgifter Se kapitel 1 i kursboken för en repetition av Matlab-miljön. Nedan finns ganska många uppgifter. Vid redovisningen ska du visa upp det du hunnit med idag. På övriga labbar kommer du att ha haft mer tid på dig att förbereda dig, så så ska du vara beredd att redovisa alla uppgifter. Matlab som kalkylator Genomför följande beräkningar (och hitta gärna på egna): Beräkna din ålder i sekunder. Uppskatta hur stort felet kan vara. Använd Matlabs inbyggda funktioner för att se att: Cosinus för pi är 1. Naturliga logaritmen för e är 1. Logaritmen för en produkt är lika med summan av logaritmerna för termerna. Uppskatta din lästid för varje dag den senaste veckan och lägg in värdena i en vektor. Använd bar för att få ett stapeldiagram över sin lästid. Öka din lästid med en timme per dag. Öka din lästid med 25 procent (tips: multiplicera med ett tal). Öka lästiden med 20 procent på vardagar men bara med 5 procent på helger (tips: multiplicera elementvis med en vektor). Skriv in en valfri 3x3-matris och undersök följande. Är dess determinant positiv? Kan man multiplicera den med en vektor, och vilka dimensioner måste vektorn ha i så fall? Kan man multiplicera den med en konstant? Med en annan matris? Använd till sist who för att titta vilka variabler som du har använt. Är du nöjd med variabelnamnen? Gissa hur mycket pumpan väger Skriv ett program som slumpar fram ett heltal mellan ett och hundra och låter den som kör programmet gissa vilket tal det är. För att det inte ska bli för svårt måste ditt program skriva ut meddelanden efter varje gissning, t.ex. så här: 2

Vad heter du? Anna Hej Anna, hur mycket tror du min pumpa väger? 50 För mycket. Gissa igen: 20 För litet. Gissa igen: 25 För litet. Gissa igen: 42 För mycket. Gissa igen: 36 Rätt gissat. Nästa år ska jag odla en ännu större pumpa. Datorn gissar Skriv ett program som gissar vilken pumpavikt du tänker på. För varje gissning ska du tala om, på något sätt, för datorn om gissningen är rätt, för liten eller för stor. Först måste du komma på en bra algoritm som ger få gissningar! Tillkalla handledare och redovisa! 3

blank.sida Page 1 of 1 Date: söndag, 2007 december 16

Staffan Romberger 2007-12-12 DN1212/numpp Numeriska metoder och grundläggande programmering Laboration 2 Polynomanpassning Introduktion Efter den här laborationen ska du kunna skriva lite större program som är uppdelade i egendefinierade funktioner. Polynomanpassaren Du ska skriva ett program som kan användas för att hantera polynom av godtycklig grad. Användaren ska via en meny kunna mata in ett gradtal och ett antal punkter som polynomet ska anpassas till. Punkterna måste vara fler än gradtalet. Är de en fler ritas polynomet som går exakt genom dessa punkter interpolationspolynomet. Är de ännu fler ritas det bäst anpassade polynomet. Sedan, då användaren ber om det, ska polynomets koefficienter beräknas och polynomet och punkterna ritas upp. Dessutom ska användaren kunna få reda på vilka rötter polynomet har. Så här ska det se ut när användaren anger gradtal och punkter: ----- Polynomanpassaren ----- 1) Ange gradtal 2) Ange punkter 3) Beräkna koefficienter 4) Plotta polynomet 5) Hitta nollställen 0) Avsluta Ditt val: 1 Vilken grad ska polynomet ha? 2 ----- Polynomanpassaren ----- 1) Ange gradtal 2) Ange punkter 3) Beräkna koefficienter 4) Plotta polynomet 5) Hitta nollställen 0) Avsluta Ditt val: 2 Ange punkter (retur avslutar inmatningen) Ange en punkt ([x y]): [1 1] Ange en punkt ([x y]): [2 1] Ange en punkt ([x y]): [3 2] Ange en punkt ([x y]): Du ska själv skriva en funktion för varje menyval utom Avsluta. Så här ska de anropas från huvudprogrammet: 1

degree = askdegree(); Frågar efter, läser in och returnerar gradtal. points = askpoints(); Frågar efter, läser in och returnerar punkterna. coeffs = findcoeffs(degree, points); Löser det linjära (överbestämda) ekvationssystemet och returnerar polynomets koefficienter. Du får inte använda polyfit; använd \-operatorn. plotpoly(coeffs, points); Ritar upp polynomet och punkterna. polyroots(coeffs); Bestämmer och skriver ut polynomets nollställen. Utöver funktionerna ovan är det vettigt att skriva en funktion som bara skriver ut menyn. Skriver du programmet på det sättet blir koden i huvudprogrammet mer överskådlig. Där du anropar menyfunktionen i huvudprogrammet kan det se ut så här: meny(); choice = input( Ditt val: ); Då användaren ber om att koefficienterna ska beräknas ska de också skrivas ut. Innan dess måste han/hon ha angett gradtal och punkter. Skriv också en varning om punkterna inte räcker för att bestämma polynomet entydigt. Innan programmet ritar upp grafen måste det ha beräknat koefficienterna. Grafen för exemplet ovan blir: 4 3.5 Polynomet + 0.5x 2 1.5x + 2 3 2.5 y 2 1.5 1 0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 x Tips, trix och krav: Förslag på arbetsordning: 1. Börja med att konstruera tomma funktioner. 2. Konstruera menyn och anropa för respektive val de tomma funktionerna. Inget ska hända när användaren väljer något. 3. Gör färdigt funktionerna i tur och ordning. 4. När du är färdig med de två första funktionerna är det skönt att temporärt lägga in värden på gradtal och punkter direkt i koden, så du slipper skriva in det varje gång du ska prova resten av funktionerna. Kom ihåg att ändra tillbaka sedan! Grafen: Använd plot för att rita polynomet. Programmet bör rita ut polynomet över ett intervall som täcker in punkterna. Ta fram min och max för punkternas x-värden! Från en vektor av x-värden beräknas y-värdena med polyval eller en for-slinga. I grafen som ritas ska en legend innehålla polynomets grad och koefficienter. Frivilligt: gör sådan legend som syns i exempelgrafen. Använd roots för att beräkna nollställena. Som avbrottsvillkor vid inmatning av punkter kan du använda att det inmatade har en längd som är skild från två (punkterna är ju vektorer med längden två). Du får inte använda några globala variabler! Lycka till! 2

Staffan Romberger 2007-12-12 DN1212/nump Numeriska metoder och grundläggande programmering Laboration 3 Kryptoforcering Efter den här laborationen ska du kunna hantera text som data och själv kunna skapa enkla grafiska användargränssnitt (GUI). Översikt Kryptografi har blivit en del av vår vardag även om vi inte tänker så mycket på det. När du loggar in på din personliga banksida eller pratar i mobiltelefon sker kommunikationen krypterat. När man använder kryptering konverterar man en klartext till en kryptotext med hjälp av en krypteringsmetod och vanligen dessutom en kryptonyckel. Att konvertera tillbaka kallas att dekryptera. Om man inte känner till krypteringsmetod eller nyckel måste man gissa för att återfinna klartexten. Att göra det systematiskt kallas att forcera kryptotexten. I denna laboration ska du skriva ett program som forcerar en krypterad text där vi vet krypteringsmetoden men själva måste hitta nyckeln och sedan dekryptera texten. Ditt program ska läsa och dekryptera en text på engelska som finns på fil. Det finns många olika algoritmer för kryptering men vi förutsätter att texten är krypterad med»caesarrullning» vilket innebär att varje bokstav har bytts mot en bokstav ett visst antal steg framåt i alfabetet. Nyckeln är antalet positioner man rullar. Med 2 positioners rullning blir»the zebra has stripes» krypterat till»vjg bgdtc jcu uvtkrgu». Med vetskap om att»e» är den vanligaste bokstaven i engelsk text kan texten forceras med hjälp av ett frekvensdiagram. Om t.ex. bokstaven»g» är den mest frekventa i kryptotexten kan vi gissa att rullningen är 2 steg. Gränssnittet för ditt program bör se ut som på nästa sida. Ditt program bör lämna andra tecken än bokstäver oförändrade. Tårtdiagrammet ska innehålla de 10 mest frekventa bokstäverna. Det blir dessutom enklare om du gör om alla bokstäver till versaler. På kursens webbplats finns filer med krypterade texter som du kan använda när du testar. Läs kryptotexten inklusive radbytestecknen till en vektor. Den kan därefter läggas in i en textruta i gränssnittet. Programmera helst beräkningen av bokstavsfrekvenser utan slingor. Matlab anses fungera snabbare så. Även rullningen kan skrivas utan slingor. Försök! Om du vill kan du bygga ut programmet så att det också kan hantera åäö. Dessa bokstäver har inte teckenkoder intill a z. 1

2 Lycka till!