Funktionsteori Datorlaboration 2

Relevanta dokument
Funktionsteori Datorlaboration 2

Datorlaboration 2. 1 Serier (kan göras från mitten av läsvecka 4)

Instuderingsfrågor i Funktionsteori

Euler-Mac Laurins summationsformel och Bernoulliska polynom

Datorövning 2. - Tag med lärobok och övningshäfte till övningen. - Fyll före övningenen i svaren på frågorna på sidan 5 i denna handledning.

k=0 kzk? (0.2) 2. Bestäm alla holomorfa funktioner f(z) = f(x + iy) = u(x, y) + iv(x, y) sådana att u(x, y) = x 2 2xy y 2. 1 t, 0 t 1, f(t) =

f(x + h) f(x) h f(x) f(x h) h

Fourierserier: att bryta ner periodiska förlopp

Lösningar till tentamen i Transformmetoder okt 2007

Laboration 3. Funktioner, vektorer, integraler och felskattning

TANA17 Matematiska beräkningar med Matlab

Kontinuerliga system, Datorövning 1

Prov 1 2. Ellips 12 Numeriska och algebraiska metoder lösningar till övningsproven uppdaterad a) i) Nollställen för polynomet 2x 2 3x 1:

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

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

Laboration: Grunderna i MATLAB

SF1625 Envariabelanalys

Maclaurins och Taylors formler. Standardutvecklingar (fortsättning), entydighet, numerisk beräkning av vissa uttryck, beräkning

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

5B1147. Envariabelanalys. MATLAB Laboration. Laboration 1. Gränsvärden och Summor

Laboration 3. Funktioner, vektorer, integraler och felskattning

f (a) sin

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

Matriser och Inbyggda funktioner i Matlab

Laboration: Grunderna i Matlab

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

Introduktion till Matlab

Lösningsmetodik för FMAF01: Funktionsteori

Signalanalys med snabb Fouriertransform

Kontinuerliga system, Datorövning 1

Matriser och Inbyggda funktioner i Matlab

Introduktion till MATLAB

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

TAIU07 Matematiska beräkningar med Matlab

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

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

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

Om konvergens av serier

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

TAIU07 Matematiska beräkningar med Matlab

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

TANA17 Matematiska beräkningar med Matlab

Laboration i Fourieranalys, TMA132 Signalanalys med snabb Fouriertransform

MMA132: Laboration 1 Introduktion till MATLAB

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

5B1134 Matematik och modeller

MVE500, TKSAM Avgör om talserierna är konvergenta eller divergenta (fullständig motivering krävs). (6p) 2 n. n n (a) n 2.

TATA42: Föreläsning 5 Serier ( generaliserade summor )

Datorövning 1 Fördelningar

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

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

Newtons metod och arsenik på lekplatser

Matlabövning 1 Funktioner och grafer i Matlab

Demonstration av laboration 2, SF1901

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson Plot och rekursion

Kursens mål är, förutom faktakunskaper om kursinnehållet, att ge:

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

TATA42: Föreläsning 6 Potensserier

MMA132: Laboration 2 Matriser i MATLAB

TAIU07 Matematiska beräkningar med Matlab

Mer om funktioner och grafik i Matlab

Introduktion till Matlab

MATLAB övningar, del1 Inledande Matematik

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

gränsvärde existerar, vilket förefaller vara en naturlig definition (jämför med de generaliserade integralerna). I exemplet ovan ser vi att 3 = 3 n n

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

Flervariabelanalys och Matlab Kapitel 3

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

Attila Szabo Niclas Larson Gunilla Viklund Mikael Marklund Daniel Dufåker. GeoGebraexempel

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.

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

TMA226 datorlaboration

TANA17 Matematiska beräkningar med Matlab

vux GeoGebraexempel 3b/3c Attila Szabo Niclas Larson Gunilla Viklund Mikael Marklund Daniel Dufåker

Lösa ekvationer på olika sätt

Matlabövning 1 Funktioner och grafer i Matlab

Betygskriterier Matematik D MA p. Respektive programmål gäller över kurskriterierna

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

Datorövningar i funktionalanalys och harmonisk analys

Instruktion för laboration 1

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

Approximation av funktioner

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

Linjär algebra med tillämpningar, lab 1

5B1134 Matematik och modeller Lösningsförslag till tentamen den 13 januari T = 1 ab sin γ. b sin β = , 956 0, 695 0, 891

Datorövning 1: Fördelningar

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

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

TATA42: Föreläsning 10 Serier ( generaliserade summor )

Laboration 4: Integration på olika sätt

Mer om funktioner och grafik i Matlab

Beräkningsverktyg HT07

