TAIU07 Matematiska beräkningar med Matlab

Relevanta dokument
TANA17 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med Matlab

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

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

2 februari 2016 Sida 1 / 23

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

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

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: 13:e januari klockan

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

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

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

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

Introduktion till MATLAB

TANA17 Matematiska beräkningar med Matlab

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

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

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

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

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

TANA17 Matematiska beräkningar med Matlab

TAIU07 Matematiska beräkningar med Matlab

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. 9 november 2015 Sida 1 / 28

Laboration: Grunderna i MATLAB

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

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

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

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

TAIU07 Matematiska beräkningar med Matlab

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 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

Beräkningsvetenskap föreläsning 2

Övningar. MATEMATISKA INSTITUTIONEN STOCKHOLMS UNIVERSITET Avd. Matematik. Linjär algebra 2. Senast korrigerad:

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

Labb 3: Ekvationslösning med Matlab (v2)

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

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

Övningar. c) Om någon vektor i R n kan skrivas som linjär kombination av v 1,..., v m på precis ett sätt så. m = n.

Beräkningsverktyg HT07

15 februari 2016 Sida 1 / 32

TAMS79: Föreläsning 10 Markovkedjor

(a) Skriv en matlabsekvens som genererar en liknande figur som den ovan.

MMA132: Laboration 2 Matriser i MATLAB

TMV156/TMV155E Inledande matematik E, 2009

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

x f (x) dx 1/8. Kan likhet gälla i sistnämnda relation. (Torgny Lindvall.) f är en kontinuerlig funktion på 1 x sådan att lim a

2. (a) Skissa grafen till funktionen f(x) = e x 2 x. Ange eventuella extremvärden, inflektionspunkter

a = a a a a a a ± ± ± ±500

Matematisk kommunikation för Π Problemsamling

MMA132: Laboration 1 Introduktion till MATLAB

TAIU07 Matematiska beräkningar med Matlab

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

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

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

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

TMV225 Inledande Matematik M

Förkortning och förlängning av rationella uttryck (s. 29 Origo 3b)

8. Euklidiska rum 94 8 EUKLIDISKA RUM

Enklare matematiska uppgifter

Instruktion för laboration 1

Matlabövning 1 Funktioner och grafer i Matlab

4.3. Programmering i MATLAB

1 Förberedelser. 2 Att starta MATLAB, användning av befintliga m-filer. 3 Geometriskt fördelad avkomma

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

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 8 december 2015 Sida 1 / 22

Polynomanpassningsprogram

TANA81: Simuleringar med Matlab

Konvergens för iterativa metoder

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

Inlämningsuppgift 4 NUM131

Kort om programmering i Matlab

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

Föreläsning 5. Approximationsteori

MMA132: Laboration 1 & 2 Introduktion till MATLAB

TSBB14 Laboration: Intro till Matlab 1D

Vi definierar addition av två vektorer och multiplikation med en reell skalär (tal) λλ enligt nedan

Fixpunktsiteration. Kapitel Fixpunktsekvation. 1. f(x) = x = g(x).

Matriser och vektorer i Matlab

Matematisk kommunikation för Π Problemsamling

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

S n = (b) Med hjälp av deluppgift (a) beräkna S n. 1 x < 2x 1? i i. och

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

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Isometrier och ortogonala matriser

Mer om funktioner och grafik i Matlab

Matematiska uppgifter

För teknologer inskrivna H06 eller tidigare. Skriv GAMMAL på omslaget till din anomyna tentamen så att jag kan sortera ut de gamla teknologerna.

Bisektionsalgoritmen. Kapitel Kvadratroten ur 2

TATM79: Föreläsning 1 Notation, ekvationer, polynom och summor

Matlabövning 1 Funktioner och grafer i Matlab

LINJÄR ALGEBRA II LEKTION 6

En introduktion till MatLab

Sanningar om programmering

Variabler och konstanter

Föreläsningsanteckningar Linjär Algebra II Lärarlyftet

Transkript:

