TANA17 Matematiska beräkningar med Matlab

Relevanta dokument
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

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. 4 december 2015 Sida 1 / 26

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

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

TANA81: Simuleringar med Matlab

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

Linjär algebra med tillämpningar, lab 1

Introduktion till MATLAB

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

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

Laboration: Grunderna i MATLAB

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

TAIU07 Matematiska beräkningar med Matlab

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

2 februari 2016 Sida 1 / 23

TSBB14 Laboration: Intro till Matlab 1D

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

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

MMA132: Laboration 1 Introduktion till MATLAB

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

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

KPP053, HT2015 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

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

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

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

TANA17 Matematiska beräkningar med Matlab

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

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Kort om programmering i Matlab

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

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

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

Laboration: Grunderna i Matlab

TAIU07 Matematiska beräkningar med Matlab

Lab 1, Funktioner, funktionsfiler och grafer.

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

TANA17 Matematiska beräkningar med Matlab

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

Matriser och vektorer i Matlab

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

4.3. Programmering i MATLAB

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

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

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Matematisk Modellering

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

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

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

TANA17 Matematiska beräkningar med Matlab

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

Instruktion för laboration 1

3 Man kan derivera i Matlab genom att approximera derivator med differenskvoter. Funktionen cosinus deriveras för x-värdena på följande sätt.

Beräkningsverktyg HT07

MMA132: Laboration 1 & 2 Introduktion till MATLAB

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

Läsning, skrivning, tangentbord, skärm. F6: Filhantering (kap. 8) Tabell på skärmen. save

Lab 2, Funktioner, funktionsfiler och grafer.

Matematisk Modellering

Instruktion för laboration 1

Datorövning 1 Fördelningar

Uppgifter till praktiska tentan, del A. (7 / 27)

Introduktion till Matlab

Inledning till matematik med Matlab kompendium för M1 och TD

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

Variabler och konstanter

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

Matriser och vektorer i Matlab

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

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

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

Introduktion till Matlab

Introduktion till Matlab

Programmering i Matlab

Matematiska uppgifter

Bisektionsalgoritmen. Kapitel Kvadratroten ur 2

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

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

Tentamen i Beräkningsvetenskap I (nya versionen), 5.0 hp, Del A

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

Konvergens för iterativa metoder

Matriser och linjära ekvationssystem

Lösningar till uppgifterna sätts ut på kurssidan och på WebCT (Gamla Tentor) i dag kl 19. Tentamen i Programmering C, 5p, Distans, övriga,

Matriser och Inbyggda funktioner i Matlab

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

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

Matriser och linjära ekvationssystem

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

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

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Matriser och Inbyggda funktioner i Matlab

Datorövning 1: Introduktion till MATLAB

Föreläsning 12: Datastrukturer & filer

Transkript:

TANA17 Matematiska beräkningar med Matlab Datorlektion 6. Text och filer 1 Textsträngar Uppgift 1.1 Skapa en sträng som innehåller texten: kommer du snart?. Använd length för att kontrollera hur många tecken strängen innehåller. Ändra sedan ordet du till ni genom att ändra dessa tecken i strängen. Använd funktionen disp för att skriva ut er sträng på skärmen och kontrollera att ni gjort rätt. Uppgift 1.2 Man kan använda kommandot input för att läsa in enkla strängar. Skriv ett program som frågar efter ett namn och sedan skriver ut ett meddelande enligt Jag tror också att <namn> vinner!. Uppgift 1.3 Skriv en funktion ReverseString med en sträng som inparameter och samma sträng fast med tecknen i omvänd ordning som utparameter. Du skall alltså kunna skriva >> ReverseString( Hej på dig! ) ans =!gid åp jeh Använd en repetitionssats som kopierar ett tecken i taget till en ny sträng. Uppgift 1.4 Skriv ett program som frågar efter ett reellt tal med input och sedan beräknar exponentialfunktionen. Följande utskrift skall ske: Ge ett reellt tal? -4.7 exp(-4.70)=9.095e-03 Försök få utskriften exakt lika som exemplet. Uppgift 1.5 Skapa två strängar str1= abcdef och str2= AbCd12. Vilket resultat fås om du skriver str1==str2? Vad blir resultatet om du istället skriver strcmp(str1,str2)? Uppgift 1.6 Skriv en funktion CountLetters med en sträng som inparameter som räknar hur många bokstäver en given sträng innehåller. Använd Matlab funktionen isletter. Funktionen skall ge utskriften Strangen innehaller <antal> bokstaver.