Flervariabelanlys och Matlab Kapitel 3

TSBB14 Laboration: Intro till Matlab 1D

I situationer där det inte råder någon oklarhet om vilken funktion f som avses, nöjer vi oss med att skriva c n istället för c n Hf L.

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

Laboration i Fourieranalys för F2, TM2, Kf2 2011/12 Signalanalys med snabb Fouriertransform (FFT)

Ordinära differentialekvationer (ODE) 1 1

Transkript:

Funktionsteori Datorlaboration 2 Funktionsteori vt1 2012 Fourierserier Inledning Största delen av denna laboration handlar om Fourierserier, men vi startar med seriesummation. Hela laborationen, utom uppgift 2.15 där Maple är att föredra, bygger på Matlab. Ha din Matlabmanual lättillgänglig. Vissa filer kan du behöva hämta på kursens hemsida. Förbered dig genom att titta igenom denna handledning och anvisningarna nedan. Komplettera motiveringen på sidan 2. Jämför sidan 122 i läroboken och lösningen av övning 7.22. Läs också igenom kapitlet om Fourierserier i läroboken, om du inte gjort det innan. Seriesummation Vi skall nu utföra numerisk summation av några serier. För att förstå bättre vad som händer skall du i alla exemplen beräkna delsummorna (med cumsum) och titta på dem, t ex med kommandot stairs. 2.1 Serien k 4 har summan π 4 /90. Beräkna seriens summa med tre riktiga (korrekta) k=1 decimaler. Tre riktiga decimaler betyder att vi tolererar ett fel vars absolutbelopp högst är lika med tol = 0.0005. Jämförelse med integral ger resttermsuppskattningen och r n tol om r n 1 3n 3, ( ) 1 1 1/3 tol n 3n3 3tol Bestäm hur många termer som behövs för att få seriens summa med 3 decimaler (använd Matlab för räkningen). Bilda nu detta antal av seriens termer och summera. Beräkna närmevärdet på π 4 /90. Detta kan göras genom att på en rad skriva så här: format long; tol = 5e-4; n = ceil(1/(3*tol)ˆ(1/3)), k = 1:n;a = 1./k.ˆ4; summa = sum(a) Kontrollera vad ceil gör för någonting. I detta fall kan vi jämföra med Matlabs inbyggda värde. fel = (piˆ4)/90 - summa Gör nu om alltsammans (format long behöver inte upprepas) med 6 och 9 decimalers noggrannhet. Använd tangenten pil uppåt för att återkalla raden med Matlabkommandon. Det går givetvis att tillverka en skriptfil som gör räkningarna. 1

Summa Antal termer Antal riktiga decimaler Fel enligt Matlab fel =π 4 /90 summa 3 6 9 Räkningarna i exemplet ovan kan användas för att ge ett numeriskt värde på π. Det relativa felet i värdet av π beräknat med denna metod kan relativt lätt visas 1 vara 1/4 av det relativa felet i seriesumman, så det är lämpligt att beräkna seriesumman med samma antal decimaler som man önskar i π. Vi tar nu en serie som med framgång kan jämföras med en geometrisk serie. 2.2 Målet nu är att beräkna e 6. För detta skall vi approximativt summera serien k=0 6 k k! på följande sätt. Vi har alltså rekursionsformeln a 0 = 1, a k+1 = 6 k + 1 a k för termerna. Om vi avbryter summan efter n termer, så har vi ett fel (restterm) som måste uppskattas. Motivera resttermsuppskattningen Motivering: r n 2a n+1 om n 10. 0 r n = a n+1 + a n+2 + a n+3 + a n+4 +... a n+2 2 1 a n+1 a n+3 2 1 a n+2 2 2 a n+1 a n+4...? Fortsätt och avsluta resonemanget Beräkna nu iterativt termer och delsummor tills resttermen blir så liten som önskat. Man kan göra så här: Gå till File, New, M-file Skriv in eller hämta (från kursens hemsida) filen 1 Fråga handledaren om du inte är övertygad. 2