TAIU07 Matematiska beräkningar med Matlab Datorlektion 3. Avbrott och Funktioner 1 Repetionssatsen while Uppgift 1.1 Skriv ett program som skriver ut det minsta tal av formen 3 n som är större än 5000. Talet n skall vara ett heltal. Uppgift 1.2 En reell rot till ekvationen p(x)=x 3 3ax+1 = 0, där a 1, kan bestämmas som gränsvärde av talföljden {x k } k=0 definierad av { x0 =0 x k+1 = x3 k +1 3a, k = 0,1,2,... Skriv ett program som bestämmer detta gränsvärde. Tilldela först konstanten a ett värde och beräkna sedan x 1,x 2,... Avbryt då villkoret x k+1 x k <10 6. Skriv ut värdet på a, x k+1, k+1, och p(x k+1 ). Vilket resultat fås då a=3? Uppgift 1.3 I ett spel skall vi kasta tärningar i följd tills vi får en sexa. Skriv ett Matlab program som simularar en sådan spelomgång genom att slumpa fram heltal mellan 1 och 6 tills resultatet blev en sexa. Ditt program skall göra utskrifter enligt följande mönster Tärning 1: 2 Tärning 2: 3 Tärning 3: 1 Tärning 4: 6 Vi fick en sexa efter 4 tärningskast. Försök få din utskrift så lik ovanståe som möjligt. Uppgift 1.4 Skriv ett program som beräknar en approximation till summan S = k=1 sin(k) k 2. Avbryt summeringen då nästa term är till beloppet mindre än en given tolerans. Vad blir summans beräknade värde om toleransen ǫ=10 8 används?

Uppgift 1.5 En talföld bildas enligt följande regler: x 0 = 1 och x 1 = 2 x n = 5x n 1 4x n 2 n = 2,3,... Skriv ett program som bildar följden {x n } n=0 enligt ovanståe regler. Programmet skall beräkna nya termer i talföljden ända tills nästa term x n är större än 10 4. Programmet skall då göra en utskrift liknande: n=9 ger xn=29983 vilket ar storre an 10000 Uppgift 1.6 Fibonaccitalen är en talföljd som definieras av följande rekursionsformel: { F1 =1, F 2 =1, F n+2 =F n+1 +F n, n= 1,2,3,... De första 5 talen i följden är alltså F= ( 1 1 2 3 5 ), Skriv ett program som hittar det största Fibonacci talet som fortfarande är mindre än 1000. Uppgift 1.7 (Svår) Ett kast med en tärning kan simuleras med hjälp av funktionen randi. Vi vill ta reda på hur många tärningskast som krävs i genomsnitt för att få en sexa. Gör följande: Skriv ett program som simulerar tärningskast. Ränka hur många kast som krävs innan du får en sexa. Bygg ut ditt program så att N = 100 omgångar simuleras. Beräkna genomsnitttliga antalet kast som krävdes för att få en sexa. Tips Skapa först en N 1 vektor AntalKast som innehåller nollor. Efter att du genomfört en omgång tärningskast så sparar du antalet kast som krävdes på en plats i vektorn AntalKast. I slutet kan du använda mean för att beräkna genomsnittliga antalet kast. 2

2 Egna Funktioner Uppgift 2.1 En funktion f(x) ges av uttrycket 0, x 0, f(x)= sin(x), 0 < x π 2, 1, x > π 2 a) Skriv en Matlab funktion funk.m som implementarar uttrycket ovan. Din funktion skall ha ett reellt tal x som inparameter, och returnera motsvarande funktionsvärde som utparameter. b) Skriv ett program som ritar en graf över f(x), på intervallet 1 < x < 2. Ditt program skall använda funktionen funk.m ifrån a). Uppgift 2.2 Skalärprodukten mellan två vektorer x och y definieras som x y = n x i y i. i=1 Skriv en funktion ScalarProd, med två vektorer x och y som inparametrar och som beräknar skalär produkten med hjälp av en for-loop. Använd din funktion för att beräkna skalärprodukten mellan vektorerna x = ( 1, 4, 2) T och y = (3, 2, 1) T. Tips Det finns en standard funktion dot som beräknar skalärprodukten. Du kan använda den för att kontrollera att din funktion ger rätt svar. Uppgift 2.3 Den Euklidiska längden av en vektor x ges av uttrycket ( n 1/2 x 2 = xk) 2. Skriv en funktion VektorLangd med x som inparameter och vektorns längd som utparameter. k=1 Tips I Matlab finns en funktion norm som beräknar samma Euklidiska längd. Du kan använda den för att verifiera att din funktion fungerar. Uppgift 2.4 Ett polynom, av grad n, kan skrivas P n (x)=c 0 +c 1 x+c 2 x 2 +...+c n x n, Skriv en funktion Polynom som har en vektor c = (c 0 c 1... c n ) och en vektor x, med ett antal x-värden, som inparametrar, och som beräknar polynomets värden för dessa x värden. Då din funktion funktion är färdig skall du alltså kunna skriva >>x=-1:0.01:1; >>plot( x, Polynom([-1 0 2],x)); så skall polynomet P 2 (x) = 1+2x 2 plottas på intervallet 1 < x < 1. 3

