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

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

Numeriska metoder och grundläggande programmering för T1

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

Numeriska metoder och grundläggande programmering för P1

SF1513 NumProg för Bio3 HT2013 LABORATION 4. Ekvationslösning, interpolation och numerisk integration. Enkel Tredimensionell Design

TAIU07 Matematiska beräkningar med Matlab

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

2 Matrisfaktorisering och lösning till ekvationssystem

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

HI1024 Programmering, grundkurs TEN

MMA132: Laboration 2 Matriser i MATLAB

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

Rapportexempel, Datorer och datoranvändning

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

Laboration: Grunderna i MATLAB

MMA132: Laboration 1 & 2 Introduktion till MATLAB

Introduktion till MATLAB

HI1024 Programmering, grundkurs TEN

Prov 1 2. Ellips 12 Numeriska och algebraiska metoder lösningar till övningsproven uppdaterad a) i) Nollställen för polynomet 2x 2 3x 1:

Linjär algebra med tillämpningar, lab 1

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

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

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

HI1024 Programmering, grundkurs TEN

Laboration 4: Lineär regression

Laboration 1. Ekvationslösning

NUMPROG, 2D1212, vt Föreläsning 1, Numme-delen. Linjära ekvationssystem Interpolation, Minstakvadratmetoden

Newtons metod. 1 Inledning. CTH/GU LABORATION 3 MVE /2014 Matematiska vetenskaper

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

Kurvanpassning. Kurvanpassning jfr lab. Kurvanpassning jfr lab

Numerisk Analys, MMG410. Lecture 12. 1/24

TANA17 Matematiska beräkningar med Matlab

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

Robotarm och algebra

Uppgift 1a (Aktiekurser utan poster)

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

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

6 Derivata och grafer

Uppgift 1 ( Betyg 3 uppgift )

TSBB14 Laboration: Intro till Matlab 1D

Laboration 6. Ordinära differentialekvationer och glesa system

MMA132: Laboration 1 Introduktion till MATLAB

Föreläsning 5. Approximationsteori

LABORATION cos (3x 2 ) dx I =

TMA226 datorlaboration

Polynomanpassningsprogram

Numerisk Analys, MMG410. Lecture 13. 1/58

Newtons metod och arsenik på lekplatser

F3: Funktioner (kap. 5)

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

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

FMNF15 HT18: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

Labb 3: Ekvationslösning med Matlab (v2)

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

Matlabövning 1 Funktioner och grafer i Matlab

Användarmanual till Maple

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

2B1115 Ingenjörsmetodik (Engineering Fundamentals)

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18

8.5 Minstakvadratmetoden

Introduktionsmöte Innehåll

Matlabövning 1 Funktioner och grafer i Matlab

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

Sammanfattninga av kursens block inför tentan

Fö4: Kondition och approximation. Andrea Alessandro Ruggiu

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

Lösningar och kommentarer till uppgifter i 3.1

Laboration 3. Funktioner, vektorer, integraler och felskattning

LAB 3. INTERPOLATION. 1 Inledning. 2 Interpolation med polynom. 3 Splineinterpolation. 1.1 Innehåll. 3.1 Problembeskrivning

Matematisk Modellering

Programmeringsuppgifter 1

Sekantmetoden Beräkningsmatematik TANA21 Linköpings universitet Caroline Cornelius, Anja Hellander Ht 2018

HI1024 Programmering, grundkurs TEN

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

9 Skissa grafer. 9.1 Dagens Teori

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

Uppgift 1 ( Betyg 3 uppgift )

Laboration 1. x = 1±0.01, y = 2±0.05. a) Teoretiskt med hjälp av felfortplantningsformeln (Taylor-utveckling).

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

TAIU07 Matematiska beräkningar med Matlab

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

Hemuppgift 1, SF1861 Optimeringslära, VT 2017

% Föreläsning 3 10/2. clear hold off. % Vi börjar med att titta på kommandot A\Y som löser AX=Y

Minstakvadratmetoden

Manual för ett litet FEM-program i Matlab

Tillämpning: Bildinterpolation. Ekvationslösning. Integraler. Tillämpning: En båt. Räkning med polynom. Projekt. Tentamensinformation.

Envariabelanalys 5B1147 MATLAB-laboration Derivator

Laboration 2. Laborationen löses i grupper om två och redovisas individuellt genom en lappskrivning den 3/10. x = 1±0.01, y = 2±0.05.