function [s,antaltermer]=expsum(tol) %s anger närmevärdet av eˆ6 %tol = toleransen a = 1; s = 0; k = 0; while ((2*a> tol) (k<11)) s = s + a; a = a*6/(k+1); k=k+1; end; antaltermer=k; Spara filen under namnet expsum. Du har nu skapat Matlab-funktionen expsum. Genom att i Matlab skriva [s,antaltermer]=expsum(5e-4) så får du ett närmevärde till e 6 med tre riktiga decimaler. Jämför värdet med Matlabs exp(6) Kör om beräkningen igen för att få 6 decimalers noggrannhet och jämför än en gång med Matlabs exp(6). Avsluta med format så återgår Matlab till att visa normalt antal siffror. (I mån av tid) Ändra funktionen ovan så att den i stället beräknar e x, där x 0. 2.3 (I mån av tid) Beräkna cos x. Använd metoden att summera serien k=0 ( 1) k x2k (2k)! Använd att termerna är u k = ( 1) k x 2k /(2k)! och delsummorna s n uppfyller rekursionerna x 2 u k+1 = (2k + 2)(2k + 1) u k, s k+1 = s k + u k+1. Vilka är begynnelsevärdena? Jämför med Matlabs värde för cos x. Tillverka en Matlab-funktion, t ex cosinus, som beräknar cos x och slutar då felet garanterat är mindre än en given tolerans. Exempelvis kan funktionsfilen inledas med function[s,antaltermer]=cosinus(x,tol). (Om du efter fem minuter inte lyckats åstadkomma en fungerande funktion kan handledaren tipsa dig om var hjälp finns att hämta.) Använd funktionen för att beräkna cos 10, cos 20, cos 30 och cos 40. Jämför också med Matlabs värde. Se på termerna i serien (grafiskt) och försök förklara vad som sker. Förklaring: Tag bort procenttecknet på andra raden i den fil handledaren kan tillhandahålla. Beräkna ånyo cos 40. Bättre? Varför? Svar: 3

Fourierserier i Matlab Vi skall nu göra ett experimentellt studium av trigonometriska Fourierserier, dvs funktionsserier av formen 2 1 2 a 0 + a k cos(kt) + b k sin(kt), k=1 där a = a k och b = b k är reella talföljder. En term i en sådan serie kan också skrivas som u k (t) = a k cos(kt) + b k sin(kt) = A k cos(kt + δ k ) och är alltså en harmonisk svängning med vinkelfrekvens k och period 2π/k. Amplituden ges av formeln A k = a 2 k + b2 k. Vi skall alltså addera sinusformade funktioner med högre och högre frekvenser. 2.4 Förberedelser: Hämta m-filerna fourkoeff.m, visafunk.m, visaserie.m och visadelsummor.m från datorövningens hemsida (använd högerknappen i Firefox). Definiera två följder genom K = 1:100; t = -10:0.05:10; Variabeln K svarar mot index k ovan, och t är tidsvariabeln. Ändra inte dessa variabler i fortsättningen. Koefficienterna a och b skall lagras i den skalära variabeln anoll och i vektorerna akoeff och bkoeff. 2.5 Slå in Vi skall nu beräkna delsummor till funktionsserien» anoll = 0; k=1» akoeff = zeros(size(k)); sin kt k» bkoeff = ones(size(k))./k; = sin t + sin 2t 2 + sin 3t 3 +.... Plotta successivt» s0 = anoll/2*ones(size(t)); plot(t,s0)» s1 = s0+bkoeff(1)*sin(t); plot(t,s1)» s2 = s1+bkoeff(2)*sin(2*t); plot(t,s2)» s3 = s2+bkoeff(3)*sin(3*t); plot(t,s3) och så vidare, tills du tröttnar. 2 Här motsvarar 1 a0 det som i formelsamlingen och föreläsningarna kallas c0. 2 4

2.6 Vill man slippa skriva in så mycket så kan man göra så här:» s=anoll/2*ones(size(t));» for k=1:100; s=s+bkoeff(k)*sin(k*t); plot(t,s), title([ delsumma s_{ int2str(k) } ]), pause, end Tag reda på vad pause innebär innan du startar körningen. Det går att bryta med Ctrl-C, om alla 100 stegen tar för lång tid. Verkar Fourierserien konvergera? Rita in vad du tror är seriesumman då 4π < t < 4π. y π/2 4π 3π 2π π π 2π 3π 4π t π/2 Konvergerar den trigonometriska Fourierserien likformigt t. ex då 2π < t < 2π? Matlab tycker inte om för långa rader, så det är bättre att skapa en skriptfil som innehåller raden ovan och köra den från kommandoraden. Lägg märke till att alla sinustermer, och därmed även delsummorna, är udda funktioner. 2.7 Slå nu in koefficienter genom a k = 2 π cos(kπ/2) 1 k 2, k 1, a 1 = 1 2, b k = 0» anoll = 2/pi;» akoeff=2/pi*cos(k*pi/2)./(ones(size(k))-k.*k); % akoeff(1) odefinierad» akoeff(1)=1/2;» bkoeff=zeros(size(akoeff)); och rita upp några delsummor genom» s = anoll/2*ones(size(t));» for k = 1:100; s = s + akoeff(k)*cos(k*t); plot(t,s); pause; end Du kan även ha en titel i kommandraden som ovan. Hur ser resultatet ut? (Förklaringen finns till största delen i övning 8.29. Se också svaret till övningen.) 5

