TANA17 Matematiska beräkningar med Matlab

Relevanta dokument
TAIU07 Matematiska beräkningar med Matlab

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

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

TANA17 Matematiska beräkningar med Matlab

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: 21:a April klockan

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

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

TAIU07 Matematiska beräkningar med Matlab

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

2 februari 2016 Sida 1 / 23

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: 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

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

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

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

TANA17 Matematiska beräkningar med Matlab

TAIU07 Matematiska beräkningar med Matlab

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

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

15 februari 2016 Sida 1 / 32

TAIU07 Matematiska beräkningar med Matlab

Laboration: Grunderna i MATLAB

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

TMV156/TMV155E Inledande matematik E, 2009

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

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

MMA132: Laboration 1 Introduktion till MATLAB

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

TMV225 Inledande Matematik M

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

MMA132: Laboration 2 Matriser i MATLAB

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

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

MMA132: Laboration 1 & 2 Introduktion till MATLAB

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

Matlabövning 1 Funktioner och grafer i Matlab

Labb 3: Ekvationslösning med Matlab (v2)

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

TAMS79: Föreläsning 10 Markovkedjor

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

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

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

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

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

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

TANA17 Matematiska beräkningar med Matlab

4.3. Programmering i MATLAB

Mer om funktioner och grafik i Matlab

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

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

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

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

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

Beräkningsverktyg HT07

Ö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.

TSBB14 Laboration: Intro till Matlab 1D

% Föreläsning 4 22/2. clear hold off. % Vi repeterar en liten del av förra föreläsningen:

Matlabövning 1 Funktioner och grafer i Matlab

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

Beräkningsvetenskap föreläsning 2

Instruktion för laboration 1

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

Mer om funktioner och grafik i Matlab

TANA17 Matematiska beräkningar med Matlab

Konvergens för iterativa metoder

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

Lösningsförslag Tentamen i Beräkningsvetenskap I, 5.0 hp,

TMA 671 Linjär Algebra och Numerisk Analys. x x2 2 1.

1. Bestäm definitionsmängden och värdemängden till funktionen f(x,y) = 1 2x 2 3y 2. Skissera definitionsmängden, nivålinjerna och grafen till f.

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

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

Introduktion till Matlab

SF1669 Matematisk och numerisk analys II Lösningsförslag till tentamen DEL A

Newtons metod. 1 Inledning. 2 Newtons metod. CTH/GU LABORATION 6 MVE /2013 Matematiska vetenskaper

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

Matlabföreläsningen. Lite mer och lite mindre!

Introduktion till Matlab

Kort om programmering i Matlab

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

TANA81: Simuleringar med Matlab

LINJÄR ALGEBRA II LEKTION 6

x +y +z = 2 2x +y = 3 y +2z = 1 x = 1 + t y = 1 2t z = t 3x 2 + 3y 2 y = 0 y = x2 y 2.

Isometrier och ortogonala matriser

Oändligtdimensionella vektorrum

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 20

Lab 1, Funktioner, funktionsfiler och grafer.

8. Euklidiska rum 94 8 EUKLIDISKA RUM

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

DEL I 15 poäng totalt inklusive bonus poäng.

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

2D1240 Numeriska metoder gk II för T2, VT Störningsanalys

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

Sanningar om programmering

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

Transkript:

TANA17 Matematiska beräkningar med Matlab Datorlektion 4. Funktioner 1 Egna Funktioner Uppgift 1.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 1.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 1.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 1.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. Uppgift 1.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 1.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 1.7 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 ett i. Skriv en funktion DiagonalDominant med en matris A som inparameter som retunerar sant (dvs 1) om A är diagonaldominant, och falskt (dvs 0) annars. 2

Uppgift 1.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 1.9 (Svår) En magisk kvadrat har egenskapen att alla rader, kolumner, och bägge diagonalerna har samma summa. Exempelvis är A= j=1 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. Uppgift 1.10 (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); och ind skall ges värdet ind=[3 8] eftersom lokala maxima finns på platserna 3 och 8 i x. 3

