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

Relevanta dokument
2 februari 2016 Sida 1 / 23

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

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

TANA17 Matematiska beräkningar med Matlab

15 februari 2016 Sida 1 / 32

TAIU07 Matematiska beräkningar med Matlab

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

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

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

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

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

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: 18:e augusti klockan

Introduktion till MATLAB

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

TAIU07 Matematiska beräkningar med Matlab

TAIU07 Matematiska beräkningar med Matlab

MMA132: Laboration 1 Introduktion till MATLAB

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

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. 27 oktober 2015 Sida 1 / 31

TANA17 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

Exempel att testa. Stora problem och m-filer. Grundläggande programmering 4. Informationsteknologi. Informationsteknologi.

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

Inlämningsuppgift 4 NUM131

MMA132: Laboration 1 & 2 Introduktion till MATLAB

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

MMA132: Laboration 2 Matriser i MATLAB

Miniprojektuppgift i TSRT04: Femtal i Yatzy

TANA81: Simuleringar med Matlab

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

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

TSBB14 Laboration: Intro till Matlab 1D

TANA17 Matematiska beräkningar med Matlab

Laboration 3. Funktioner, vektorer, integraler och felskattning

TANA17 Matematiska beräkningar med Matlab

Laboration: Grunderna i MATLAB

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

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

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

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

TAIU07 Matematiska beräkningar med Matlab

Datorövning 1 Fördelningar

Laboration 3. Funktioner, vektorer, integraler och felskattning

TAIU07 Matematiska beräkningar med Matlab

Introduktion till Matlab

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

Introduktion till Matlab

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

Linjärisering och Newtons metod

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

TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson. Introduktion till MATLAB

Demonstration av laboration 2, SF1901

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

Du kan söka hjälp efter innehåll eller efter namn

Linjär algebra med tillämpningar, lab 1

Matlabövning 1 Funktioner och grafer i Matlab

TMV225 Inledande Matematik M

Vetenskapsdagen 2016 SciLab för laborativa inslag i matematik eller fysik

Matlab övningsuppgifter

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

Mer om funktioner och grafik i Matlab

Uppgift 1 ( Betyg 3 uppgift )

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

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

Mer om funktioner och grafik i Matlab

Laboration 3: Stora talens lag, centrala gränsvärdessatsen och enkla punktskattningar

Lösningar till Matematisk analys

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

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

M0043M Integralkalkyl och Linjär Algebra, H14, Matlab, Föreläsning 1

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

Skapa egna funktioner

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

Funktioner forts. F3: Funktioner (kap. 5) Parametrar. findgear.m forts

TANA17 Matematiska beräkningar med Matlab

Matlabövning 1 Funktioner och grafer i Matlab

Matematisk Modellering

TMV156/TMV155E Inledande matematik E, 2009

Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while

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

Variabler och konstanter

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

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

Introduktion till Matlab

LAB 1. FELANALYS. 1 Inledning. 2 Flyttal. 1.1 Innehåll. 2.1 Avrundningsenheten, µ, och maskinepsilon, ε M

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

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

Matriser och Inbyggda funktioner i Matlab

En introduktion till MatLab

Introduktion till Matlab

SF1669 Matematisk och numerisk analys II Bedömningskriterier till tentamen Måndagen den 16 mars 2015

Transkript:

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

Föreläsning 5 Funktioner. Programstruktur. Rekursiva funktioner. Exempel: Skalärprodukt. Ekvationslösning. Funktionshandtag. Integraler och Ekvationer. Tillämpning: Vattenlinjen för en båt. 20 november 2015 Sida 2 / 30

Funktioner i MATLAB Definition En funktion har ett antal inagrument och beräknar ett antal utargument. Exempel Funktionen zeros har som inparameter två heltal N och M. Utparameter är en matris av dimension N M med nollor. >> Z = zeros( N, M ); 20 november 2015 Sida 3 / 30