Skiss av summan y 1 t π π/2 π/2 π 3π/2 2π 5π/2 3π Det är ganska besvärligt att slå in raderna ovan rätt. För att förenkla hanteringen har jag skrivit ett skript visaserie.m som automatiskt visar upp termer och delsummor serier av typen ovan, om koefficienterna är angivna som ovan. 2.8 Hämta (om det inte redan är gjort) visaserie.m och övriga m-filer från kursens hemsida. Använd hjälpfunktionen, help visaserie Skriv in ymin=-0.5; ymax=1.5; i Matlab. Kör visaserie för att se på seriens termer och delsummor. Med normal upplösning på skärmen är det inte lönt att ta med mer än ca 50 termer. Bryt sedan med Ctrl-C. 2.9 Då 0 t π gäller att k=0 cos(2k + 1)t (2k + 1) 2 = π 4 (π t). (1) 2 I mån av tid kan du visa detta genom handräkning genom att bestämma cosinusserien för högerledet i (1). Med hjälp avmatlab går det emellertid att snabbt göra det troligt att (1) gäller. Innan du använder visaserie behöver du skriva in anoll, akoeff och bkoeff. Du kan använda att» akoeff = 1/2*(1-(-1).ˆK)./(K.ˆ2); Glöm inte ymin=-1.5;ymax=1.5; innan du använder visaserie. Sedan du använt visaserie för att rita vänsterledet kan du i samma fönster genom kommandot subplot(211),hold on, plot(t,pi/4*(pi/2*ones(size(t))-t), r ) rita även högerledet med röd färg. För vilka t verkar likheten stämma? Svar: 2.10 (I mån av tid.) Låt i uppgift 9.3 l vara π. Rita funktionen f och dess cosinus- och sinusserier. Koefficienterna kan du hämta från facit till uppgiften. Dock finns vissa tryckfel i facit men handledaren tillhandahåller rätt värden. 2.11 Om seriens summafunktion är känd från början, så kan man även beräkna och rita upp dess resttermer. Detta går att göra med skriptet visadelsummor.m. I 2.7 är summafunktionen en halvvågslikriktad cosinusvåg. Skriv ånyo in anoll, akoeff och bkoeff (se sidan 5 i denna handledning). Skriv också in» funktion = max(cos(tid),0) 6

och kör visadelsummor. I mitten visas den senast tillagda termen u n i rött och resttermen r n i blått. Överst visas delsumman i blått och nederst seriens summa i grönt (om man angivit den rätt i funktion). Förstora gärna figurfönstret lite (genom att dra med musen i nedre högra hörnet). Tryck på valfri tangent (= mellanslag) för att få nästa delsumma. Bryt med Ctrl-C. Med hjälp av visadelsummor kan man kontrollera alla svar i övningarna på Fourierkoefficienter. Om man inte tycker om att partialintegrera, så kan man låta Matlab räkna ut koefficienterna. Detta sker med den numeriska metoden snabb Fouriertransformation (FFT). Det finns naturligtvis ett Matlabkommando som heter fft. Med hjälp av m-filen fourkoeff kan man använda detta för att beräkna Fourierkoefficienterna för en given funktion. Titta på fourkoeff.m, och lägg märke till att index är förskjutna ett steg, eftersom Matlab indicerar vektorer med början på k = 1. Vi låter fourkoeff beräkna 2 8 = 256 koefficienter numeriskt (vilket svarar mot 128 termer i den trigonometriska Fourierserien). 2.12 Vi skall nu se på utvecklingen av en fyrkantsvåg. Den kan definieras genom funktion = (tid < pi) - (tid > pi) Detta kanske kräver en förklaring. Matlab har lättare för logiska villkor än många teknologer. Om tid är en vektor, så blir (tid < pi) en vektor med samma antal element som tid. Den har ettor i de element där villkoret tid < pi är sant i tid och nollor för övrigt. Rita nu upp fyrkantsvågens partialsummor med hjälp av kommandona fourkoeff, visadelsummor 2.13 Undersök på samma sätt triangelvågen, som kan beskrivas som funktion = tid.*(tid < pi) + (2*pi-tid).*(tid >= pi) 2.14 (I mån av tid.) Definiera nu en lagom komplicerad funktion, med språng och olika utseenden på olika delintervall. Ett förslag är» funktion= (tid<pi/2).*tid - (tid>4*pi/3).*(tid<3*pi/2) Kör nu fourkoeff, så beräknas koefficienterna. Dessutom ritas funktionen upp. Kör sedan visadelsummor och kontrollera att delsummorna närmar sig den givna funktionen. Hitta gärna på ett eget exempel på en konstig funktion och undersök dess Fourierserie. 2.15 För denna uppgift passar nog Maple bättre än Matlab. Om en funktion f är reell, kontinuerlig och b a f(x) 2 dx = 0 så är f(x) = 0 för varje x i intervallet [a, b]. Likaså gäller att om f och g är reella, kontinuerliga och f(x) = g(x) för varje x i intervallet [a, b]. 7 b a (f(x) g(x)) 2 dx = 0 så är