Uppgift 1.7 En vektor kan skrivas ut till skärmen med kommandot disp. Det blir inte särskilt snyggt om elementen i vektorn har väldigt olika storleksordning. Vi vill därför förbättra utskriften genom att skriva en funktion displayvector som skriver ut vektorn på följande sätt >> displayvector( x, [-2.845 0.323 12.3*10^-6 1002.4] ) x=( -2.85e+00, 3.23e-01, 1.23e-05, 1.00e+03 ) Vi vill alltså skriva varje element på exponentform med två decimaler. Uppgift 1.8 (Svår) En rot till ekvationen f(x) = xe x 1 = 0 kan hittas genom att beräkna gränsvärdet för talföljden, { x0 = 1, x n = e x n 1, n = 1,2,3... Skriv ett program som beräknar talföljdens gränsvärde. Du skall fortsätta att bilda nya tal x n ända tills avbrottskriteriet x n x n 1 < 10 4 är uppfyllt. Vi vill även studera konvergenshastigheten. Ditt program skall därför skriva en tabell innehållande iterationsnummer n,x n, samt skillnaden x n x n 1 till skärmen. Utskriften skall göras enligt följande mönster: n x(n) x(n)-x(n-1) --------------------------------------- 1 0.3678794-6.32e-01 2 0.6922006 3.24e-01 3 0.5004735-1.92e-01 2 Filhantering I Matlab finns kommandon för att spara det man arbetar med så att man kan fortsätta senare. De enklaste kommandona är save och load. Dessa kan används för att spara/återskapa data man arbetar med. Skriver man >> save sparade_data.mat sparas alla variabler man för närvarande har i minnet till filen sparade data.mat. Senare kan man skriva >> load sparade_data.mat för att få tillbaka det man arbetat med. För att se vilka variabler man förnärvarande har i arbetsminnet finns två kommandon who och whos. Det finns även ett kommando clear som rensar arbetsminnet på innehåll. Pröva att spara dina variabler i en fil, rensa arbetsminnet, och återskapa dina data! Kommandona load och save är främst användbara för att kunna spara pågåe arbete för att fortsätta senare. 2

Uppgift 2.1 Skriv clear för att rensa Matlabs minne. Skriv sedan who eller whos för att kontrollera att det verkligen är tomt. Skapa variablerna x=1 och y=2. Spara sedan ast x genom att skriva >> save x_variabeln.mat x Rensa sedan minnet med clear och ladda in x igen genom att skriva >> load x_variabeln.mat Kontrollera med who att det fungerade. Uppgift 2.2 En spelbricka kan beskrivas med en 5 5 matris vars element är slumpmässiga heltal mellan 0 och 99. Skriv ett program som skapar en slumpmässig bricka och skriver ut den till en textfil. Utskriften skall ske enligt följande mönster: * 12 * 0 * 25 * 89 * 76 * * 17 * 63 * 7 * 9 * 1 * * 85 * 18 * 82 * 3 * 11 * * 12 * 28 * 43 * 99 * 73 * * 93 * 16 * 57 * 91 * 38 * Försök att få utseet så likt exemplet som möjligt. Uppgift 2.3 Skriv ett program som skriver en tabell över exponentialfunktionens värden till en fil. Utskriften skall ske enligt följande mönster: ************************* * x * exp(x) * ************************* * 0.00 * 1.000000 * * 0.10 * 1.105171 * * 0.20 * 1.221403 * : : * 0.90 * 2.459603 * * 1.00 * 2.718282 * ************************* Försök att få din utskrift så lik tabellen ovan som möjligt. 3

Uppgift 2.4 Låt N och M vara två heltal. Skapa en N M matris A med slumptal. Skriv sedan ut matrisens element i en fil. Elementen skall skrivas ut radvis. Uppgift 2.5 (Svår) 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. a) 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. b) Använd din funktion ifrån uppgift (a) för att skapa en tabell över x, för x = 1,2,3,...,100. Din tabell skall skrivas till en textfil. Du skall börja med att skriva ett tabellhuvud enligt följande mönster x sqrt(x) ------------------------------------ en typisk rad i tabellen skall sedan se ut på följande sätt 59 7.68114575 Om du inte har löst (a) får du använda Matlabs inbyggda funktion sqrt då du löser (b). 4

