TAIU07 Matematiska beräkningar med Matlab



Relevanta dokument
TANA17 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med Matlab

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

TANA17 Matematiska beräkningar med Matlab

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

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

TAIU07 Matematiska beräkningar med Matlab

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

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

Introduktion till MATLAB

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

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

TAIU07 Matematiska beräkningar med Matlab

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

TANA17 Matematiska beräkningar med Matlab

MMA132: Laboration 1 Introduktion till MATLAB

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

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

Textsträngar från/till skärm eller fil

Syftet med den här laborationen är att du skall bli mer förtrogen med följande viktiga områden inom matematisk statistik

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26

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

2 februari 2016 Sida 1 / 23

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31

Matematisk Modellering

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

Sidor i boken , , 3, 5, 7, 11,13,17 19, 23. Ett andragradspolynom Ett tiogradspolynom Ett tredjegradspolynom

Instruktion för laboration 1

Matriser och vektorer i Matlab

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

Facit till Några extra uppgifter inför tentan Matematik Baskurs. x 2 x

Inlämningsuppgift 4 NUM131

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

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

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Instruktion för laboration 1

Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

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

Funktioner och grafritning i Matlab

1 Syfte. 2 Moment hos och faltning av fördelningar MATEMATISK STATISTIK, AK FÖR L, FMS 033, HT Angående grafisk presentation

MATLAB handbok Introduktion

Programmeringsteknik med C och Matlab

Grunderna i stegkodsprogrammering

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

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

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

Mer om linjära ekvationssystem

Introduktion till Matlab

Frågorna 1 till 6 ska svaras med sant eller falskt och ger vardera 1

RödGrön-spelet Av: Jonas Hall. Högstadiet. Tid: minuter beroende på variant Material: TI-82/83/84 samt tärningar

TAIU07 Matematiska beräkningar med Matlab

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

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

TSBB14 Laboration: Intro till Matlab 1D

Beräkningsvetenskap föreläsning 2

Tentaupplägg denna gång

TMV156/TMV155E Inledande matematik E, 2009

Lösningar till linjära problem med MATLAB

SF1624 Algebra och geometri Tentamen Onsdagen 29 oktober, 2014

MMA132: Laboration 1 & 2 Introduktion till MATLAB

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Matlabövning 1 Funktioner och grafer i Matlab

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

MMA132: Laboration 2 Matriser i MATLAB

Enklast att skriva variabelnamn utan ; innehåll och variabelnamn skrivs ut

Uppgift 1 ( Betyg 3 uppgift )

Abstrakt algebra för gymnasister

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

Matlabövning 1 Funktioner och grafer i Matlab

Introduktion. Exempel Övningar Lösningar 1 Lösningar 2 Översikt

Börja programmera. Kapitel 4 i kompendiet Jämförande uttryck Villkorssatser Loopar (slingor) Funktioner. Läs inte avsnitt 4.2.3

Lennart Carleson. KTH och Uppsala universitet

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Repetitionsuppgifter i Matematik inför Basår. Matematiska institutionen Linköpings universitet 2014

4 Sammansatta datatyper

Föreläsning 1 & 2 INTRODUKTION

Beräkningsverktyg HT07

Linjära ekvationssystem i Matlab

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

TATA42: Föreläsning 10 Serier ( generaliserade summor )

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

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

Javisst! Uttrycken kan bli komplicerade, och för att få lite överblick över det hela så gör vi det så enkelt som möjligt för oss.

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

Tentamen OOP

FÖRELÄSNING 1 ANALYS MN1 DISTANS HT06

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

Flera kvantifierare Bevis Direkt bevis Motsägelse bevis Kontrapositivt bevis Fall bevis Induktionsprincipen. x y (x > 0) (y > 0) xy > 0 Domän D = R

varandra. Vi börjar med att behandla en linjes ekvation med hjälp av figur 7 och dess bildtext.

Kombinatorik. Författarna och Bokförlaget Borken, Kombinatorik - 1

Objektorienterad programmering D2

DN1230 Tillämpad linjär algebra Tentamen Onsdagen den 29 maj 2013

Uppgift 1 ( Betyg 3 uppgift )

4.3. Programmering i MATLAB

Föreläsning 6: Introduktion av listor

Fråga 13. Skriv en loop som fyller arrayen int v[100] med talen

a), c), e) och g) är olikheter. Av dem har c) och g) sanningsvärdet 1.

4.4. Mera om grafiken i MATLAB

Transkript:

TAIU07 Matematiska beräkningar med Matlab Datorlektion 2. Villkor och Repetition 1 Logiska uttryck Uppgift 1.1 Låt a=3 och b=6 Vad blir resultatet av testerna a<=b, a==b och a>b? Uppgift 1.2 Låt a, b, och c vara reella tal. Ange ett uttryck som ger resultatet sant då alla talen är lika, och falskt annars. Pröva om ditt uttryck är korrekt genom att testa några olika värden på parametrarna a, b, och c. Uppgift 1.3 Låt a, b, och c vara reella tal. Ange ett uttryck som ger resultatet sant då alla talen är olika, och falskt annars. Pröva om ditt uttryck är korrekt genom att testa några olika värden på parametrarna a, b, och c. Uppgift 1.4 Låt x vara ett reelt tal. Skriv ett logiskt uttryck som ger värdet sant om 0<x 10. Uppgift 1.5 Skriv in följande data: 2 1 3 A= 2 1 1, och, B= 1 0 3 Vad blir resultatet av testerna A==B, A =B, och A<=B? 1 1 0 2 1 0 2 1 3. Vad blir resultatet av uttrycket A>B A<B? Kan samma uttryck skrivas på ett enklare sätt? Som vi sett blir resultatet av jämförr mellan matriser och vektorer en ny vektor eller matris med nollor eller ettor beroe på om jämförn är sann eller falsk för respektive element. Exempelvis så visar kommandot >> [ 1, 0, -1] > [ 0, 2, 3] ans = 1 0 0 att jämförn är sann ast för det första elementet. Detta kan utnyttjas för beräkningar. Uppgift 1.6 Låt x vara en vektor med n = 10 element. Använd en jämför operation och kommandot sum för att hitta antalet positiva element i vektorn x.

Uppgift 1.7 Antag att y är en vektor som innehåller n stycken tal. Vi har tidigare använt min för att hitta det minsta elementet i vektorn. Hitta ett sätt att räkna hur många gånger det minsta talet förekommer i vektorn y. I exemplet >> y = [ 1, 3, -1, 4, -1, 5, 3, -1] så skall vi få svaret 3 då talet 1 förekommer på tre platser. Uppgift 1.8 Antag att vi har en vektor x och vill kontrollera om den är sorterad i stigande ordning. Hur skall sum användas tillsammans med en jämföroperation för att testa detta? Tips Med kolon-notation så ger x(2:) en vektor som innehåller allt utom första elementet i vektorn x. 2 Villkorssatser Uppgift 2.1 Antag att vi har beräknat en konstant C. Vi vet att konstanten måste vara positiv. För att vara säker på att beräkningen blev korrekt vill vi testa detta genom att skriva en villkorssats som testar om C verkligen är positiv. Om så inte är fallet skall en varning skrivas ut. Tips Använd disp( Varning: C ej positiv ). Utskrift av text återkommer senare i kursen. Uppgift 2.2 Funktionen f(x) ges av uttrycket x 2, x<0 f(x)= sin(x), 0 x< π 2 1, x π 2 Skriv en villkorssats som beräknar y = f(x) för ett givet x värde. Det är lämpligt att skriva din villkorssats i en M fil. I MATLAB finns en fördefinierad funktion pi som returnerar värdet på π. Testa att ditt program fungerar! Uppgift 2.3 Antag att a = 5 och att variabeln flagga har värdet falskt (dvs flagga=0 i MATLAB). Vad händer i följande fall? if flagga if flagga if a<10 if a<10 a=a+1 a=a+1 a=a-1 a=a-1 Pröva om du är osäker! Uppgift 2.4 Vad skulle ha hänt i uppgiften ovan om a=5, men variabeln flagga istället hade haft värdet sant? 2

3 Repetionssatsen for Uppgift 3.1 Skriv ett program som beräknar summan S = 100 k=1 k. Uppgift 3.2 Vad blir x(5) då följande program exekveras? x=zeros(5,1); for k=2:1:5 x(k)=x(k-1)+k Pröva om du är osäker! Uppgift 3.3 (Svår) Exponentialfunktionen kan approximeras bra genom att använda serien e x = 1+x+ x2 2 + x3 6 +... n där vi alltså tar med de första n+1 termerna i summan. Välj n = 10 och skriv en for loop som beräknar summan ovan. Testa ditt program genom att beräkna e 2 genom dels standard funktionen exp och dels ditt program. Tips Då du beräknar termerna i summan behöver du k fakultet. Utnyttja att k! = (k 1)!k och inför en extra variabel där k! lagras och som uppdateras i varje steg i for loopen. Uppgift 3.4 Skriv ett program som bildar den så kallade Hilbert matrisen, dvs en n n matris H, vars element ges av H(i,j) = 1/(i + j 1). Du kan tilldela parametern n ett värde överst i ditt program. Tips Det finns en inbyggd standard funktion, hilb, i MATLAB som du kan använda för att kontrollera att ditt program fungerar. Uppgift 3.5 Antag att vi har en vektor x som innehåller n element. Använd en for-loop för att hitta det minsta elementet i vektorn. Tips Skapa en test vektor x=rand(5,1) och testa så att ditt program fungerar. Uppgift 3.6 Låt c = (1, 2, 1.5) T. Vi vill beräkna polynomet p(x), som ges av n 1 p(x) = c k x k, k=0 för ett antal x-värden sparade i en vektor x. Använd en for-loop för att beräkna polynomets värden. Använd length(c) för att bestämma hur många koefficienter som finns (och därmet polynomets gradtal). Då du är färdigt skall du använda ditt program för att rita en graf över polynomet p(x) = 1 2x+ 1.5x 2 på intervallet 0 x 2. k=0 x k k!. 3

