Matlabövningar för kursen FAFA10 - Kvantfenomen och Nanoteknologi

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

Kvantbrunnar -Kvantiserade energier och tillstånd

Introduktion till MATLAB

Kvantbrunnar Kvantiserade energier och tillstånd

Beräkningsverktyg HT07

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

TAIU07 Matematiska beräkningar med Matlab

Mer om funktioner och grafik i Matlab

Matriser och vektorer i 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. 2 november 2015 Sida 1 / 23

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

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

Funktioner och grafritning i Matlab

MAM283 Introduktion till Matlab

15 februari 2016 Sida 1 / 32

Mer om funktioner och grafik i Matlab

Matlabövning 1 Funktioner och grafer i Matlab

TANA17 Matematiska beräkningar med Matlab

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

MMA132: Laboration 2 Matriser i MATLAB

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

Beräkningsvetenskap föreläsning 2

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

linjära ekvationssystem.

TANA17 Matematiska beräkningar med Matlab

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

Matlabövning 1 Funktioner och grafer i Matlab

TSBB14 Laboration: Intro till Matlab 1D

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

Matriser och linjära ekvationssystem

Matriser och Inbyggda funktioner i Matlab

Matriser och Inbyggda funktioner i Matlab

Matriser och vektorer i Matlab

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

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

At=A' % ' transponerar en matris, dvs. kastar om rader och kolonner U' % Radvektorn U ger en kolonnvektor

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

Laboration: Grunderna i MATLAB

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

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

TAIU07 Matematiska beräkningar med Matlab

Linjära ekvationssystem i Matlab

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

LAB 3. INTERPOLATION. 1 Inledning. 2 Interpolation med polynom. 3 Splineinterpolation. 1.1 Innehåll. 3.1 Problembeskrivning

FMNF15 HT18: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

Numerisk lösning till den tidsberoende Schrödingerekvationen.

Rapportexempel, Datorer och datoranvändning

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

Matematisk Modellering

TANA17 Matematiska beräkningar med Matlab

Linjära ekvationssystem

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

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

Datorövning 1 Fördelningar

TANA17 Matematiska beräkningar med Matlab

Matriser och linjära ekvationssystem

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

Grafik och Egna funktioner i Matlab

MMA132: Laboration 1 & 2 Introduktion till MATLAB

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

Linjär algebra. 1 Inledning. 2 Matriser. Analys och Linjär Algebra, del B, K1/Kf1/Bt1. CTH/GU STUDIO 1 TMV036b /2013 Matematiska vetenskaper

TANA17 Matematiska beräkningar med Matlab

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 2

Mer om linjära ekvationssystem

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

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

MMA132: Laboration 1 Introduktion till MATLAB

TAIU07 Matematiska beräkningar med Matlab

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

4 Numerisk integration och av differentialekvationer

Hjälpmedel: Det för kursen ociella formelbladet samt TeFyMa. 0 x < 0

Laborationstillfälle 1 Lite mer om Matlab och matematik

Laboration 1. Grafisk teknik (TNM059) Introduktion till Matlab. R. Lenz och S. Gooran (VT2007)

Gemensamt projekt: Matematik, Beräkningsvetenskap, Elektromagnetism. Inledning. Fysikalisk bakgrund

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 20

Laboration 1: Linjär algebra

Linjärisering och Newtons metod

Kort om programmering i Python

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

4.4. Mera om grafiken i MATLAB

Laboration: Grunderna i Matlab

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

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

Introduktion till Matlab

TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson. Introduktion till MATLAB

Laboration 3. Funktioner, vektorer, integraler och felskattning

Laboration 3. Funktioner, vektorer, integraler och felskattning

Newtons metod och arsenik på lekplatser

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

Grafritning och Matriser

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

Laboration 6. Ordinära differentialekvationer och glesa system

Facit Tentamen i Beräkningsvetenskap I (1TD393) STS ES W K1

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

1.1 MATLABs kommandon för matriser

TAIU07 Matematiska beräkningar med Matlab

Transkript:

