Forberedelse: Matlab for absolutte fodgngere Kort introduktion til G-databaren. St dig ved en ledig maskine og gennemfr loginprocessen. Hvis du har vinduer abne fra en tidligere session, sa luk dem ned { vi vil have arbejdsro. Tryk pa midterste musetast, rul pilen hen over Mathematics og vlg Matlab: der abnes et Matlab-vindue. Tryk pa pilen over terminal-ikonen og vlg teksteditoren: der abnes et teksteditor-vindue. Juster evt. strrelsen af de to vinduer, og yt dem, sa deikke dkker for hinanden. Vi kan nu ga i gang. Flg instrukserne linie for linie, tegn for tegn. Der er kun kortfattede forklaringer. Formalet er primrt at eliminere fremmedgjortheden over for Matlab. Et (T) ved nummeret angiver, at teksten skrives i teksteditoren. De vrige ordrer skrives pa kommando-linien i Matlab-vinduet efter prompt'et >>,oghver linie sendes af sted ved tryk pa Enter -tasten. Afslutning. Nar du er frdig med arbejdet, skriver du quit Enter i Matlab-vinduet: Matlab forlades og alle relaterede vinduer lukkes. Luk teksteditor-vinduet ved at dobbeltklikkepa knappen i dets verste venstre hjrne. Tryk pa EXIT-ikonen og bekrft. continue logout 1. x = / Du har oprettet variablen x med vrdien. x = [1 ] x er nu en rkkevektor. y = [ ] y er en sjlevektor. y = y', x = x(:) y er nu en rkkevektor og x er en sjlevektor. pi Prdeneret variabel med vrdien. Skriver man navnet pa envariabel, kvitterer Matlab med dens vrdi. z = cos(pi/*x) Man kan bruge en vektor som argument foren funktion. format short e, z ndret udskriftsformat afslrer, at de beregnede vrdier for cos og cos ikke er nul (men nsten) 8. format compact, z De blanke linier fjernes i udskriften 9. t = linspace(-,,101) t er en rkkevektor med 101 vrdier: ; ;+ ;+ 100 100 : : : 10. plot(t, exp(t)) Du har nu plottet e x for ; x 11. (T) x = linspace(-.1, *pi+.1, 101) e = exp(-x) plot(x,e.*sin(*x), '-r', x,e.*cos(x),'--g') Skriv i teksteditoren og Save Asscript1.m. Du har nu deneret en \m-l", ogsa kaldet et \script". Plotter funktionerne y 1(x) =e ;x sin x og y (x) =e ;x cos x for ;0:1 x +0:1. \.*" betyder \elementvis multiplikation". 1. script1 Matlab-ordrerne i script1.m udfres 1. dbtype script1 Indholdet af script1.m listes med linienumre
1. (T) format short e, format compact Skriv i teksteditoren og Save Asstartup.m. Nste gang du gar ind i Matlab, vil du fa dette layout fra starten, jvf. {8. 1. help plot help clf help hold Oplysninger om Matlab-funktionerne plot, clf og hold. Nar du er naet hertil, har du faet krekort, eller i hvert fald vandrer-kort til Matlab. Resten af sprgsmalene skal lses under brug af de frdigheder, du nu har opnaet. 1) Udvid script1.m, sa den indeholder ordrerne x = linspace(-.1, *pi+.1, 101) ex = exp(-x) clf, plot(x, ex.*sin(*x), '-r', x, ex.*cos(x), '--g') hold on, plot(x,ex,':b', x,-ex,':b') grid on Save den modicerede l og udfr Matlab-ordren script1 1) Udvid script1.m, sa der ogsa markeres de punkter, hvor y 1 (x) =e ;x. 18) St tekster pa akserne ved hjlp af xlabel og ylabel
Denne velse behandler regnenjagtighed samt brug af M{ler og funktioner i Matlab. Vi betragter polynomier pa formen P (x) =c 1 x n + c x n;1 + + c n x + c n+1 : 1) Benyt poly til at generere koecienterne for et. grads polynomium Q(x), som har rdderne 1,,,,. ) Brug polyval og plot til at vise Q(x) for0 x. ) polyval benytter Horners skema. Skriv en funktion med argumenterne c og x, hvor vrdier af polynomiet beregnes under brug af potensoplftninger. Husk en indledende kommentar, som beskriver ind- og uddata. ) I dette specielle tilflde, hvor rdderne er kendt, fas den mest njagtige beregning af Q(x) ved Q(x) =(x ; 1) (x ; ) (x ; ) : (.1) For 0 x skal man plotte forskellen mellem vrdierne for Q(x) beregnet ved hjlp af (.1) og henholdsvis polyval og funktionen fra sprgsmal. ) For hver af vrdierne =10 ; 10 ; 10 ; skal man for ; x + plotte Q(x) beregnet ved hjlp af polyval.
Denne velse behandler interpolation og Matlab-funktioner. Frst skal der hentes to Matlab-funktioner: Tryk pa pilen over terminal-ikonen og vlg terminalen: der abnes et terminal-vindue. Skriv netscape Enter, ognar Netscape-vinduet kommer frem, rettes adresse-linien til http://www.imm.dtu.dk/pch/0010.html Tryk Enter, og kursets hjemmeside kommer frem. Find afsnittet Databar{velser, yt musen til den peger pa polintc.m og tryk pa hjre musetast. Der fremkommer nu en menu med overskrift Netscape Commands: Idet du stadig holder hjre muse-knap nede, kres pilen ned til Save Link As..., ognar du slipper tasten, fremkommer et nyt vindue med forslag til, at len lagres som.../polintc.m. Klik pa OK,og du har nu lagret denne funktion. Hent polintval.m pa samme made. Luk Netscape ved at trykke pa File i verste venstre hjrne og vlge Exit. Programmerne bygger pa reprsentation ved dividerede dierenser, se lrebogens afsnit.. Algoritmen s. 9 til beregning af funktionsvrdier er udvidet, sa ogsa den aedede bestemmes: P := c N D := 0 for k = N;1 ::: 1begin D := D (x ; x k )+P P := P (x ; x k )+c k end k Slut-vrdierne for P og D er hhv. P N (x) ogp 0 N (x). I denne velse skal der kun bruges P N (x). Vi skal interpolere flgende generalisering af Runges funktion '( x) = 1 1+(x ; ) : 1) Skriv en Matlab-funktion, som implementerer '. Funktionen skal kunne kaldes med en vektor for x. Husk en indledende kommentar, som giver en god vejledning ved help. ) Plot '(0 1 x) for ; x. i Figur vindue nr. 1 (start med figure(1)). ) Brug polintc til at bestemme det. grads polynomium, som interpolerer punkterne (x 1 '(0 1 x 1 )) ::: (x '(0 1 x )), hvor abscisserne er givet ved Matlab-udtrykket x = -:. ) Funktionen polyfit kan bruges til at bestemme det interpolerende polynomium pa formen P N (x) =a 1 x N ;1 + a x N ; + + a N ;1 x + a N : Kald polyfit med de samme punkter som i sp., og sammenlign de to st koecienter. ) Tilfj graferne for begge reprsentationer af det interpolerende polynomium til guren. ) Gentag sp. { i Figur vindue nr., idet vi nu betragter '(100 1 x) for 98 x 10 og abscisserne x = 98:10.
Denne velse behandler interpolation og dierentiation. Lad f : IR! IR vre dierentiabel med dierentialkvotienten f 0. En tilnrmelse til f 0 (x) kan fas ved dierenskvotienten D(h x), f 0 (x) ' D(h x) = f(x+h) ; f(x) h hvor h er et passende lille, positivt tal. 1) Skriv en Matlab-funktion, som beregner dierentialkvotienten (m.h.t. x) af funktionen '( x) fra velse. ) Brug subplot til at vise ' 0 (0 1 x)samt fejlene jd(h x) ; ' 0 (0 1 x)j for ; x og h =10 ; 10 ;8 10 ;1. Hint: fejlene vises bedst med semilogy. Alternativt kan man fa en tilnrmelse ved f 0 (x) ' P 0 N (x) hvor P N er et interpolerende polynomium. Dierentialkvotienten af P N kan beregnes v.hj.a. Matlab-funktionen polintval fra velse. ) Idet P N (x) erdetinterpolerende polynomium til '(0 1 x) beregnet med x = linspace(-,,n),skal man plotte fejlene P N (x) ; '(0 1 x)ogp 0 N (x) ; ' 0 (0 1 x) for N = 9 1. ) Forsg at bestemme N og fordelingen af abscisserne fx j g,sa jp N (x) ; '(0 1 x)j 10 ; for ; x. N skal vre sa lille som muligt.
Lidt mere om Matlab A = 11 1 1 1 1 1 1 1 >> [m,n] = size(a) ;! m =, n = >> size(a) ;! ans = [ ] >> size(a,1) ;! ans = >> size(a,) ;! ans = >> l = length(a) ;! l = >> z = A(,:) ;! z =[1] >> z = A(:,) ;! z = 1
Lidt mere om Matlab (fort.) A = 11 1 1 1 1 1 1 1 >> z = A(:,:) ;! z = >> z = A([,],:) ;! z = >> A([,],:) = A([,],:) ;! A = 11 1 1 1 1 1 1 1
Lidt mere om Matlab (fort.) 1 11 1 1 1 A = 8 1 18 9 1 19 10 1 0 1 x = 1 y = >> size(a) ;! ans = [ ] z =1 >> size(x) ;! ans = [1 ] >> size(y) ;! ans = [ 1] >> size(z) ;! ans = [1 1] >> A(,) ;! ans = 18 >> x(1,) ;! ans = >> y(,1) ;! ans = >> z(1,1) ;! ans = 1 >> A() ;! ans = >> x() ;! ans = >> y() ;! ans = >> z(1) ;! ans = 1
Lidt mere om Matlab (fort.) y = ; 10 ;9 8 >> y(:) ;! ans = ;9 8 >> [elem,ind] = max(y(:)) ;! elem = 8, ind = >> abs(y(:)) ;! ans = 9 8 >> [elem,ind] = max(abs(y(:)));! elem = 9, ind =