I MATLAB skapas funktioner genom att man samlar kommandon på en fil, exemelvis min_funktion.m. Dessutom skall man skriva ett funktionshuvud. % % Inledande kommentar % function [ut1,ut2]=min_funktion( in1,in2,in3 ) <beräkna ut1,ut2 givet in1,in2,in3> En funktion kan ha godtyckligt antal in-, respektive ut-parametrar. Den inledande kommentaren skrivs ut om man skriver >> help min_funktion 20 november 2015 Sida 4 / 30

Exempel På filen funk.m har vi skrivt function [f]=funk(x,y) y=2*x+y; f=x^2+2*y; Vad händer om vi skriver följande kommandon >> x=1;y=2; >> x=funk( x, y ); >> disp(x),disp(y) 20 november 2015 Sida 5 / 30

Exempel På filen serie.m har vi skrivt function [S]=serie(N) S=0; for k=1:n,s=s+1/k^2;, Skriver vi följande kommandon >> S=serie( 100 ); >> disp(s) 1.6350 >> disp(k) Undefined function or variable k. Variabler är lokala. Skapas, eller ändras, en variabel i en funktion är det en lokal kopia som ändras. Då funktionen avslutas är det ast utparametrar som sparas. 20 november 2015 Sida 6 / 30

Exempel Skalärprodukten mellan två vektorer x och y kan beräknas med formeln n x y = x i y i. Skriv en funktion som beräknar skalärprodukten. Funktionen skall användas enligt i=1 >> S = ScalarProd( x, y ); 20 november 2015 Sida 7 / 30

På filen ScalarProd.m skriver vi: % ScalarProd: Beräkna skalärprodukt mellan två % vektorer x och y. Anropas enligt: % % >> S = ScalarProd( x, y ); % function [S]=ScalarProd( x, y ) n=length(x); S=0; for i=1:n S=S+x(i)*y(i); ; Kommentar Då x y = x T y kan vi skriva funktionen enklare. Det finns även en fördefinierad funktion dot(). 20 november 2015 Sida 8 / 30

Exempel Då man testar sorteringsmetoder vill man ofta ha en vektor som nästa är sorterad. Skriv en funktion som tar en sorterad vektor som inparameter och gör ett antal slumpmässiga platsbyten. Vi skriver en funktion Swap function [L]=Swap(L,i,j) tmp=l(i);l(i)=l(j);l(j)=tmp; och vill utnyttja den för att skriva en Scramble funktion som utför ett antal slumpmässiga byten. 20 november 2015 Sida 9 / 30

På filen Scramble.m skriver vi function L=Scramble( L,N ) n=length(l); for i=1:n i=randi( [1 N],1); j=randi( [1 N],1); L=Swap( L, i, j ); Vi kan använda funktionen genom att skriva >> L = (0:9); >> L = Scramble( L, 4 ) L = 0 8 2 3 1 5 6 7 9 4 20 november 2015 Sida 10 / 30

Exempel I ett spel försöker vi slå en tärning högst 10 gånger i följd. Målet är att få samma resultat två gånger i rad. Skriv ett Matlab funktion som simulerar en sådan spelomgång. För varje lyckad omgång skriver vi ut antalet kast som krävdes. Vi skall kunna anropa funktionen som >>[ AntalKast,Vinst]=SpelOmgang(); 20 november 2015 Sida 11 / 30

I filen SpelOmgang.m skriver vi function [AntalKast,Vinst]=SpelOmgang() TidigareKast=randi([1 6],1); Vinst=0; for k=2:10 NyttKast=randi([1 6],1); % Nästa tärning if NyttKast == TidigareKast; Vinst = 1; break TidigareKast=NyttKast; AntalKast=k; Nu kan vi använda funktionen för att simulera flera spel omgångar! 20 november 2015 Sida 12 / 30