Matlabövningar för kursen FAFA10 - Kvantfenomen och Nanoteknologi 8 september 2014 Sammanfattning Detta dokument innehåller övningar lämpade för Matlabintroduktionen i kursen FAFA10 på Lunds Tekniska Högskola. Inkluderat finns de två obligatoriska uppgifterna. I slutet finns lösningsförslag till de grudläggande uppgifterna. GODKÄND FÖR MATLAB-INTRO För att bli godkända på det här momentet (matlabintroduktion) i kursen ska ni redovisa Redovisningsuppgift 2.1 och 2.2 samt några enklare experiment och vara beredda på att visa upp uppgifterna 1.1 1.11. Samtliga uppgifter är alltså obligatoriska. Redovisning sker individuellt hos era grupphandledare och beräknas ta ca 10 min. Detta görs lämpligen i samband med en datorövning. Deadline för redovisning är den fredag 28 November. 1

1 Grundläggande Matlab 1.1 Odefinierade tal och oändlighet Denna övning är väldigt bra att studera inför framtida felsökning av kod i matlab. Beräkna i matlab och tolka resultatet av a) 1/0 b) 1/ c) 0/0 d) / e)»inf+3 f)»inf+inf g)»inf-inf h)»inf*10 i)»inf*inf j)»inf*0 (Tips: se help Inf och help NAN) 1.2 Komplexa värden Tilldela x = e 10+5i. a) Skriv ut realdelen av x. b) Skriv ut imaginärdelen av x c) Beräkna absolutbeloppet av x 1.3 (Komplexkonjugerad) transponat Skapa radvektorn x = [2 + i, 4 + i, 6 + i, 8 + i,..., 100 + i]. a) Transponera x till en kolonnvektor. b) Transponera och komplexkonjugera x tillbaka till en radvektor. 1.4 Matriskonstruktion a) Skapa 100x100 matrisen A = 2 3 2 3 2... 1 5 1 5 1... 2 3 2 3 2... 1 5 1 5 1... 2 3 2 3 2...... där mönstret som visas upprepas över hela matrisen. b) Ändra andra raden och andra kolumnen i A till 2

A = 2 3.5 2 3 2... 3.5 3.5 3.5 3.5 3.5... 2 3.5 2 3 2... 1 3.5 1 5 1... 2 3.5 2 3 2...... b) Ändra 6 element i A för att erhålla 2 i i 3 2... 3.5 i i 3.5 3.5... A = 2 i i 3 2... 1 3.5 1 5 1... 2 3.5 2 3 2...... 1.5 Inbyggda matrisfunktioner a) Skapa matrisen 1 2 3 3 3 2 1 2 3 3 A = 3 2 1 2 3 3 3 2 1 2 3 3 3 2 1 med inbyggda matris-funktioner i matlab. (Tips: se help ones, help eye, och help diag). 1.6 Grundläggande plottning Skapa vektorn x = [0, 0.1, 0.2,..., 4]. a) Plotta sin(x) med blå, heldragen, linje. b) Plotta i samma figur som i a) x 3 cos(x) 2 med röd, streckad, linje. c) Ändra axlarna så att området x [0, π], y [ 1.5, 1.5] visas. (Tips: se help xlim, help ylim, help axis) d) Plotta sin(x) i en figur, och cos(x) i en annan figur, där figurerna är staplade på varandra i samma fönster. (Tips: se help subplot) 1.7 Kurvanpassning till brusig signal Skapa i matlab en brusig signal y(x) genom»x=[1:100];»y=x+50*(1-rand(1,100)); 3