Uppgift 3.7 Låt a och b vara två vektorer med n element, och antag att alla element i vektorn b är positiva. Skriv ett program som beräknar värdet, M= max a i. 1 i n b i Uppgift 3.8 Låt A vara en n m matris som innehåller både positiva och negativa element. Beräkna summan av de positiva elementen i matrisen. Tips Som exempel kan du bilda en testmatris med A=rand(5,4)-0.5. Använd [n,m]=size(a); i ditt program för att ta reda på hur stor matrisen är.. Uppgift 3.9 (Svår) En matris sägs vara diagonaldominant om n j=1,j i a ij a ii, i=1,2,...,n, med sträng olikhet för åtminstone en rad i. Skriv ett program som kontrollerar om en matris A är diagonal dominant. Ifåfall skall en utskrift göras till skärmen. Uppgift 3.10 (Svår) Multiplikation mellan två matriser A och B definieras som att C = AB, där c ij = n a ik b kj. k=1 Skriv ett program som beräknar matrisen C. Produkten AB är ast definierad om A och B har dimensioner som passar ihop. Ditt program skall innehålla en villkorssats som testar detta. 4 Simulering och Sannolikhetslära I Matlab finns flera funktioner för att skapa slumptal. Ett exempel är rand som skapar matriser där elementen är slumptal. Skriver vi >> P = rand(10,3); så skapas en 10 3-matris där elementen är likformigt fördelade på intervallet [0, 1]. Det finns även en funktion randi som skapar slumpmässiga heltalsvärden. Uppgift 4.1 Antag att vi kastar 5st tärningar. Hur många sexor kan vi förvänta oss att få? Svara på frågan genom att skapa en 5 1000-matris P där varje element är ett slumpmässigt heltal mellan 1 och 6. Varje kolumn P(:,i) representerar då ett kast med fem tärningar. Använd sum och en jämför för att skapa en 1 1000 vektor där varje element är summan av antalet sexor för respektive omgång med fem tärningskast. Använd sedan mean för att beräkna det genomsnittliga antalet sexor man får vid kast med fem tärningar. 4

Uppgift 4.2 (Svår)Antag att en hink innehåller totalt 8 bollar, varav fem är svarta och tre är vita. Vi drar två bollar från hinken och undersöker hur stor sannolikhet det är att vi drar två vita bollar. För att simulera en omgång då vi drar två bollar skall vi göra följande: Då första bollen dras är det 5/8 chans att få en svart och 3/8 chans att få en vit. Använd rand eller randi för att simulera första bollen vi drar. Då vi skall plocka den andra bollen från hinken så beror sannolikheterna på vilken boll vi redan plockat upp. Använd en if-sats för skilja på de två fallen (dvs första bollen blev antingen vit eller svart) och simulera vad som händer när den andra bollen plockas upp. Tips Använd utskrifter av typ disp( Två vita bollar ) för att visa vad som händer. Enklast är att använda nästlade if-satser. 5

TAIU07 Matematiska beräkningar med Matlab Facit till Datorlektion 2. 1 Logiska uttryck Uppgift 1.1 Uttrycket a<=b ger resultatet 1, dvs sant, a==b ger 0, dvs falskt. Uttrycket a>b ger falskt. Uppgift 1.2 Exempelvis ( a==b ) & ( a==c ) & ( b==c ). Uppgift 1.3 Exempelvis ( a =b ) & ( a =c ) & ( b =c ). Uppgift 1.4 Uttrycket blir ( 0<x )&( x<=10 ). Uppgift 1.5 De logiska uttrycken ger matriser som svar. De är: 0 0 0 0 1 0, 0 0 1 1 1 1 1 0 1, och 1 1 0 0 1 0 1 1 0 1 0 1 Uttrycket kan skrivas som A =B. Resultatet blir 1 1 1 1 0 1. 1 1 0 Uppgift 1.6 Använd >> AntalPositiva = sum( x > 0 ); Uppgift 1.7 Raderna >> y=[1 3-1 4-1 5 3-1] >> n = sum( y == min(y) ) ger svaret n = 3. Uppgift 1.8 Skriv >> sum( x(2:)-x(1:-1) < 0 ) då vektorn x(2:)-x(1:-1) är positiv om x k x k 1 > 0 för alla k, dvs om vektorn är sorterad i stigande ordning. Testa med >> x = 0:10 så fås svaret 0 vilket beryder att inget element ligger i fel ordning.. 6