Funktionen histogram används för att illustrera en fördelning på olika utfall. Om de möjliga utfallen består av heltal används histogram( x, BinMethod, integers ) för att skapa ett histogram som visar vektorn x. Exempel Vi vill använda vårt program för att studera hur tärningsspelet fungerar. Simulera N = 1000 omgångar och hitta andelen omgångar där vi lyckas. Rita dessutom upp ett histogram där vi tydligt ser fördelningen för antalet tärningskast i varje omgång. 20 november 2015 Sida 13 / 30

250 200 Antal spelomgångar 150 100 50 0 1 2 3 4 5 6 7 8 9 10 11 Antal tärningskast I Matlab får vi resultatet >> TarningSpel Vi vann totalt 821 av 1000 omgångar Kommentar Med funktioner kan man dela upp en större uppgift i mindre delar som blir lättare att lösa. 20 november 2015 Sida 14 / 30

Rekursiva funktioner En funktion som anropar sig själv kallas rekursiv. Vid varje funktionsanrop skapas nya lokala kopior av variabler. Exempel Fakulteten är definerad genom att n! = n (n 1)!, 0! = 1. Skriv en MATLAB funktion som beräknar n! för ett givet heltal n. 20 november 2015 Sida 15 / 30

Lösning På filen Fakultet.m skriver vi function [F]=Fakultet(N) if N==0, F=1; else F=N*Fakultet(N-1); ; Vad händer om vi skriver >> Fakultet( 4 ); 20 november 2015 Sida 16 / 30

Funktioner som inargument Kommandot feval kan användas för att anropa en funktion med givna inparametrar. Exempel Har vi skrivit en fil funk.m som innehåller function [z]=funk( x, y ) z=x^2+3*y; så kan vi anropa funktionen med inargument x = 2 och y = 2.5 genom att skriva >> feval( @funk, 2, 2.5 ) ans = 11.5000 20 november 2015 Sida 17 / 30

Lösning av Icke-Linjära Ekvationer Exempel Vi skall beräkna roten x till ekvationen, f(x) = cos(3x)e x. Metod Om vi beräknar funktionsvärden för x=0 och x=1 så ser vi att f(0)=1>0 och f(1)= 2.69<0. Alltså finns det en rot i intervallet 0<x<1. Beräkna sedan f(0.5)= 0.144>0 och vi ser att roten finns i intervallet <x<1. Detta kallas intervallhalveringsmetoden. 1 2 Avsluta när intervallet [a n, b n ] som innehåller roten uppfyller b n a n < ε = 10 6. Övning Skriv en funktion IntHalv som beräknar roten till f(x) = 0 med hjälp av intervallhalveringsmetoden. 20 november 2015 Sida 18 / 30

Frivilliga inargument Kommandot nargin ger det antal inargument som gavs då en funktion anropades. Exempel På filen funk.m skriver vi function [y]=funk( x, p ) if nargin<2, p=1; y=exp(x^p); I Matlab skriver vi sedan >> y = funk( 2 ); % p=1 används. Anropar vi med y=funk(2,1.5) används p = 1.5. 20 november 2015 Sida 19 / 30

Enkla funktioner Enkla funktioner kan skapas direkt i Matlab. Man skriver >> f = @( <variabler> ) <uttryck>; Man får då ett handtag till en funktion. Exempel Skriv >> f = @(x) exp(2*x).*cos(x.^2)+4*x f = @(x)exp(2*x).*cos(x.^2)+4*x Funktionen kan beräknas med feval eller direkt f(4). 20 november 2015 Sida 20 / 30

Exempel Skapa funktionerna f(x) = 1 x 2 e 2x, och g(x) = (x1 2 1, 1+x 2 ) T. Tänk på att g(x) måste ha en vektor som inagrument och returnera en vektor i R 2. Försök få f(x) att acceptera vektor argument så att det går att skriva >> x = 0:0.01:1; >> plot( x, f(x) ) 20 november 2015 Sida 21 / 30

Funktionen integral beräknar integraler. Den anropas >> I = integral( fun, a, b ) där f är ett funktionshandtag. Exempel Beräkna samma integral som tidigare genom >> f = @(x) exp(2*x).*cos(x.^2)+4*x; >> I = integral( f, 0, 1) I = 4.6736 Det finns även integral2 för dubbelintegraler. 20 november 2015 Sida 22 / 30