a) Plotta y(x). b) Gör minsta kvadratanpassningar till första, andra och tredje gradens polynom till y(x). (Tips: se help polyfit och help polyval) c) Plotta dessa tre anpassningar, i olika färger, i samma figur som i a). 1.8 Mer plottning - logiska jämförelser Skapa»x=(0.5-rand(1,1000))»y=(0.5-rand(1,1000)) där [x(i), y(i)] anger koordinaten för en punkt. Plotta alla punkter innanför radien 0.25 med röda kryss och alla andra punkter med blåa kvadrater. 1.9 Numerisk integration a) Vi vill lösa 1 0 sin(x)dx numeriskt. Skapa en vektor x = [x 1, x 2,..., x N ] i intervallet [0, 1]. Beräkna integralen numeriskt genom att använda 1 0 sin(x)dx N 1 i sin(x i )(x i+1 x i ), först med en for-slinga och sedan med vektorfunktionen sum. b) Använd trapz för att numeriskt lösa integralen i a). Plotta resultatet av numeriska integrationen som funktion av N, antalet x-punkter som används, för N = [10, 20, 40, 80,..., 655360]. (Tips: använd x=linspace(0,1,n) och en for-slinga för n.) c) Jämför resultatet för det största N i b) med det analytiska resultatet. (Tips: använd format long för att se fler decimaler.) d) Beräkna integralen i a) numeriskt med quad. Ändra argumentet tol för quad och jämför med det analytiska resultatet. 1.10 Lösning av ekvationssystem Lös ekvationssystemet 3x 1 + 4x 2 + x 3 = 3 x 1 + 3x 2 7x 3 = 6 4x 1 x 2 + 2x 3 = 5 i matlab genom att använda matriser och vektorer. (1) 1.11 Funktioner Skapa en funktion primtal som ger alla primtal mellan n och m. Den ska anropas som»p=primtal(m,n) där p är en vektor som innehåller framräknade primtalen. 4

2 Redovisningsuppgifter Här följer två lite längre uppgifter som ska redovisas för att ni ska bli godkända på den här delen av kursen. Den första uppgiften, lösning av ändlig brunn, kommer att vara mycket användbar i de två laborationerna ni gör i den här kursen, dvs skriv ett bra program och spara det. När ni löst de båda uppgifterna ska ni göra några mindre experiment med koden, för att lära er lite enklare saker om kvantmekaniken. Notering om effektiv massa Elektronmassan, m e = 9.1 10 31 kg, gäller för fria elektroner som susar runt opåverkade i vakuum. När elektroner befinner sig i ett material, ex. en halvledarkristall, så påverkas de av dem kringliggande atomerna. För att slippa ta hänsyn till detta buckliga potentiallandskap använder man sig av en effektiv elektronmassa, m e, som i allmänhet är lägre än för fria elektroner och varierar från material till material (för GaAs är m e = 0.067m e ). Genom att använda sig av denna förenkling kan man bortse från detaljerna i atomstrukturen och enkelt fortsätta med sina kvantmekaniska beräkningar. 2.1 Redovisningsuppgift - ändlig brunn Skriv ett program som hjälper till att beräkna energinivåerna i en ändlig kvantbrunn., se sid. 74-75 i kursboken. Detta görs genom att plotta de funktioner som härleds i kursboken och sedan låta användaren själv läsa av skärningspunkter. Krav på programmet Ska vara skrivet som en funktion Indata Brunnens djup, angivet i ev. Brunnens bredd, angiven i nm. Partikelns massa, angiven i fria elektronmassor (dvs, en fri elektron har massan 1). Ingen utdata Programmet ska sedan plotta lämpliga funktioner (se härledning i kursbok) på ett lämpligt energi-intervall. Glöm inte att det finns både jämna och udda lösningar För att bestämma energinivåer kan användaren läsa av skärningspunkt manuellt. 2.2 Redovisningsuppgift rita vågfunktioner I denna uppgift ska ni skriva två funktioner som ritar upp vågfunktioner för ett kvanttillstånd i en ändlig resp en en oändlig brunn i två olika fönster. För den oändliga brunnen matar man in brunnsbredd (nm), kvanttal och partikelns massa (m e ). För den ändliga brunnen matar man in kvanttal, energi (ev), partkelns massa (m e ), brunnsbredd (nm) och brunnsdjup (ev). Kvanttalet behövs för attavgöra om det rör sig om en jömn eller udda funktion. Energin beräknas lämpligen med programmet som skrevs i redovisningsuppgift 1. 5