Hur vi än väljer de reella talen a 0, a 1, a 2, b 1 och b 2 blir däremot integralen 2π 0 (e x ( a 0 2 + a 1 cos x + a 2 cos 2x + b 1 sin x + b 2 sin 2x)) 2 dx (2) aldrig 0. Hur ska koefficienterna a 0, a 1,..., b 3 väljas för att integralen (2) ska bli så liten som möjligt? Gör några experiment med Maple. För att kunna lätt jämföra olika integralvärden kan det vara lämpligt med kommandot evalf(%) efter det att en integral beräknats. Uttrycket (2) kan uppfattas som en funktion av variablerna a 0, a 1,..., b 2. Från den flerdimensionella analysen vet du att en minimipunkt är en stationär punkt. Maple kan nu hjälpa dig bestämma koefficienterna a 0, a 1,..., b 2. Känner du igen talen? Byt nu i (2) e x mot f(x) och bestäm talen a 0, a 1,..., b 2 så att 2π 0 blir minimal. (f(x) ( a 0 2 + a 1 cos x + a 2 cos 2x + b 1 sin x + b 2 sin 2x)) 2 dx Svar: a k = och b k = 2.16 (överkurs) Operationen att byta alla sinus i en Fourierserie mot cosinus (och alla cosinus mot sinus) kallas för en Hilberttransformation. Kontrollera figurerna på omslaget till teorikompendiet på följande sätt: beräkna först Fourierkoefficienterna för en fyrkantsvåg som ovan och gör sedan bytet genom mellan = akoeff; akoeff = bkoeff; bkoeff = -mellan; anoll = 0; och kör visaserie. Gör motsvarande sak med triangelvågen. 2.17 (överkurs) Fourierserier kan användas inte bara för att representera funktioner givna av formler utan även sådant som brukar kallas för brus. Sådant kan man få genom att välja koefficienterna slumpvis och inte allt för snabbt avtagande. Gör nu ett numeriskt experiment med detta. Normalfördelade slumptal genereras med funktionen randn. För att få samma antal koefficienter som innan (beräknade av fourkoeff) kan vi göra så här. Summafunktionen är nu okänd och det är därför lämpligast att använda visaserie.» L=1:127; % K får vi ju inte ändra på» anoll=0;» akoeff=randn(size(akoeff))./(l+2);» bkoeff=randn(size(bkoeff))./(l+2);» visaserie; Storleksordningen på Fourierkoefficienterna väljs ungefär samma som för fyrkantsvågen. Upprepa experimentet ännu en gång genom att köra om kommandona som tillverkar koefficienterna slumpvis. Man får då en annan funktion, men med liknande utseende. Ännu vackrare brus får man om man sätter t ex de tre första koefficienterna till 0. 8

» akoeff(1:3)=[0 0 0]; bkoeff(1:3)=[0 0 0];» visaserie; Ljud i Matlab (I mån av tid.) Matlab är försett med en primitiv ljudfunktion, som sänder ut följder till högtalaren med hastighet av 2 13 = 8192 element i sekunden (på en del system kan man ändra samplingsfrekvensen). Kommandot för att skicka en vektor x till högtalaren är sound(x). Testa med x = cos(2*pi*440/8192*(1:8192)); sound(0.1*x) för en ren ton och x = randn(1,8192); sound(0.1*x) för rent brus. Den som vill kan hämta m-filen tongenerator.m och testköra. Denna använder en rekursionsekvation av andra ordningen för att generera en cosinusföljd och skicka den till högtalaren. Testa till exempel tongenerator(440,1,0.5) och tongenerator(880,2,0.2). Det första argumentet anger frekvensen, det andra varaktigheten och det tredje amplituden. Maximalfrekvensen ligger på ungefär 4 khz (och knappt det på grund av den approximativa cosinusberäkningen med Maclaurinutveckling). En förklaring av tongeneratorn finns att hämta på kursens hemsida (psfil). Kan du spela musik med tongenerator? 9