Uppgift 2.5 Fibonaccitalen är en talföljd som definieras av följande rekursionsformel { F1 =1, F 2 =1, F n+2 =F n+1 +F n, n= 1,2,3,... a) Skriv en funktion Fibonacci, med ett heltal N som inparameter, som returnerar en vektor med de första N Fibonaccitalen som utparameter. Exempelvis skall vektorn ges som utparameter om N=5. F= ( 1 1 2 3 5 ), b) Skriv ett program som hittar det minsta N för vilket summan av de första N Fibonacci talen är större än 10 4. Ditt program skall använda funktionen ifrån (a) för att beräkna successivt längre följder av Fibonaccital. Uppgift 2.6 Kvadratroten av ett positivt tal a kan beräknas genom att gränsvärdet till talföljden { x1 =1, ( ) x n+1 = 1 2 x n + a x n, n=1,2,... bestäms. Tillräckligt noggrannhet anses ha uppnåtts då x n+1 x n < 10 9. Skriv en funktion Kvadratrot med ett tal a som inparameter och en approximation av a som utparameter. Använd din funktion för att beräkna 3. Uppgift 2.7 (Svår) En magisk kvadrat har egenskapen att alla rader, kolumner, och bägge diagonalerna har samma summa. Exempelvis är A= 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 en magisk kvadrat då summan av elementen på varje enskild rad är 65, och samma summa fås för varje kolumn, och även för de bägge diagonalerna. Du skall skriva en funktion magisk med en kvadratisk matris A som inparameter och en logisk variabel som utparameter. Utparametern skall ha värdet sant om A är en magisk kvadrat och värdet falskt annars. Tips: I Matlab finns en funktion magic som kan användas för att skapa magiska kvadrater av godtycklig dimension. Dessa kan användas för att testa din funktion. 4

Uppgift 2.8 (Svår) Maximumnormen för en matris A definieras som: n A = max a i,j, i=1,...,n dvs genom att man summerar beloppet av elementen i varje rad och därefter väljer den största rad summan. Skriv en funktion MaxNorm som beräknar maximumnormen för en godtycklig matris. Tips Du kan använda Matlabs inbyggda funktion norm(a,inf) för att kontrollera att din funktion fungerar som den skall. Du får dock inte använda Matlabs inbyggda funktion i ditt program. Uppgift 2.9 (Svår) Ett lokalt maximum för en vektor x definieras som ett element x(i) för vilket villkoret, x(i-1) x(i) x(i+1), är uppfyllt. För det första och sista elementet i vektorn skall vara ett lokalt maximum gäller ett liknande villkor. Skriv en funktion loc_max med en vektor x som inparameter, och som returnerar en vektor ind innehållande samtliga index i sådana att x(i) är lokala maxima. Exempelvis skall du kunna skriva >>x=[3 4 5 4 3 2 1 7 3]; >>[ind]=loc_max(x); j=1 och ind skall ges värdet ind=[3 8] eftersom lokala maxima finns på platserna 3 och 8 i x. 5

TAIU07 Matematiska beräkningar med Matlab Facit till Datorlektion 3. 1 Repetionssatsen while Uppgift 1.1 n=1; while (3^n <= 5000 ) n=n+1; disp( villkoret uppfyllt for n= ) n Uppgift 1.2 Följande program bestämmer gränsvärdet: a=3; k=-1; Xk=1; Xkp1=0 % Garanterar att avbrottsvillkoret är sant första gången. while ( abs(xk-xkp1) >= 1e-6 ) Xk=Xkp1; k=k+1; Xkp1=(Xk^3+1)/3/a; ; disp( Polynomets varde: ) p=xkp1^3-3*a*xkp1+1 % Övriga uttskrifter på samma sätt. Resultatet blir att x 3 =0.111264... och p(x 3 )=2.332 10 8. Uppgift 1.3 Vi simulerar spelomgången med SistaKast=-1; % Bara så att inte while-satsen avbryts direkt AntalKast=0; while SistaKast ~= 6 AntalKast=AntalKast+1; SistaKast=randi([1 6],1); disp([ Tärning,num2str(AntalKast), :,num2str(sistakast)]); disp([ Vi fick en sexa efter,num2str(antalkast), tärningskast. ]); Uppgift 1.4 Summan beräknas med programmet: 6

S=0;k=0;term=1; while ( abs(term)>1e-8 ) k=k+1; term=sin(k)/k^2; S=S+term; disp( Summan blir: ), S Summans värde blir S=1.01396... Uppgift 1.5 Programmet blir x(1)=1;x(2)=2;k=2; while x(k)<10^4 k=k+1; x(k)=5*x(k-1)-4*x(k-2); ; disp([ k=,num2str(k), ger xk=,num2str(x(k)), vilket är större än 1000 ]) Ger talet 21846 för k = 9. Uppgift 1.6 Programmet blir F(1)=1;F(2)=1;k=2; while F(k)<1000 k=k+1; F(k)=F(k-1)+F(k-2); ; disp(f(k-1)) Ger talet 987. Uppgift 1.7 Det färdiga programmet blir N=100; AntalKast=zeros(N,1); for i=1:n % Simulera en omgång k=1; D6 = randi([1,6],1); while D6 ~= 6 % Ej fått sexa. Kasta en gång till k=k+1; D6 = randi([1,6],1); ; AntalKast(i)=k; ; M = mean(antalkast) 7

Ger medelvärdet M = 5.52 (eller däromkring). 2 Egna Funktioner Uppgift 2.1 På filen funk.m skriver vi function [f]=funk(x) if x <= 0 f=0; elseif x <= pi/2 f=sin(x); else f=1; Då funktionen inte klara vektorargument måste vi beräkna f(x) med en for-loop. >> x = -1:0.05:2; f=zeros(size(x)); >> for i=1:length(x), f(i)=funk(x(i));, >> plot( x, f ) Uppgift 2.2 På filen ScalarProd.m skriver vi function [S]=ScalarProd( x, y ) S=0; for i=1:length(x) S=S+x(i)*y(i); I Matlab terminalen kan vi sedan skriva >> ScalarProd( [-1 4-2 ], [3-2 1] ) ans = -13 Uppgift 2.3 På filen VektorLangd.m skriver vi function [E]=VektorLangd( x ) E=0; for i=1:length(x) E=E+x(i)^2; E=sqrt(E); Uppgift 2.4 På filen Polynom.m skriver vi 8

function [P]=Polynom( c, x ); P=zeros(size(x)); for k=1:length(c) P=P+c(k)*x.^(k-1); Uppgift 2.5 På filen Fibonacci.m skriver vi function [F]=Fibonacci(N) F=zeros(1,N); F(1)=1; if N>1,F(2)=1;, for i=3:length(f) F(i)=F(i-1)+F(i-2); Programmet blir sedan % Specialfallet N=1 skall bara ett tal N=1;S=1; % S är summan av Fibonacci följden av längd N while S<10^4 N=N+1; F=Fibonacci(N); S=sum(F); disp( N ),disp( S ) vilket ger N = 19 och summan S = 10945. Uppgift 2.6 På filen kvadratrot.m skriver vi function [x1]=kvadratrot( a ) x0=0; x1=1; n=1; while abs(x0-x1)>10^-9 x0=x1; % Tidigare tal i följden n=n+1; x1=(x1+a/x1)/2; I teminalen skriver vi sedan >> kvadratrot( 3 ) ans = 1.7321 Uppgift 2.7 På filen Magisk.m skriver vi 9

function [Test]=Magisk( A ) [n,m]=size(a) Test=1; % Antag sant och motbevisa D1=0;D2=0; for i=1:n % Diagonalsummor först D1=D1+A(i,i); D2=D2+A(i,n-i+1); if D1 ~= D2 Test=0; % Motbevisat! else for i=1:n, % kolla en rad eller kolumn i taget R=0; C=0; for j=1:n R=R+A(i,j); C=C+A(j,i); ; if ( R ~= D1 ) ( C ~= D1 ) Test=0; break Uppgift 2.8 På filen MaxNorm.m skriver vi function [N]=MaxNorm( A ) [n,m]=size(a); N=0; % Hittils största radsumman for i=1:n S=0; % beräkna nästa radsumma for j=1:m S=S+abs(A(i,j)); if N<S, N=S; % uppdatera om hittat större radsumma Uppgift 2.9 På filen loc_max.m skriver vi function [ind]=loc_max(x) n=length(x); ind=[]; % Tom vektor initialt if x(1) >= x(2) % x(1) är lokalt max ind=[ind,1]; for i=2:n-1 if ( x(i-1) <= x(i) ) & ( x(i) >= x(i+1) ) 10

ind=[ind,i]; if x(n) >= x(n-1) ind=[ind,n]; 11