Exempel Lös ekvationen f(x) = e 2x x = 0. Börja med att skapa en funktion >> f = @(x) exp(-2*x)-x; använd sedan fzero för att hitta roten >> x = fzero( f, 1 ) x = 0.4263 Kommentar Funktionen fzero använder en avancerad numerisk metod. Det finns färdiga metoder för att lösa en stor mängd problem i MATLAB. 20 november 2015 Sida 23 / 30

Tillämpning: Hur stor del av en båt är under vatten? Problem En båt som lastas sjunker precis så mycket att båtens vikt blir precis motsvarar det vatten den tränger undan. 0.5 0-0.5-1 -1.5-2 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 Givet en viss vikt hur skall vi beräkna hur stor del av båten som hamnar under vatten? 20 november 2015 Sida 24 / 30

Problem beskrivning Inför relevanta storheter och beskriv lösningsmetoden. Båtens profil ges av en skiss y x (0, 0) (3, 0) c (a, c) (b, c) (0.6, 1.4) (2.1, 1.4) Båtens vikt inklusive last är L = 697 kg. Vattnets densitet är 998 kg/m 3. Funktioner ShipShape(x), DisplayShip(c) och DisplacedVolume(c). 20 november 2015 Sida 25 / 30

Funktionen ShipShape blir function F = ShipShape( x ) F=zeros(size(x)); for i=1:length(x) if x(i)<0.6 F(i)=1.4*x(i)/0.6; elseif x(i)<2.1 F(i)=1.4; else F(i)=1.4*cos( pi*(x(i)-2.1)/(3.0-2.1)/2 ); Kommentar Rät linje från(0, 0) till(0.6, 1.4) följt av en cosinus från(2.1, 1.4) till (3.0, 0). Funktionen måste klara en vektor x som inargument. 20 november 2015 Sida 26 / 30

Funktionen DisplayShip blir function DisplayShip( c ) x=0:0.01:3; F=ShipShape( x ); clf,hold on plot( x, -F, k- ) plot( [0 3],[0,0], k- ) plot( [-0.5 3.5],[-c -c], b ) axis([-0.5 3.5-1.6 0.2 ] ) axis equal Kommentar y-axeln är definierad så att y = 0 är överst på båten. Måste alltså byta tecken innan vi ritar! 20 november 2015 Sida 27 / 30

Funktionen DisplacedVolume blir function V=DisplacedVolume( c ) % Första roten bör ligga nära x=0.4; a=fzero( @(x)shipshape(x)-c,0.4); % Andra roten bör ligga närmare x=2.5; b=fzero(@(x)shipshape(x)-c,2.5); % Undanträngd volym är en ingetral över [a,b] V=integral( @(x)shipshape(x)-c, a, b ); Kommentar Hitta skärningspunkterna mellan skrovet och vattenytan. Integrera sedan för att hitta totala arean under ytan. 20 november 2015 Sida 28 / 30

Huvudprogrammet blir L=697; % Last i Kg rho=998; % Vattnets densitet i kg/m3 % Ekvation Volym( c )*rho - L = 0. Start gissning är c = fzero( @(c)displacedvolume( c )*rho-l, 0.9 ) DisplayShip( c ) weight=displacedvolume( c) * rho; str=[ Med last L=,num2str(L), kg fås c= ]; str=[str,num2str(c), m ];disp(str) Resultatet blir Med last L=697kg fås c=1.0253 m 20 november 2015 Sida 29 / 30

För Laborationer med lite större uppgifter Tänk igenom vad som skall göras. Inför beteckningar för obetanta och konstanter. Identifiera deluppgifter som kan lösas varför sig. Detta ger lämpliga funktioner att skriva. Normalt relativt lite tid då man faktiskt arbetar vid datorn. 20 november 2015 Sida 30 / 30