KRAV PÅ DE BÅDA PROGRAMMEN Inparametrar ändlig brunn Brunnsbredd, i nm Brunnsdjup, i ev Elektronenergi, för den ändliga brunnen (beräknad med program i föregående uppgift) Partkelns massa, angiven i fria elektronmassor (dvs. 1 för fri elektron) kvanttal Utdata ändlig brunn: ingen Inparametrar, oändlig brunn Brunnsbredd, i nm Kvanttal för den intressanta energinivån, oändlig brunn Partkelns massa, angiven i fria elektronmassor (dvs. 1 för fri elektron) Utdata, oändlig brunn: Energinivån för det givna kvanttalet Varje program ska generera en figur med: Skisser av brunnen (bredd och djup(ändlig)) Streck för energinivån inne i brunnen Själva vågfunktionen för partikeln Se exempelvis fig 4.5 (s70) och fig 4.10 (s 76) i kursboken EXPERIMENT Med hjälp av de två programmen ni nu skrivit ska ni göra några enklare experiment genom att variera inparametrarna. Resultaten ska också redovisas. Beräkna energinivåer för olika brunnsbredd (fixt V 0 ), skriv upp energinivåerna för de ändliga och oändliga brunnarna. Plotta energi mot brunnsbredd Hur ser det ut? Jämför den ändliga och den oändliga brunnen (samma bredd) Vilken har högst energi? Försök förklara genom att titta på de utritade vågfunktionerna (ledtråd: hur långa är vågorna?) Hur kan man göra så att den ändliga brunnens energi blir mer lik den oändliga? Vad händer för energin hos den ändliga brunnen när man gör den djupare? För en fix bredd och ökande V 0, beräkna hur högt ovanför botten av brunnen det första tillståndet befinner sig. Plotta denna energi som funktion av V 0. Vad händer för höga värden på V 0? 6

Lösningsförslag grundläggande Matlab 1.1 Lösningsförslag - Odefinierade tal och oändlighet a) Om oklart, fråga handledare. b) Om oklart, fråga handledare c) 0/0 är inte matematiskt väldefinierat, och ger förväntade NAN. d) Samma som i c). e) + α med α ett ändligt tal, är väldefinierat till. f) + = g) är inte väldefinierat. h) α är väldefinierat till för positiva, ändliga, α. i) ger som förväntat. j) 0 är inte väldefinierat och ger således NAN i matlab. 1.2 Lösningsförslag - Komplexa värden»i=sqrt(-1) % definierar i som imaginära enheten. Automatiskt definierat så i matlab, men man kan ju ha använt i till något annat själv tidigare.»x=exp(10+5*i) a)»real(x) b)»imag(x) c) Några varianter:»abs(x)»sqrt(x*x )»sqrt(real(x)ˆ2+imag(x)ˆ2) 1.3 Lösningsförslag - (Komplexkonjugerad) transponat»i=sqrt(-1) % ifall man ändrat i själv tidigare»x=[2:2:100]+i; % skapar x som radvektor a)»x=x. eller»x=transpose(x) eller med for-loop (rekommenderas EJ, mycket söligare än alternativen ovan som arbetar med hela vektorn på en gång. Visas här bara i demonstrationssyfte.)»for k=1:length(x), xtemp(k,1)=x(k); end, x=xtemp; clear xtemp k b)»x=x eller»x=ctranspose(x) eller med for-loop (rekommenderas EJ, mycket söligare än alternativen ovan som arbetar med hela vektorn på en gång. Visas här bara i demonstrationssyfte.)»for k=1:length(x), xtemp(1,k)=conj(x(k)); end, x=xtemp; clear xtemp k 7