TANA17 Matematiska beräkningar med Matlab Facit till Datorlektion 6. 1 Textsträngar Uppgift 1.1 Använd följande MATLAB kommandon: >>str = kommer du snart? ; >>str(8:9)= ni ; >>disp(str) length(str) ger svaret 16. Uppgift 1.2 Din scriptfil kan exempelvis innehålla kommandona: namn=input( Vem tror du vinner?, s ); str=[ Jag tror också att, namn, vinner! ]; disp(str); Uppgift 1.3 På filen ReverseString.m skriver vi function [OutString]=ReverseRtring( InString ) n=length(instring); OutString=blanks(n); % Tom sträng for i=1:n OutString(i)=InString(n-i+1); Vi kan sedan använda funktionen genom att skriva >> ReverseString( Hej ) ans = jeh Uppgift 1.4 Vi skriver på filen TestUppgift.m x=input( Ge ett reellt tal? ); fprintf(1, exp(%5.2f)=7.3e\n,x,exp(x) ) Uppgift 1.5 Eftersom bara andra och fjärde tecknet i de bägge strängarna är lika kommer resultatet då vi skriver str1 == str2 att bli en radvektor (0 1 0 1 0 0). Kommandot strcmp(str1,str2) ger resultatet 0 (falskt) eftersom de båga strängarna är olika. 5

Uppgift 1.6 På filen CountLetters.m skriver vi function [Antal]=CountLetters( str ) n=length(str); Antal=0; for i=1:n if isletter( str(i) ) Antal=Antal+1; fprintf(1, Strängen innehåller %i bokstäver\n,antal) Vi kan sedan använda funktionen genom att skriva >> CountLetters( abc 123 de ) Strängen innehåller 5 bokstäver ans = 5 Uppgift 1.7 På filen displayvector.m skriver vi function displayvector( name, vector ) n=length(vector); % skriv först ut början: <name>=( fprintf(1, %s=(,name); % skriv nu ut ett elemnt i taget med, och mellanslag. for i=1:n-1 fprintf(1, %7.2e,,vector(i)); % skriv nu ut sista elementet utan, efter. fprintf(1, %7.2e )\n,vector(n) ); 6

Uppgift 1.8 På filen hittarot.m skriver vi % Inför variabler x0 och x1 som representerar två på varandra % följande approximationer x0=-1;x1=1;n=0; % Med x0=-1 blir abvrottsvikkloret falskt tol=10^-4; fprintf(1, n x(n) x(n)-x(n-1)\n ); fprintf(1, -----------------------------------\n ); while abs(x0-x1)>tol % beränka nästa approximation x0=x1; x1=exp(-x0); n=n+1; % Skriv ut en rad i tabellen fprintf(1, %i %9.7f %9.2e\n,n,x1,x1-x0); 2 Filhantering Uppgift 2.1 Skriv i terminalen >> clear >> whos >> x=1;y=2; >> save x_variabeln.mat x >> clear >> whos % Nu är minnet tomt! >> load x_variabeln >> who % Nu finns x igen. Your variables are: x Uppgift 2.2 På filen SpelBricka.m skriver vi function SpelBricka( filnamn ) N=5; fid=fopen( filnamn, w ); for i=1:n % Skriv ut en rad. Först **** och sedan siffrorna. fprintf(fid, \n ) for j=1:n % skriv ut en *, mellanslag och sedan siffran S=randi([0 99],1,1); 7

fprintf(fid, * %2i,S); fprintf(fid, *\n ) % sista * på raden fprintf(fid, \n ) fclose(fid) Anropar vi med SpelBricka( test.txt ) kan vi titta på filen genom att skriva type test.txt. Uppgift 2.3 Följande program skapar tabellen: x=(0:0.1:1); fid=fopen( tabell.txt, w ); fprintf(fid, *************************\n ); fprintf(fid, * x * exp(x) *\n ); fprintf(fid, *************************\n ); for k=1:length(x) fprintf(fid, * %4.2f * %8.6f *\n,x(k),exp(x(k))); ; fprintf(fid, *************************\n ); fclose(fid); Uppgift 2.4 Använd exempelvis följande MATLAB rader: N=20;M=7; A=rand(N,M); fid=fopen( matris.txt, w ); for i=1:n for j=1:m fprintf(fid, %f,a(i,j)); fprintf(fid, \n ); fclose(fid); 8

Uppgift 2.5 På filen kvadratrot.m skriver vi function [x1]=kvadratrot( a ) % Inför variabler x0 och x1 som representerar två på varandra % följande tal i följden x0=1;x1=(x0+a/x0)/2; tol=10^-9; while abs(x0-x1)>tol x0=x1; x1=(x0+a/x0)/2; Vi använder sedan funktionen för att skapa tabellen med följande program file= resultat.txt ; fid=fopen( file, w ); % Tabell huvud fprintf( fid, x sqrt(x)\n ); fprintf( fid, ------------------------------\n ); for i=1:100 % skriv en rad i tabellen r=kvadratrot( i ); fprintf( fid, %3i fclose(fid) %10.8f\n,i,r) 9