Linjärisering, Jacobimatris och Newtons metod.

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

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Moment 1.15, 2.1, 2.4 Viktiga exempel 2.2, 2.3, 2.4 Övningsuppgifter Ö2.2ab, Ö2.3. Polynomekvationer. p 2 (x) = x 7 +1.

Laboration 1. 1 Matlab-repetition. 2 Störningsräkning 1. 3 Störningsräkning 2

Denna föreläsning. DN1212 Numeriska metoder och grundläggande programmering FN Felfortplantning och kondition

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Läsanvisningar och övningsuppgifter i MAA150, period vt Erik Darpö

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Del I: Lösningsförslag till Numerisk analys,

Räta linjer. Ekvationssystem. Att hitta räta linjens ekvation ifrån olika förutsättningar. 1.1 Hitta en rät linjes ekvation utifrån en ritad graf.

Transkript:

Staffan Romberger 2008-10-31 DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion Efter den här laborationen ska du kunna hantera vektorer och matriser, villkorssatser och slingor samt skriva egna program i.m-filer. Vid redovisningen ska var och en vara beredd att redogöra för allt. Kursens webbsida Läs kurswebbsidan. Vi kommer att använda webben för att sprida kursinformation. Börja med att gå till den allmänna kurssidan http://www.csc.kth.se/utbildning/kth/kurser/dn1212/ och välj sedan din egen kursomgång i menyn. Du bör titta på webbsidan minst en gång i veckan! 1 Lite administration På kurswebbsidan finns information om kursanmälan. Fyll i webbformuläret och var noggrann med alla personuppgifter (viktigt för att vi ska kunna rapportera in dina kursmoment i LADOK). 2 Linjär algebra: robotarm Robothand L2 θ 2 L1 (0,0) θ 1 1

Figuren visar en robotarm med två länkar. Ledvinklarna ges av θ 1 och θ 2. Koordinaterna för robothanden blir x = L 1 cos θ 1 + L 2 cos (θ 1 + θ 2 ) där L 1 och L 2 är länklängderna. y = L 1 sin θ 1 + L 2 sin (θ 1 + θ 2 ) Vinklarna θ 1 och θ 2 som bestämmer robothandens rörelse kontrolleras tidsmässigt av följande polynomuttryck: θ 1 (t) = θ 1 (0) + a 1 t 3 + a 2 t 4 θ 2 (t) = θ 2 (0) + b 1 t 3 + b 2 t 4 där θ 1 (0) och θ 2 (0) är startvärden för vinklarna vid tiden t = 0. Vinklarna anges i enheten grader och tiden i sekunder. a) Ställ upp ett linjärt ekvationssystem för bestämning av parametrarna a 1, a 2, b 1 och b 2, givet startvärdena θ 1 (0) = 10, θ 2 (0) = 20 samt vinklarnas värden då t = 3: θ 1 (3) = 50.5, θ 2 (3) = 28.6 och då t = 4: θ 1 (4) = 131.6, θ 2 (4) = 140.0. Lös ekvationssystemet i MATLAB. b) Använd dina resultat i a) för att plotta robothandens svep när tiden t går från 0 till 4 sekunder, med värdena L 1 = 4 m och L 2 = 3 m. 3 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: 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. 4 Frivillig uppgift: Datorn gissar. Skriv ett program som gissar vilken pumpavikt du tänker på. Du ska varje gång datorn gissar tala om om gissningen är för liten, för stor eller rätt. Hitta en bra algoritm som ger få gissningar! Lycka till! 2

Staffan Romberger 2008-10-31 DN1212, 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, kontrollera det. Är de en fler ritas polynomet som går exakt genom dessa punkter. Ä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 nollställen 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: 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å 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. 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!

Staffan Romberger 2008-10-31 Numeriska metoder och grundläggande programmering Laboration 3 Kryptering Efter den här laborationen ska du kunna hantera text som data och själv kunna skapa enkla grafiska användargränssnitt (GUI). Översikt Kryptering 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. I denna laboration ska du skriva ett program som analyserar en krypterad text och sedan dekrypterar den. 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. Med 2 positioners förskjutning 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 dekrypteras med hjälp av ett frekvensdiagram. Om t.ex. bokstaven»g» är den mest frekventa i kryptotexten kan vi gissa att förskjutningen är 2 steg. Gränssnittet för ditt program bör se ut så här: 1

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. Om du vill kan du bygga ut programmet så att det också kan hantera åäö. Dessa bokstäver har inte teckenkoder intill a z. 2