1.4 Lösningsförslag - Matriskonstruktion a)»a=zeros(100,100)»a(1:2:end,1:2:end)=2); A(2:2:end,1:2:end)=1; A(1:2:end,2:2:end)=3; A(2:2:end,2:2:end)=5; b)»a(:,2)=3.5; A(2,:)=3.5; c)»i=sqrt(-1);»a(1:3,2:3)=i; 1.5 Lösningsförslag - Inbyggda matrisfunktioner Här finns det många olika sätt att göra. Ett sätt att skapa matrisen med en rad av kod är till exempel A=3*ones(5,5)+diag((sqrt(2)-3)*ones(4,1),1)+diag((sqrt(2)-3)*ones(4,1),-1)-2*eye(5,5) 1.6 Lösningsförslag - Grundläggande plottning Till exempel x=[0:0.01:4] eller»x=linspace(0,4,401) a)»plot(x,sin(x), b ) b)»hold on %för att plotta i samma figur»plot(x,x.ˆ3.*cos(x).ˆ2, r ) % elementvis * kräver punkt c)»xlim([0, 3]), ylim([-1.5, 1.5]) eller»axis([0, 3, -1.5, 1.5]) d)»close all % för att stänga fönstret från a)-c)»subplot(211)»plot(x,sin(x))»subplot(212)»plot(x,cos(x)) 1.7 Lösningsförslag - Kurvanpassning till brusig signal a)»plot(x,y) b) Från hjälpfunktionen:»pn=polyfit(x,y,n) skapar minsta kvadratanpassning 8

av en n:te gradens polynom till y(x). Polynomkoefficienterna sparas i pn. Så vi kör»p1=polyfit(x,y,1)»p2=polyfit(x,y,2)»p3=polyfit(x,y,3) c) Antag att vi skapat p1,p2 och p3 i b). Då ger»y1=polyval(p1,x)»y2=polyval(p2,x)»y3=polyval(p3,x) y-värden för anpassningarna, så till exempel»hold on»plot(x,y1, c )»plot(x,y2, r )»plot(x,y3, g ) 1.8 Lösningsförslag - Mer plottning - logiska jämförelser Vi skapar en vektor som innehåller radien för varje punkt (märk användningen av punkt i operationerna för att göra dem elementvist):»r=sqrt(x.ˆ2+y.ˆ2); Nu kan vi använda logiska jämförelser vid plottning:»plot(x(r<0.25),y(r<0.25), rx )»plot(x(r>=0.25),y(r>=0.25), bs ) alternativt för sista raden kan vi använda oss av logisk negation:»plot(x( (r<0.25)),y( (r<0.25)), bs ) 1.9 Lösningsförslag - Numerisk integration a)»x=linspace(0,1,100) Med for-slinga:»i=0; for k=1:length(x)-1, I=I+sin(x(k))*(x(k+1)-x(k)); end Med sum (mycket snabbare än for-slingan ovan):»i=sum(sin(x(1:end-1)).*(x(2:end)-x(1:end-1))) b)»n=1:16; for k=n, x=linspace(0,1,10*2ˆk); I(k)=trapz(x,sin(x)); end»plot(n,i) c) Det analytiska resultatet för integralen är 1 cos(1). Skriv [vi antar att I innehåller resultatet från b)]:»format long % för att visa fler decimaler»i(end)»1-cos(1) och jämför. d) 9

quad tar in pekare till funktioner som argument för integranden. Pekare till funktioner får man med @.»quad(@sin,0,1) ger integralens värde med standardtoleransen för quad (som är 1e-6). Prova till exempel»quad(@sin,0,1,1e-9) och»quad(@sin,0,1,1e-12) och jämför resultatet med»1-cos(1) 1.10 Lösningsförslag - Lösning av ekvationssystem Vi skriver ekvationssystemet i matrisformen Ax = b, som ger i matlab»a=[3 4 1; 1 3-7; 4-1 2]»b=[3; 6; 5] % b blir en kolonnvektor nu använder vi matrisoperatorn \för att dela med A från vänster (detta är numeriskt stabilare än att använda inv enligt»x=inv(a)*b)»x=a\b (Kontrollera att Ax ger b) 1.11 Lösningsförslag - Funktioner primes(n) finns redan i Matlab och ger samma svar som primtal(1,n) function p = primtal(m,n) %PRIMTAL räknar fram primtal mellan m och n m=ceil(m); %ifall m inte är heltal n=floor(n); %ifall n inte är heltal p=[]; for a=m:n p=[p a]; %lägger till a som primtal innan test for b=2:ceil(sqrt(a)) %behöver köra bara fram till roten ur a if ((rem(a,b)==0) & (a~=b)) %om sant, är a inget primtal p(end)=[]; %raderar a från listan break end end end 10