Linda Kann NADA 27 januari 2004 LABORATION 1 A Introduktion Efter den här laborationen ska du kunna använda Nadas UNIX-datorer, hantera vektorer och matriser, hantera villkorssatser och slingor samt skriva egna program i.m-filer Inledning Nada har Unixdatorer, men när man loggat in ser skärmen ut ungefär som i Windows. Frontpanelen längst ner på skärmen har fyra knappar i mitten som leder till fyra olika skärmar (workspaces). Till höger om dom fyra knapparna finns utloggningsknappen EXIT. Höger musknapp har en meny som startar några vanliga program. Välj där Terminal, såfårdu ett fönster där du kan skriva unixkommandon. Fönstret blir aktivt när du klickar i det. Om du inte använt Unixtidigare - läs igenom sidorna 1-21 i röda Unix-häftet. Lite administration Skriv allra först i terminalfönstret res checkin numpt04 och svara på frågorna om personnummer och studiestatus (om det inte fungerar kan du istället checka in via kursens webbsida). Anslut dig till denna kursomgång genom att skriva course join numpt04 Kommandot skapar en kurswebbsida åt dej 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 alla program ni skriver i kursen. Du som labbar ensam får istället skapa en egen katalog numpt04 med hjälp av filhanteraren. På nästa datorlaboration kan du kolla att dina labbar har blivit rapporterade genom att ge kommandot res show numpt04 i terminalfönstret. Mer om dessa kommandon står i kapitel 18 i Unixhäftet. Läs kurssidan Vi kommer att använda webben för att sprida kursinformation. Starta Mozilla eller Netscape från skärmmenyn, dvs menyn som kommer fram när du håller ner musens högerknapp på skärmbakgrunden. Adressen till kursens webbsida är www.nada.kth.se/kurser/kth/2d1212/
Starta Matlab Placera markören på skärmens bakgrund och tryck ner högerknappen. Gå ner till Applications och välj Application Manager så öppnas ett fönster med många mappar. Dubbelklicka på mappen Mathematics så öppnas ett nytt fönster med ikoner för matematikprogram. Dra Matlab-ikonen 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 Nedan finns ganska många uppgifter. Vid redovisningen ska du visa upp så mycket 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. Gissa hur mycket pumpan väger. Skriv ett program som slumpar fram ett tal 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. Datorn gissar. Skriv ett program som gissar vilken pumpavikt du tänker på. Först måste du komma på en bra algoritm som ger så få gissningar som möjligt! Matlab som kalkylator Genomför följande beräkningar (och hitta gärna på egna): Beräkna din ålder i sekunder. Försök att minnas 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 din 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 isåfall? Kanmanmultipliceradenmedenkonstant?Medenannanmatris? Använd till sist who för att titta vilka variabler du har använt. Är du nöjd med variabelnamnen? Tillkalla handledare och redovisa!
Staffan Romberger NADA 27 januari 2004 LABORATION 2 A Grafik Efter den här laborationen ska du känna dig säkrare på att visualisera funktioner av 2 variabler, kunna rita bilder utifrån givna punkter och ha byggt ett program i flera delar som presenterar data från en datafil. Du ska också ha skaffat dig vana att sätta ihop en enkel dokumentation av ditt arbete och dess resultat i form av en rapport. Översikt Producera ett dokument som är lämpligt både att visa på skärm och att skriva ut på papper. Möjliga format är MSWord, Framemaker, PDF, PowerPoint, Keynote och HTML. Jag föreslår att du använder MSWord under Windows och Framemaker under Unix. Helst bör resultatet konverteras till PDF men nödvändiga program finns inte i alla datormiljöer på KTH. Gör dokumentet i liggande A4 för visning på skärm med en textstorlek som är tillräcklig för att visa med videoprojektor. För presentation på papper skriver man lämpligen ut 4 sidor på varje papperssida. Låt varje sida ha en sidfot som innehåller gruppmedlemmarnas namn, datum och klockslag. Texten ska visa lösningen, beskriva hur ni kommit fram till den och ge ytterligare kommentarer. Dokumentet ska innehålla text med olika format, Matlab-kod, figurer producerade med Matlab och några formler gjorda med Equation Editor eller möjligen TeX. Tänk på att dokumentet ska vara begripligt även när det skrivits ut i svart-vitt. FrameMaker Redigeringsprogrammet FrameMaker hittar du ungefär som Matlab: placera markören på skärmens bakgrund och tryck ner högerknappen, välj sedan Applications och därefter Application Manager så öppnas ett fönster med många mappar. Dubbelklicka på mappen Layout,_Graphics så öppnas ett nytt fönster med ikoner för redigeringsprogram. Dra FrameMaker-ikonen till skrivbordet och dubbelklicka på den för att starta FrameMaker. IFrameMakerväljerduNew för att få ett nytt dokument. Tips: överst i View-menyn kan du välja QuickAccess Bar... så får du en list med många användbara knappar. Matematiska formler kan du skriva med hjälp av ekvationsfönstret som kommer upp när du klickar på i högerkanten. Börja med att välja New Small Equation i Equations-menyn. Sen kan du både skriva på tangentbordet och välja symboler ur ekvationsfönstret. När du är klar med formeln väljer du Shrinkwrap Equation ur Equations-menyn. Spara din Matlab-graf genom att välja Export... i File -menyn i Matlabs grafikfönster (välj t ex EPS-format). Läs in filen i FrameMaker genom att i File-menyn välja Import och sedan File... Justera storleken genom att markera bilden och i menyn Graphics välja Scale... Du kan spara ditt dokument på FrameMaker-format (.fm) för utskrift. Vill du ha ditt dokument som en w ebbsida väljer du i File-menyn Save As... där du under Format kan byta ut Document mot HTML.
Rosenbrooks funktion Ett vanligt problem är att hitta minimum eller maximum av en funktion. En vanlig testfunktion för algoritmer för detta problem är Rosenbrooks funktion: z = 100(y x 2 ) 2 +(1 x) 2 som har minimivärde 0 i punkten (1, 1). Rita denna funktion på några olika sätt så att man får bra förståelse för funktionen. Rita både från kamerans standardposition och med kameran strax över xy-planet nära x-axeln på negativa y-sidan. Låt ett diagram vara nätdiagram och ett vara ytdiagram. Låt din text kortfattat beskriva hur funktionen ser ut. Du behöver kanske använda hjälpfunktionen i Matlab för att hitta rätt ritfunktioner, för att välja kamerainställning och för att spara diagrammen på lämpligt format så att de kan klistras in i ditt dokument. Visualisering av multiplikation med 2x2-matris Operationen x Ax avbildar punkter. En viss förståelse för denna operation för en matris A får man, om man för ett antal punkter ritar linjer från x till Ax. Skriv en kommandofil i Matlab som ger A ett värde, definierar en radvektor box = [llx lly urx ury] (ll=lower left, ur=upper right) och ett tal n. För nxn punkter inom rektangeln box beräkna Ax och rita t.ex. med funktionen quiver linjer från x till Ax. Modifiera så att quiver inte ritar pilspetsar utan markerar startpunkterna med ringar. Demonstrera med några olika A och olika»punktboxar». Hur ser man att en punkt, x, är egenvektor till A? Banor med Beziersplinekurvor I många ritprogram, bl.a. Photoshop, kan man rita»banor» som är följder av segment. Segmenten är normalt tredjegradskurvor, är normalt kontinuerliga och har kontinuerlig derivata i skarvarna mellan segmenten. Normalt beskrivs varje segment av 4 punkter, 2»ankarpunkter», p 0 och p 3, som är segmentets ändpunkter, och två»styrpunkter», p 1 och p 2, som ligger på tangenterna i ankarpunkterna. Ett segment beskrivs som z =(1 t) 3 p 0 +3(1 t) 2 tp 1 +3(1 t)t 2 p 2 + t 3 p 3 när t går från 0 till 1. Sådana segment kallas Beziersplinekurvor. Skriv en procedur som ritar en Beziersplinekurva, bspline(p) eller bspline(p, n). Parametern p innehåller de 4 punkterna och n är det antal jämt fördelade t-värden för vilka segmentet ska ritas som prickar. Skönsvärde för n ska vara 10. Markera punkterna med ringar och rita styrlinjerna streckade. Gör en kommandofil som läser punkter från en fil med en punkt per rad och fyra punkter per segment, använder funktionen bspline för att rita den bana som är sammansatt av segmenten som beskrivs av punkterna. Använd uigetfile för att fråga efter filnamnet. Konstruera någon egen bana (hur skapar man ett rätlinjigt segment och när blir segmentet en ögla) och rita den bana som ges av filen s.dat i kursens filbibliotek. Du kan senare, när du har lärt dig gränssnittsprogrammering, bygga ut programmet så att man kan flytta punkterna med markören och lägga till och ta bort segment.
Katarina Gustavsson NADA 27 januari 2004 LABORATION 4 A Ekvationslösning, interpolation och numerisk integration Efter den här laborationen skall du känna igen problemtyperna linjära och olinjära ekvationer, överbestämda linjära ekvationer och minst ett sätt att lösa varje problemtyp samt att kunna uppskatta lösningsnoggrannheten. Du skall också lära dig att interpolera, integrera numeriskt och förstå begreppet nogrannhetsordning. 1. Olinjär skalär ekvation Läsanvisning: 2.2, 2.3 i Quarteroni/Saleri Man vill bestämma samtliga rötter till följande skalära ekvation, y(x) =x 4sin(2x) 3=0. Noggrannheten skall vara minst tio korrekta siffror. a) Rita grafen för y(x) =x 4sin(2x) 3 (med MATLAB). Samtliga nollställen till y(x) skall vara med. Hur många rötter finns det? b) Undersök empiriskt och teoretiskt vilka av rötterna som kan bestämmas med följande två metoder: (1) Fixpunktsiterationen x n+1 = sin(2x n )+ 5 4 x n 3 4, (2) Newtons metod. c) För bägge metoderna och för minst två konvergerande rötter skriv ut tabeller som visar hur iteraten konvergerar mot rötterna. Utöka därefter tabellerna så att följande storheter kan avläsas: (1) Konvergenshastigheten (linjär eller kvadratisk) (2) Antalet iterationer som krävs för att få rötterna med minst tio siffrors noggrannhet. 2. Linjär algebra: robotarm Läsanvisning: anteckningar från övning 9 Figuren (på nästa sida) 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 ) y = L 1 sin θ 2 + L 2 sin (θ 1 + θ 2 ) där L 1 och L 2 är länklängderna. 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.
Robothand L2 θ 2 L1 (0,0) θ 1 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 =4mochL 2 =3m. 3. Interpolation och minstakvadratanpassning Läsanvisning: 3.1, 3.4 i Quarteroni/Saleri + extramaterial Givet är följande tabell över termisk konduktivitet som funktion av temperaturen för elementet järn Temperatur, T, (K): 100 200 300 400 500 600 700 800 900 1000 Kond., k, (W/cmK): 1.32 0.94 0.835 0.803 0.694 0.613 0.547 0.487 0.433 0.38 a) Utnyttja de fyra värdena vid temperaturen 100, 400, 700 och 1000 och interpolera genom dem med ett tredjegradspolynom. Rita de fyra givna punkterna och polynomkurvan med fin diskretisering (100:20:1000). Hur stor är konduktiviteten, k när temperaturen T = 300K? Jämför med det uppmätta värdet. Varför använder vi inte alla punkterna och interpolerar med ett niondegradspolynom? b) Anpassa ett andragradspolynom i minstakvadratmening till givna data. Plotta på samma sätt som ovan och ange konduktiviteten för temperaturen T = 300K enligt denna modell. Jämför med det uppmätta värdet. Beräkna även felkvadratsumman. c) Gör om samma beräkningar som i b) för ett tredjegradsploynom. Är anpassningen bättre än i b)? 4. Numerisk integration Läsanvisning: 4.2 i Quarteroni/Saleri Denna del av laborationen handlar om numerisk integrering. Vi önskar beräkna ett integralvärde I(f) = b a f(x)dx med hjälp av någon kvadraturformel. De kvadraturformler som behandlas i denna kurs kan alla skrivas på formen M I approx (f) = α k f(x k ) k=0
där α k kallas kvadraturvikter och x k kallas kvadraturpunkter. M är antalet delintervall. Detta ger att steglängden H =(b a)/m. Kom ihåg att alltid börja med att rita integranden, f(x), över integrationsintervallet för att se hur f(x) beter sig på intervallet. a) Beräkna följande integral (1) exakt med penna och papper. I(f) = 1 1 x +4dx Lös sedan intergralen numeriskt med (2) sammansatta trapetsregeln (se Q&S (4.15)) och (3) sammansatta Simpsons formel (se Q&S (4.21)). Undersök hur approximationsfelet, E H beror av steglängden, H, genom att plotta felkurvor som funktion av steglängen. (Jämför fig 4.4 i Q&S.) Använd MATLABs kommando loglog för plottarna. Uppskatta metodernas noggrannhetsordning, p, med hjälp av dessa plottar. För en metods noggrannhetsordning gäller E H = I(f) I approx (f) konstanth p. där I approx (f) är det numeriskt uträknade integralvärdet med antingen sammansatta trapetsregeln eller sammansatta Simpsons formel. Stämmer detta med vad som gäller för felen enligt formel (4.16) och (4.22) i Q&S? b) Lös integralen I(f) = 2π 0 x π ( e 0.01 )2 dx med MATLAB-funktionen quadl. Sätt toleransen till 10 8 och använd detta integralvärde som referensvärde. Lös sedan integralen med sammansatta trapetsregeln. Börja med M =20.Hur mycket och varför skiljer sig integralvärdet från referensvärdet? Halvera steglängden i sammansatta trapetsregeln tills dess att I quadl I c t 10 6. Jämför antal funktionsevalueringar. Vilken av metoderna har använt flest funktionsevalueringar? Varför? Om du gör anropet [I_t,fnceval]=quadl( fun_name,a,b,tol) när du använder quadl så innehåller variabeln fnceval antalet funktionsevalueringar quadl har användt vid beräkning av resultatet. c) I den här delen skall du räkna ut svängningtiden för en pendel. En pendels svängningstid T beror av utslagsvinkeln ϕ 0 enligt formeln: L T =4 g I(ϕ 0) där L är pendelns längd, g är tyngdaccelerationen och I(ϕ 0 )= π/2 0 dϕ 1 k2 (sin ϕ) 2, k =sinϕ 0 2
Låt L =1moch g =9.81 m/s 2. Skriv ett program som beräknar svängningstiden T för ϕ 0 - värdena 0,5,10,...90 grader. För att beräkna integralen I(ϕ 0 ) används Matlabfunktionen quadl. Plotta resultatet, dvs T som funktion av ϕ 0 iengraf. En ofta använd approximation av T är svängningstiden för små svängningar: L T s =2π g Denna approximation är bra för små utslagsvinklar, men relativfelet ökar med ökande utslagsvinkel. Plotta även en graf som visar relativfelet R Ts som funktion av utslagsvinkeln då 0 ϕ 0 90 grader. Hur många timmar ungefär har den här laborationen tagit? En fråga på kursutvärderingen i slutet av kursen kommer att gälla tidsåtgång och laborationsomfång. Tänk redan nu igenom vad som är bra och vad som kan förbättras!
Katarina Gustavsson NADA 27 januari 2004 LABORATION 5 A Begynnelse-, randvärdesproblem och stora ekvationssystem Efter den här laborationen skall du känna igen problemtyperna randvärdes- och begynnelsevärdesproblem för ordinära differentialekvationer och kunna lösa dessa med differensmetoder. Du skall kunna analysera noggrannhetsordning och bestämma stabilitetsegenskaper både teoretiskt och experimentellt. Du skall också lära dig att lösa stora linjära ekvationssystem och ickelinjära ekvationssystem. 1. Begynnelsevärdesproblem Läsanvisning: Kap 7.2,7.3 och 7.5 i Quarteroni/Saleri a) Givet är följande differentialekvation dy =sin(t) 2y, y(0) = 0, t [0, 20]. dt I denna deluppgift ska ovanstående differentialekvation lösas numeriskt med Eulers framåtmetod och trapetsmetoden. Uppgiften går ut på att undersöka hur trunkeringsfelet avtar med steglängden h (för små värden på h), dvs noggrannheten hur den numeriska lösningen uppför sig för stora h-värden (stabilitet) (1) Lös först differentialekvationen exakt (analytiskt), dvs med metoder som du lärt dig i matematik. Denna lösning betecknas y(t). (2) Dela in tidsintervallet [0, 20] i n ekvidistanta steg h. Eulerlösningen i en punkt t betecknas y(t, h). Skriv ett Matlabprogram som beräknar Eulerlösningarna för n = 100, n = 500 och n = 1000. Plotta i samma graf den exakta lösningen y(t) samt de de tre Eulerlösningarna. Plotta även i ett loglog-diagram felet y(20) y(20,h) som funktion av h. Vilken ordning hos Eulers framåtmetod kan utläsas ur diagrammet? Gör samma beräkningar, grafer och diagram för trapetsmetoden. (3) Dela in tidsintervallet [0, 20] i n =40, 20, 10 och 5 ekvidistanta steg. Beräkna de fyra Eulerlösningarna och plotta dem tillsammans med den exakta lösningen i samma graf. Gör samma sak med trapetsmetoden. Vilken slutsats kan du dra beträffande den numeriska stabiliteten för de två metoderna genom att titta på graferna? b) Följande andra ordningens differentialekvation beskriver en pendels rörelse. d 2 φ dt 2 + g L sin(φ) =0, φ(0) = π 3, dφ (0) = 0, dt t =[0,T] Här är φ vinkeln och φ vinkelhastigheten. Längden på snöret är L = 1 m och tyngdkraften g =9.81 m/s 2.
(1) Skriv om differentialekvationen som ett system av första ordningens differentialekvationer. Systemet skall redovisas på papper. (2) Lös systemet med MATLABs inbygga ode-lösare ode45. Välj ett tidsintervall, [0,T], som gör att pendeln hinner svänga ungefär två hela perioder. Plotta vinkel och vinkelhastighet som funktion av tiden. (3) Animera pendelns gång Animeringen kan göras tex med följande MATLAB kod for i=1:length(tout)-1 x0=l*sin(fi(i));y0=-l*cos(fi(i)); plot([0,x0],[0,y0],x0,y0, o ) axis( equal ) axis([-1.5 1.5-1.5 0]) pause(tout(i+1)-tout(i)) drawnow end tout är tidpunkterna vid vilka ode45 har räknat ut lösningen och fi är den uträknade vinkeln. 2. Randvärdesproblem och stora linjära ekvationssystem Läsanvisning: Kap 5.1-5.4 och 8.1 i Quarteroni/Saleri En homogen balk av höghållfast stål är fritt upplagd horisontellt på två rullstöd med avståndet L = 2.00 m. Balken har ett cirkulärt tvärsnitt med en radie r =2.00 10 2 m och en elasticitetsmodul E =2.00 10 11 N/m 2. Mitt på balken verkar en nedåtriktad kraft P = 100 N. Man vill beräkna balkens utböjning, w(x). P L/2 L/2 w(x) För ett tvärsnitt vid läget x finns ett samband mellan momentet M(x) och balkens utböjning w(x). Om kraften P är tillräckligt liten ges detta samband av följande linjära modell M(x) = w (x). (1) EI I är yttröghetsmomentet för balken och ges utav formeln Momentet beror av kraften P enligt M(x) = I = πr4 4 { Px 2 x L 2 PL 2 (1 x L ) x L 2 Randvillkoren, att balken är fritt upplagd, kan skrivas som w(0) = 0, och w(l) =0. (2)
Ekvation (1) tillsammans med randvillkoren (2) kan lösas numeriskt med hjälp av finita differensmetoden. Om vi diskretiserar balken i N punkter, x j = jh, j =0, 1,...N+1, h = L/(N +1), med en andra ordningens noggrann approximation får vi följande: w j+1 2w j + w j 1 h 2 = M(x j), j =1, 2...N (3) EI w 0 =0 w N+1 =0 (ges av randvillkoren) där w j är utböjningen i punkten x = x j. Diskretiseringen leder till ett linjärt ekvationssystem Aw = f (4) där A är av storlek N N och w =(w 1,w 2,...w N ) är en vektor med de obekanta utböjningarna. Vektorn f ges av högerledet i ekvation (3). a) Skriv ner matrisen A med papper och penna. Vilken struktur har matrisen A? b) I kursbiblioteket finns filerna balk250.mat, balk500.mat, balk1000.mat och balk1500.mat. De innehåller matrisen A för N = 250, N = 500, N = 1000 och N = 1500. Matrisen är här lagrad som en full matris, dvs även alla nollor är lagrade. Börja med att räkna ut utböjningen w för fallet N = 250 genom att lösa det linjära systemet Aw = f. För att göra detta behöver du ladda in matrisen A i MATLAB. Detta görs med kommandot load balk250. Du behöver också räkna ut f som ges av högerledet i ekvation (3) och sambanden för momentet, M(x), och yttröghetsmomentet, I. Använd värdena på L, E, P och r enligt ovan. Lösningen, w, kommer att innehålla utböjningen i alla punkter, x j utom i randpunkterna där w =0. Plotta utböjningen som funktion av x. Hur stor är den maximala utböjningen? c) Backslash-kommandot i MATLAB använder normalt vanlig gausseliminering för att lösa ekvationssystemet. Undersök hur tidsåtgången för gausseliminering beror av systemmatrisens storlek genom att lösa Aw = f för de fyra matriserna balk250.mat, balk500.mat, balk1000.mat och balk1500.mat. Observera att högerledet måste räknas om för de olika storlekarna. För att mäta tiden kan MATLAB-funktionen cputime användas (help cputime ger mer information). Plotta tidsåtgången mot antal obekanta N i en loglog-plot. Hur beror tidsåtgången av N. Stämmer detta med vad du vet från teorin? d) När en matris är gles (fåtal nollskilda element) kan betydligt effektivare metoder än vanlig gausseliminering användas för att lösa ekvationsystemet. Genom att tala om för MATLAB att matrisen är gles kommer bättre metoder automatiskt användas när backslash anropas. Detta kan ni enkelt göra här genom att skriva A=sparse(A). Gå igenom beräkningarna i b) igen. För att få en bra noggrannhet i mätningen av CPU-tiden (eftersom den i detta fallet är kort) bör man upprepa beräkningarna i en for-slinga några gånger och sedan ta medelvärdet. Hur stor tidsvinst gör man i detta fall genom att låta MATLAB använda metoder för glesa matriser? Plotta tidsåtgången mot antal obekanta N i en loglog-plot. Hur beror tidsåtgången av N. Stämmer detta med vad teorin säger? 3. Ett olinjärt ekvationssystem: Vikter på en lina Läsanvisning: extramaterial Två kulor är fästade på ett snöre som hänger mellan två punkter, A och B. Linjen AB mellan punkterna är horisontell och avståndet mellan punkterna är a. Kulornas massa är m 1 resp m 2.
A u1 a B L1 m1 L2 u2 m2 u3 L3 Kulorna delar upp snöret i tre delar med längderna L 1, L 2 och L 3. Uppgiften är att räkna ut vilka vinklar de tre snörena bildar med horisontalplanet samt att rita upp snörets form i en graf. Beteckna de tre sökta vinklarna u 1, u 2 och u 3. De uppfyller villkoret π/2 >u 1 u 2 u 3 > π/2 (se figuren). Observera att vridning i motsols riktning ger en positiv vinkel. Rent geometriskt gäller de två sambanden: L 1 cos u 1 + L 2 cos u 2 + L 3 cos u 3 = a, L 1 sin u 1 + L 2 sin u 2 + L 3 sin u 3 =0 Dessutom gäller vid jämvikt följande samband: m 2 tan u 1 (m 1 + m 2 )tanu 2 + m 1 tan u 3 =0 De tre sambanden utgör tillsammans ett icke-linjärt ekvationssystem för de tre vinklarna u 1, u 2 och u 3. Lös detta ekvationssystem med Newtons metod för följande värden på parametrarna a =2, L 1 =1, L 2 =1, L 3 =1, m 1 =1samt m 2 =3 Rita in snörets form i en graf. En dagboksfil ska visa vilka startgissningar du valt för de sökta vinklarna samt en tabell som visar hur iterationerna konvergerar mot lösningen. Hur många timmar ungefär har den här laborationen tagit? En fråga på kursutvärderingen i slutet av kursen kommer att gälla tidsåtgång och laborationsomfång. Tänk redan nu igenom vad som är bra och vad som kan förbättras!
Hederskodex och regler för examination vid Nadas kurser Bakgrund Det ligger i såväl lärares som studenters intresse att ha en öppen atmosfär som kännetecknas av tillit och ömsesidigt förtroende. Såväl lärare som studenter bidrar till den positiva akademiska andan av kunskapssökande. Utbildningen ska leda till professionalitet i arbetslivet ett begrepp som bl.a. innebär yrkesheder, förståelse och ansvarstagande. Yrkesheder innebär att det man redovisar som sitt eget arbete också är det. Om andra bidragit till arbetet, så redovisar man det. Förståelse innebär att man så långt möjligt ska förstå varför en lösning (på en arbetsuppgift eller inlämningsuppgift) är en bra lösning. Ansvarstagande innebär att man tar ansvar för att lösningen har de kvaliteter som det finns skäl att förvänta. Följande hederskodex och regler för examination vid Nadas kurser antogs i maj 2002 av lärare och studenter i Nadas grundutbildningsgrupp. Grundtankarna är hämtade från den hederskodex som används sedan länge vid Stanforduniversitetet för att upprätthålla gemensamma hedersbegrepp. Om studenter och lärare följer hederskodexen kan resurserna i större utsträckning läggas på annat än övervakning och kontrollåtgärder. Hederskodex Kontroll av kunskap och färdighet ska vara en värdefull del av utbildningen. Läraren ska alltid försöka att utforma såväl laborationer, hemuppgifter etc. som klassiska tentamina i sal med tanke på detta. Studenten ska ärligt redovisa vad han/hon gjort själv och vad han/hon inte gjort själv. Kopiering av text eller programkod är ohederligt. I vissa sammanhang kan det dock vara lämpligt att citera någon auktoritet och då ska studenten öppet redovisa vad som är citat och vem som citeras. I andra sammanhang kan det vara lämpligt att använda färdiga programexempel, t.ex. ur läroboken. Den student som gör det, ska öppet redovisa det. Det är fel att ta del av en hel lösning till en uppgift, men det är rätt att ta hjälp när man kört fast. Sådan hjälp ska alltid öppet redovisas. Läraren ska sträva efter att ge uppgifter som inte frestar till kopiering. De bör vara rimligt svåra och bedömningen av studenternas arbetsinsatser ska vara välvillig. Om studenterna vid ett grupparbete gjort olika stora insatser ska de öppet redovisa detta. Det är fel att försöka åka snålskjuts på labbkamrat(er), men det är rätt att låta en duktigare eller mer ambitiös student få äran av sin prestation. Lärarens roll är att låta alla gruppmedlemmar få visa upp vad de bidragit med. Ärligt redovisade brister bör bedömas med välvilja. Regler för examination Alla kurser examineras. På Nadas kurser förekommer många examinationsformer från den klassiska skriftliga tentamen i sal till så kallad alternativ examination i form av laborationer, hemuppgifter, uppsatser, hemtentamina m.m. Allt som bidrar till bedömningen av om en student klarat en kurs eller till vilket betyg han/hon ska ha är examination. De alternativa examinationsformerna bedöms ofta som mer meningsfulla av såväl studenter som lärare. De bygger på förtroende och kräver stort ansvarstagande från de studerandes sida. En förutsättning för att den alternativa examinationen ska fungera som kunskapskontroll är att studenterna gör uppgifterna själva. Den student som inte gör uppgiften själv har inte fått den kunskap som betyget anger. Studierna ska vidare inte bara ge kunskaper utan även förbereda för arbetslivet där höga krav ställs på den anställdes eget kunnande. De allra flesta studenter tar sina studier på allvar och sätter en ära i att göra sina uppgifter självständigt och på ett seriöst sätt för att nå en god inlärning. Tyvärr finns dock undantag. Enligt de regler som gäller för högskolan får disciplinära åtgärder vidtas mot student som använder otillåtna hjälpmedel eller på annat sätt försöker vilseleda vid prov eller när en studieprestation
annars ska bedömas, dvs. försöker fuska. Läraren är enligt samma regler skyldig att anmäla grundad misstanke om fusk. Fuskärenden behandlas i KTHs (SUs) disciplinnämnd där rektor är ordförande. Syftet med dessa regler är att klargöra vad som är tillåtet respektive otillåtet vid examination. Brott mot reglerna (annat än ringa slarv) betraktas som fusk. Reglerna gäller för all examination i alla Nada-kurser. Kursledningen kan ge kompletterande direktiv för en enskild kurs. Utöver dessa regler gäller självfallet KTHs regler för tentamina, se KTH-handboken del 2 flik 11.3 och SUs regler för tentamina, se SUs regelbok. Regel 1: Alla ansvarar vid arbete i grupp Många uppgifter görs i grupper om två eller fler studenter. Vid arbete i grupp är samarbete inom gruppen naturligtvis tillåtet. Varje gruppmedlem ska bidra till arbetet på ett rättvist sätt. Alla gruppmedlemmar ska, var för sig, kunna redogöra för hela uppgiften och hela lösningen. Regel 2: Redovisa ärligt hjälp som erhållits och källor som använts Om det finns delar av lösningen som studenten inte gjort själv, så måste studenten göra examinerande lärare uppmärksam på detta. I många sammanhang är det naturligt att använda sådant andra har gjort. Vid programmeringsuppgifter kan det vara naturligt att använda färdiga exempel som finns i kurslitteraturen eller som kursledningen tillhandahållit. Detta ska tydligt redovisas, t.ex. i form av kommentarer i koden. När man skriver rapporter/uppsatser är det naturligt att använda olika typer av källor och dessa ska då redovisas i form av referenser och en källförteckning (direkta citat måste explicit anges). Den som utnyttjar en idé som härstammar från en annan person ska tydligt redovisa varifrån idén kommer. Detta gäller även idéer som förmedlats muntligt, exempelvis vid diskussion med andra studenter. När man kör fast på en (programmerings-)uppgift kan man behöva be en handledare eller en kamrat om hjälp med felsökning eller tips. Det är tillåtet, men hjälpen ska tydligt redovisas, t.ex. i form av kommentarer i koden eller i labbrapporten om det gäller mer än någon enstaka kodrad eller mening. Den som söker hjälp med att lösa sin uppgift ska göra det i syftet att öka sin förståelse inte i syftet att snabbt och enkelt klara av uppgiften. Tanken är naturligtvis inte att studenterna ska leva i ett vakuum och inte få diskutera sina uppgifter med sina kamrater. Diskussioner kamrater emellan uppmuntras, men efter diskussionen ska var och en göra sin egen lösning. En student som, enligt examinerande lärares bedömning, gjort alltför liten del av lösningen själv har inte fuskat men har inte presterat tillräckligt för att kunna godkännas på det aktuella kursmomentet. Regel 3: Kopiera inte från andras lösningar Varje student ska skriva sin egen text (egen programkod). Kopiering av text (eller programkod) från andras lösningar är förbjuden oberoende av källa. Kopiering av text (eller programkod) är inte tillåten även om texten (eller programkoden) skrivs om så att ytstrukturen är olika men innehållet är detsamma. Nada har ett program som används på vissa kurser för att beräkna likheten mellan olika lösningar till samma uppgift. Regel 4: Var beredd att redogöra för lösningen Varje student ska vid muntlig examination kunna redogöra för hela uppgiften och hela lösningen (även de delar som studenten eller gruppen inte gjort själv) det gäller alltså att vara påläst vid redovisningen.
Regel 5: Hantera närvarolistor korrekt Vid vissa kursmoment, t.ex. muntliga projektredovisningar, förekommer obligatorisk närvaro. Denna kan kontrolleras via närvarolistor eller på annat sätt. Det är inte tillåtet att försöka få det att framstå som om en person närvarat fast han/hon inte gjort det (t.ex. genom att skriva upp inte bara sitt eget utan även en kamrats namn på närvarolistan).