2 Villkorssatser Uppgift 2.1 Använd if C<0 disp( Varning: C ej positiv ) Uppgift 2.2 Exempelvis kan filen funktion.m innehålla raderna: if ( x < 0 ) y=x^2; if ( x < pi/2 ) y=sin(x); y=1; disp(y) Uppgift 2.3 I första fallet fås a=5. I andra fallet fås a=4. Uppgift 2.4 Nu fås istället a=6 i bägge fallen. 3 Repetionssatsen for Uppgift 3.1 Följande MATLAB kommandon beräknar summan S=0; for k=1:100 S=S+k; ; disp(s) % <- används för att lagra en partialsumma Uppgift 3.2 Programmet skapar en kolumnvektor x = (0 2 5 9 14) T. x(5) blir alltså 14. Uppgift 3.3 Vi sparar en variabel kfak för att spara k!. Programmet blir x=0.7; % Eller det x-värde man är intresserad av kfak=1;s=1;n=10; for k=1:n kfak=kfak*k; % Blir 1*1 första gången! S=S+x^k/kfak; disp(s) Uppgift 3.4 För att skapa Hilbert matrisen H kan följande program användas. 7

N=5; H=zeros(N,N); for i=1:n for j=1:n H(i,j)=1/(i+j-1); ; ; Uppgift 3.5 Vi sparar en variabel x_min som innehåller det hittils minsta elementet vi hittat. Programmet blir då x_min=x(1); n = length(x); for k=2:n if x(k)<x_min x_min=x(k); % Hittat mindre! Uppdatera x_min. disp(x_min) Uppgift 3.6 Vi skapar vektorn c, en vektor med x-värden och beräknar polynomet med c=[1-2 1.5]; x=0:0.01:2; p=c(1)*x.^0; for k=2:length(c) p=p+c(k)*x.^k; plot(x,p) % ger första termen. elementvis op. ty x är vektor. Uppgift 3.7 Vi skriver M = abs(a(1)/b(1)); for k=2:length(a) if abs(a(k)/b(k))>m M = abs(a(k)/b(k)); disp(m) Uppgift 3.8 Vi använder size för att hitta matrisens storlek. Summan beräknas med [n,m]=size(a);s=0; for i=1:n for j=1:m if A(i,j)>0 S=S+A(i,j); 8

disp(s) Uppgift 3.9 Vi behöver två logiska variabler: Den första AllaMindre skall bli falsk om någon rad bryter mot olikheten. Den andra EnStrikt skall bli sann så snart vi hittar en strikt olikhet på någon rad. Programmet blir [n,m]=size(a); AllaMindre = 1; % Alla rader vi undersökt hittils uppfyller olikheten. EnStrikt = 0; % Vi har ännu inte hittat någon strikt olikhet for i=1:n % Undersök rad i. S=0; for j=1:m S=S+abs(A(i,j)); % S blir radsumman ; if S<2*abs(A(i,i)) % Vi har A(i,i) i S också. EnStrikt = 1; if S > 2*abs(A(i,i)) AllaMindre = 0; % Hittat en ogiltig olikhet! break; % Vi behöver inte fortsätta. Vet nu att falskt! % Nu lägger vi ihop resultatet i en ny logisk variabel. DiagDom = AllaMindre & EnStrikt ; if DiagDom, disp( Matrisen är diagonal dominant ), Uppgift 3.10 Givet två matriser A och B skriver vi [n1,m1]=size(a);[n2,m2]=size(b); if m1 ~= n2 % I detta fallet fungerar det inte disp( dimensioner passar ej ); C=zeros(n1,m2); % Skapa C med rätt storlek for i=1:n1 for j=1:m2 % beräkna C(i,j) med formeln. for k=1:m1 C(i,j)=C(i,j)+A(i,k)*B(k,j); 9

4 Simulering och Sannolikhetslära Uppgift 4.1 Följande steg löser uppgiften. N=1000; P=randi( [1,6],5,N); % 5xN matris med heltal 1,..,6 V=sum( P == 6, 1 ); % summera över första dimensionen. Dvs raderna. mean(v) Genomsnittet blir ungefär 0.83 sexor. Uppgift 4.2 Programmet I = randi([1 8]); if I <= 5 % Första bollen blev svart. 7 bollar kvar. 4 svarta. I = randi([1 7]); if I <= 4 disp( Två svarta bollar. ) disp( En vit och en svart boll. ); % Första bollen blev vit. 7 bollar kvar. 5 svarta I = randi([1 7]); if I <= 5 disp( En vit och en svart boll. ) disp( Två vita bollar ); 10