2 Enklare funktioner, Ekvationer och Integraler Enklare funktioner skapas direkt utan att man skriver en funktionsfil. Exempelvis ger >> f = @(x) x.*sin(x) en funktion f(x) = xsin(x). Notera att vi använder.* så att uttrycket fungerar för vektorer x. Vi använder funktionen genom att skriva exempelvis >> x=[1 2 4]; >> f(x) På liknande sätt kan vi skapa funktioner med flera inargument. Exempelvis >> g = @(x,y) cos(y)*sqrt(1+x) Uppgift 2.1 Skapa ett funktionshandtag som motsvarar funktionen f(x) = 3sin(x 2 ). Beräkna sedan f(2). Uppgift 2.2 Skapa ett funktionshandtag som motsvarar funktionen f(x) = 1+xcos(3x). Din funktion skall klara att x är en vektor. Använd funktionen för att plotta en graf över f(x) på intervallet [0, 2]. Uppgift 2.3 Funktionen f(x) = x e x har en rot x 0.6. Hitta en bra approximation av roten med fzero. Uppgift 2.4 Beräkna integralen I = 1 1 e 2x2 dx. Uppgift 2.5 (Svår) Låt α vara en konstant. Integralen I(α) = 1 1 e αx2 1+x 2, kan beräknas för varje konkret värde på konstanten α. Hitta det värde α som ger I(α) = 0.77. 4

TANA17 Matematiska beräkningar med Matlab Facit till Datorlektion 4. 1 Egna Funktioner Uppgift 1.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 1.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 1.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); 5

Uppgift 1.4 På filen Polynom.m skriver vi function [P]=Polynom( c, x ); P=zeros(size(x)); for k=1:length(c) P=P+c(k)*x.^(k-1); Uppgift 1.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 1.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 6

Uppgift 1.7 På filen DiagonalDominant.m skriver vi function [D]=DiagonalDominant( A ) [n,m]=size(a); EnStrikt=0; % Sann om bi hittat en strikt olikhet AllaSanna=1; % Sätt till falsk ifall vi hittar en ogiltig olikhet for i=1:n % beräkna summan över raden S=0; for j=1:m, S=S+abs(A(i,j));, if S>2*abs(A(i,i)), % diagonal elementet ingår i S AllaSanna=0; break if S<2*abs(A(i,i)) % hittat en strikt olikhet EnStrikt=1; if EnStrikt & AllaSanna % Alt D = EnStrikt & AllaSanna; D=1; else D=0; Uppgift 1.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 7

Uppgift 1.9 På filen Magisk.m skriver vi 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 1.10 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) ) ind=[ind,i]; if x(n) >= x(n-1) ind=[ind,n]; 8

2 Enklare funktioner, Ekvationer och Integraler Uppgift 2.1 I terminalen skriver vi >> f = @(x) 3*sin(x.^2) >> f(2) ans = -2.2704 Uppgift 2.2 I terminalen skriver vi >> f = @(x) sqrt(1+x).*cos(3*x); >> x=0:0.01:2; >> plot( x, f(x) ) Uppgift 2.3 I terminalen skriver vi >> f = @(x) x-exp(-x); >> x=fzero( f, 0.6 ) vilket ger en rot x = 0.5671. Uppgift 2.4 I terminalen skriver vi >> f = @(x) exp(-2 *x.^2 ) >> I=integral( f, -1, 1 ) vilket ger I = 1.1963. Uppgift 2.5 Enklast är att skriva en vanlig funktion först. På filen IntAlpha.m skriver vi function I=IntAlpha( alpha ) f=@(x) exp(-alpha*x.^2).*sqrt(1+x.^2); I=integral( f, -1,1); I terminalen kan vi sedan lösa ekvationen med >> g = @(alpha) IntAlpha(alpha)-0.77; >> fzero( g, 1 ) vilket ger I(α) = 0.77 för α = 5.7330. 9