10
Matematiska institutionen Carl-Henrik Fant

Inledning till matematik med Matlab kompendium M1 och TD1

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Inledning till matematik med Matlab kompendium M1 och TD1

Matematiska institutionenCarl-Henrik Fant

4 oktober 2001

Inledning till matematik med Matlabkompendium M1 och TD1 2001/2002.

MATLAB ett interaktivt program med mycket kraftfulla numeriska rutiner. Namnet MATLAB matrix labora-tory. Det var ursprungligen ett program matrishantering, men har numera utvecklats att det kan angrafisk representation, att olika problem inom matematisk analys och som ettstora program.Detta kompendium avsett att ge en introduktion till de versioner av MATLAB (6.0.0 och 5.3.0), som just nu aktuella

M-sektionens datorer. Under kursen ”Matematisk Programvara” du ytterligare utveckla dina kunskaper om MAT-LAB. Under hela utbildningen kommer du att an Matlab som verktyg, dessutom an programmet av alltfler den tid du nu att dig grunderna an

att skall kunna ge kunskap att du arbetar aktivt och medvetet med dem. Det kommerert dessutom att finnas anledning att tillbaka till det du en gjort jag rekommenderar att du anteckningar

och sparar eventuella programfiler.du med MATLAB kommer du att boken An MATLAB av och

g. I visar jag till denna nedan. (P-E,S 2.1 syftar kapitel 2 sektion 1 i bok.)att markera matlabkommandon och liknande i kompendiet an en speciell font, kommando, dessa.

Matlabs uppbyggnad.

Till skillnad din som arbetar med enstaka tal arbetar Matlab med listor av tal – vektorer, matriser,flerdimensionella matriser, samt andra objekttyper – celler och strukturer. I kommer vi enbart att behandla de

enklaste typerna av objekt – vektorer och matriser.En lista av tal — 1 1.1 1.2 1.3 1.4 — kan vi som en vektor eller en radmatris, en -matris. Detvi kan oss att den uppfattas av Matlab, en lista kompletterad med matristypen (1,5).

En matris som ex.vis lagras som listan 1 4 7 2 5 8 3 6 0 tillsammans med matristypen (3,3). Notera

ordningen elementen i listan.En av man sig Matlab just att sig i listor eller matriser i kalkyler man normalt bara

er enstaka tal. Samtidigt detta en av Matlabs om man sig utnyttja den. Om du tidigare harmed programmering har du ert an dig av for-slingor i programmen. kan avvilket programmen betydligt effektivare.De program som Matlab an finns i s.k. m-filer. En m-fil (i en textfil som Matlab-kommandon. Att de kallas m-filer beror att namnet filen skall ha .m. En del av dessa filer finns inbyggdai Matlab och dolda an detta exempelvis sin.m (den vanliga sinus-funktionen), andra finns

att man kan titta detta exempelvis de hyperboliska funktionerna , varsningsprocedurer finns lagrade i m-filerna sinh.m resp. cosh.m. fram skall vi se hur man kan titta idessa filer.

ven de program som man skriver skall lagras som m-filer. Det vissa krav att Matlab skall hitta filerna,du senare se vilka dessa krav .

Att starta Matlab, inmatning och

Start: (P-E,S 2.1) Tryck ner den mellersta knappen musen. du upp en meny. kvar mittknappennertryckt och drag till Program. Du upp en ny meny du samma . I denmenyn du Matlab. Efter en liten stund startar MATLAB (version 5). Som alternativ kan du skriva matlabi ett . en del maskiner har du att starta version 6 i den versionen liknar merPC-versionen och trevligare att an tycker jag. Detta du med kommandot matlab6 (ellermatlab.6 a dig fram, inget

Page 2: Inledning till matematik med Matlab kompendium M1 och TD1

Matematik med Matlab M1 och TD1 2001/2002, sid. 2

– (ver. 6) Du upp , ett med rubriken Help ett med rubriken MATLAB. Det senare indelat i tredelar, launch pad/workspace, command history/current directory och ettCommand Window med lite text om Matlab och en rad to get started select .... Under den raden finns denkallade Matlabprompten ». den syns det klart att

– (ver. 5) Du upp ett med lite text om Matlab och en rad to get started type .... Under denraden finns den kallade Matlabprompten ». den syns det klart att

Inmatning: (P-E,S 2.2) MATLAB arbetar som redan med listor/matriser av tal. Ett enstaka tal kan viuppfatta som en -matris. Tal, en komplexa, matas in precis som de skrivs, exempelvis 3+2*i eller 5-2*j.Notera *–tecknet och att man inte har mellanslag inne i talet. Den enheten skrivs i eller j. Matriserskrivs in radvis. De inramas av [ och ]. Matriselementen separeras av mellanslag eller ,–tecken, raderna (utom densista) separeras med ;–tecken eller genom ett tryck return/enter tangenten.

All inmatning avslutas med vagnretur RETURN. Vill man att resultat inte skall skrivas ut avslutaskommandot med ; av RETURN.

Som exempel ger inmatningarna>>A=[1 2 3; 4 5 6 ;7 8 0]eller>>A=[1,2,3;4,5,6;7,8,0]resultatetA =

I tilldelar man det man matar in eller resultatet av en ett variabelnamn, matrisen ovan harnamnet A, MATLAB kommer att spara detta i vad man kallar arbetsutrymmet (workspace) och man kan andet senare under samma arbetspass. Om inget annat namn ges senaste eller inmatadematrisen automatiskt namnet ans. Kommandot who ger en lista er lagrade variabler. Om du (ver 6) klickarfliken workspace ser du vad som finns lagrat . Du kan markera en variabel i workspace attsedan ta bort eller editera den.

Spara och Rensa: (P-E,S 2.8) Kommandot clear tar bort alla variabler och kommandot clear A B x tar bortvariablerna A, B och x. man avslutar MATLAB med quit eller exit arbetsutrymmet. Om man villspara variabler framtiden de sparas i en fil. Kommandona save tmp och save tmp A B spararalla variabler respektive variablerna A och B i en tmp.mat. Denna placeras i aktuellt bibliotek (directory).Du kan arbetsbibliotek i current directory eller med kommandot cd biblioteksnamni detta innan du sparar med save. Med kommandot save utan filnamn sparas variablerna ien fil matlab.mat.

De sparade variablerna i filen tmp.mat med kommandot load tmp, variablerna i matlab.matmed load.

(P-E,S 2.7)

– (ver 6) Man kan information exempelvis om vad ett kommando via Jag rekommenderaratt du snart som dig in i hur uppbyggt. a t.ex. att dubbelklickaMATLAB under fliken contents och sedan Using MATLAB. sidan du upp kan du klicka dig vidaretill det du vill meta mer om. Du kan Index och i rutan Search index for skriva in ettkommando du vill veta mer om. a att skriva in rref och se vad det kommandot .

– (ver 5) Man kan information exempelvis om vad ett kommando dels via , delsdirekt i

Kommandot helpwin startar ett man snabbt kan information om alla kommandon.visas en lista er alla underbibliotek Matlabs programfiler finns lagrade. Genom

att dubbelklicka en rubrik ex.vis matlab/elmat man vidare i och enlista er kommandon/program i det biblioteket. Dubbelklickar man ett kommando i denna lista, ex.vissize man information om detta.Kommandot help kommando ex.vis help size ger samma information som den ovan beskrivnaproceduren men nu direkt i

Page 3: Inledning till matematik med Matlab kompendium M1 och TD1

Matematik med Matlab M1 och TD1 2001/2002, 1 sid. 3

Kommandot helpdesk startar en om man inte redan har en och laddar in en online-manual. I denna kan man vad man vill tittaOm man matlab functions by index, klickar bokstaven S och sedan size

man en mycket mer omfattande information om kommandot/funktionensize. Helpdeskenallt man er kunna att an Matlab.

Bra att veta:

– Man programmet med quit eller exit.

– Man kan avbryta med kommandot Control-c.

– Om du klickar MATLAB och sedan Demos i Launch Pad eller ger kommandot demo kandu ett antal korta presentationer av MATLAB, en bra Det ger dig att titta meravancerade demonstrationsprogram av olika typ, dessa du har dig grunderna. I ver 5.3.0finns samma om du ger kommandot demo.

– Man kan tidigare givna kommandorader genom att trycka piltangenten upp . Om du skriver en ellerflera er eller symboler och an -tangenten du den rad som detta Senarekommandon man tillbaka genom att trycka . Man kan korrigera ett givet kommando genom att flytta

med piltangenterna och och sedan ta bort tecknen med Back-Space eller Delete-knappen.

1 MATLAB som ”matrishanterande

Examination denna

Se till att du blir avbockad arolistan. Kunskaperna denna kommer att examineras indirekt senare.

1.1 operationer

1.1.1 Aritmetiska operationer (P-E,S 2.4)

De vanliga aritmetiska operationerna mellan tal ser ut :

addition subtraktion* multiplikation division

exponentiering skrivs av mellanslag!)

Talet skrivs pi medan talet skrivs exp(1)exempel:

Skriver du>> 100*pi (utan ; avslutande RETURN)blir svaretans =314.1593 (ans det senaste svaret).Som ovan skall man ”alltid” ge namn till I ov exempel skriver man>> a=100*pioch svareta =314.1593

MATLAB den vanliga prioriteringsordningen mellan de aritmetiska operationerna :>> 8^1/3ger svaret 2.6667, medan>> 8^(1/3)ger svaret 2.

Page 4: Inledning till matematik med Matlab kompendium M1 och TD1

Matematik med Matlab M1 och TD1 2001/2002, 1 sid. 4

1.1.2 funktioner (P-E,S 2.4)

MATLAB har alla de vanliga grundfunktionerna, exponential- och logaritmfunktionerna, de trigonomet-riska funktionerna och deras inverser, absolutbelopp, kvadratrot, och flera andra. en lista av MATLABsfunktioner:exp , log , log10 (= 10-logaritmen), sin , cos , tan , atan , asin , abs ,sqrt , sinh , cosh , tanh .Observera att man alltid ha () runt variabeln som i sin(pi/3).Det finns ytterligare funktioner t.ex.sign , round , floor , ceilExempel:Vi :>>y= log(sqrt(exp(1)))y = 0.5000Vi ekvationen :>> x = atan(5/exp(1))x =1.0728Notera att man inte kan skriva e^x exponentialfunktionen.

1.1.3 Formatering av utskrift (P-E,S 2.6)

Man kan dirigera antal decimaler som skrivs ut och formen utskriften med av kommandot format. De vanligastevarianterna

format short ger fem signifikanta siffrorformat long ger femton signifikanta siffrorformat short e ger fem signifikanta siffror i flyttalsnoteringformat long e ger femton signifikanta siffror i flyttalsnotering

Prova med att skriva ut i de olika utskriftsformaten, t.ex.>> format long>> 10*pians = 31.41592653589793

1.2 Ytterligare operationer

1.2.1 Operationer med listor/radmatriser (P-E,S 3.5-6)

att utnyttja MATLAB effektivt skall alla variabler man an vara radmatriser eller matriser. Dettaen viss komplikation. Multiplikationen x*y betyder matrismultiplikation. Om x och y enstaka tal det

den vanliga produkten. x och y matriser finns inte produkten inte typerna erens.Vi kan som ovan oss en matris lagrad som en lista av tal tillsammans med uppgift om matrisens typ.Ofta vill vi elementvisa (punkt-visa) produkter av tal i listor. Den produkten skrivs .* med enpunkt *-tecknet. Med x = [1,2,3] x.*x= [1,4,9]. samma skrivs division x./y och potenserx.^y.Man kan en an de funktionerna matriser.Exempel (med utskrift i format short):>>x=[1 2 3]; y=[4 5 6]; gerx+y 5 7 9x.*y 4 10 18x./y 0.2500 0.4000 0.5000x.^y 1 32 729exp(x) 2.7183 7.3891 20.0855

Viktiga specialkommandon ones och zeros. De an att generera matriser av enbart ettor respek-tive nollor. T.ex. ger kommandot ones(1,3) eller ones(size(x)) svaret 1 1 1 om x en radmatris av3. Andra exempel:

Page 5: Inledning till matematik med Matlab kompendium M1 och TD1

Matematik med Matlab M1 och TD1 2001/2002, 1 sid. 5

>>x=[1 2 3 4]; z=ones(size(x))./xger svaret >>z = 1.0000 0.5000 0.3333 0.2500>>x+ones(size(x)) ger svaret 2 3 4 5>>2*ones(size(x)) ger svaret 2 2 2 2

Det sista svaret hade man kunnat genom att skriva x+1.z kan man med z = 1./x.

Uppgift 1: Skriv in radmatriserna x = [3 5 1] och y=[2 2 9].x+y, x-y, x.*y, x.^y, x./y, x.\y, x.*sin(y).

Skriv upp vad MATLAB svarar x*y. Hur tolkar du svaret? Kom detta svar och orsaken. Du kommer ert attdet fler .

1.2.2 Generering av aritmetiska (P-E,S 4.3)

Om , och givna tal kan man bilda radmatrisen x=[a,a+h,a+2h,... ,b] med av kommandotx=a:h:b.>>x=-5:2:5 gerx =

-5 -3 -1 1 3 5Analogt ger kommandot>>x=-pi:0.1:pi;radmatrisen x=[-3.1416 -3.0416 -2.9416 ... 2.9584 3.0584], vilket en matris av 63.Kontrollera genom att mata in x enligt ovan och sedan skriva>>length(x)

datorn skriva matrisen x genom att skriva>>x (utan semi-kolon)Vill man ha ste h = 1 er det att skriva >>x=a:b t.ex.>>x=0:10x = 0 1 2 3 4 5 6 7 8 9 10Om b < a kan man ha h < 0 .

Leta upp om :, kolon-operatorn en mycket viktig ingrediens i Matlab.

1.3 Matrishantering (P-E,S kap 3, 4 och 7)

Detta avsnitt att bekant med den algebrans mest begrepp (t.ex. matrismulti-plikation, system av ekvationer och determinant ). Vissa uppgifter kanske du med tills dumotsvarande i algebrakursen.

1.3.1 matrisoperationer (P-E,S 3.1-2)

Man matar in matriser radvis med mellanslag eller kommatecken mellan radelementen och med semi-kolon eller tryckreturn/enter-tangenten mellan raderna. till exempel ger inmatningen>>A=[1 2 3; 4 5 6; 7 8 0]resultatetA =

Symbolen . Transponering av en radvektor ger till exempel kolonnvektor:

ger resultatet

Page 6: Inledning till matematik med Matlab kompendium M1 och TD1

Matematik med Matlab M1 och TD1 2001/2002, 1 sid. 6

Addition, subtraktion och multiplikation av matriser betecknas med +, - resp. *.Exempel:>>b= A*xb =

Uppgift 2: Skriv in matriserna

,

och

a. , , och .

b. . felmeddelandet minnet.

c. .

d. .

e. . felmeddelandet minnet.

f. och .

g. och . skillnaden.

1.3.2 Transponering, inversmatris och determinant (P-E,S 3.3-4, 7.1)

Symbolen transponering ’. Transponering av en radvektor ger till exempel kolonnvektor:>> x=[-1 0 2]’ger resultatetx =

Man inversen av A med kommandot inv(A).Med A enligt ovan man:>> C=inv(A)C =

Determinanten av en kvadratisk matris A enkelt med kommandot det(A). Exempel (med samma matris A somovan) :>> det(A)ans =

27

Uppgift 3: och vara matriserna ur uppgift 2.

a. (transponatet av ). med .

Page 7: Inledning till matematik med Matlab kompendium M1 och TD1

Matematik med Matlab M1 och TD1 2001/2002, 1 sid. 7

b. en tredje rad i genom att den lika med . vara den nya matrisen.

c. .

d. .

e. och .

f. och .

g. och .

h. ones(1,4) + rand(1,4). .

Skriv ner i c, e, f, g, och h. i e, f, g och skriv ner Trotsslumptalen i uppgift h blir determinanten alltid densamma. v det

1.3.3 Rader, kolonner och enskilda matriselement. Nya matriser av gamla. (P-E,S 4.1-3)

Om M en given matris betecknar M(r,:) den r:te raden i M, M(:,k) den k:te kolonnen och M(r,k) ele-mentet plats (r,k). M kan, som tidigare, uppfattas som en lista med elementen kolonnvis. Omsize(M) = [m,n] listanm*n element. M(p) element plats p i denna lista. M(r,k) = M(p)

p = (k-1)m+r. Om u och v vektorer med heltalskomponenter betecknar M(u,v) den undermatris av Msom av de rader vars index ges av vektorn u och vars kolonner kolonnerna i M med index givna av vektorn v.oss exemplifiera:>> M=[11:15;21:25;31:35]M =

>> M(1,:)ans =

>> M(:,1)ans =

>> M(3,4)ans =

34>> N=M([2 3],[1 3 5])N =

Man kan enstaka element eller hela rader och kolonner genom att direkt tilldela dem nya Exempel:>> M(3,4)=134M =

>> M(:,5)=[1:3]’M =

Man kan storlek en matris med direkta tilldelningskommandon. Matrisen eventuellt med av extranollor. Exempel:>> N(4,:)=ones(1,3)

Page 8: Inledning till matematik med Matlab kompendium M1 och TD1

Matematik med Matlab M1 och TD1 2001/2002, 1 sid. 8

N =

Man kan en bygga matriser med andra matriser som ”block”. Exempel:>> P=[[M;(-1).^(1:5)] N]P =

Man kan om formen en -matris med reshape(M,r,k), under att .M(:) om M till en kolonnmatris. Ordningen elementen i listan M inte av dessa kommandon.

1.3.4 Speciella matriser (P-E,S 4.1)

ett urval kommandon som avsedda att bygga upp nya matriser:zeros(n) -matris med bara nollorzeros(n,m) -matris med bara nolloreye(n) enhetsmatris av typeye(n,m) -matris med ettor i diagonalen och nollorones(n) -matris med bara ettorones(n,m) -matris med bara ettorrand(n) -matris vars element tal mellan 0 och 1, utvalda.rand(n,m) -matris vars element tal mellan 0 och 1, utvalda.

Ytterligare an kommandon att bygga upp nya matrisertril(A) ger den undre i den givna matrisen Atriu(A) ger den i Adiag(V) ger, om V en rad- eller kolonnmatris, en matris med V diagonalen och 0 platser.diag(A) ger, om A en matris, en kolonnvektor med diagonaleelementen i A som element.

Uppgift 4: Stora matriser byggda av mindre block.

a. Skriv in M= ones(3,3); N=zeros(2,3); P=[2,2,2]; Q=eye(4); R=rand(4,2);X=[M,[N;P];Q,R]

b. Av ov exempel du till hur du kan skapa stora matriser av mindre. Skapa en egen -matris,EG.

1.3.5 Ekvationssytem. (P-E,S 7.3, 7.7)

Om A en ick (d.v.s. inverterbar) kvadratisk matris, kan man entydigt systemet A*X = b varje matrisb som har lika rader som A. ges av X = inv(A)*b. Analogt om b har lika kolonner som A

ges till X*A = b av X = b*inv(A).inverterbara och icke-inverterbara matriser kan till A*X = b med av Gausseliminering

i ekvationssystemet tills koefficientmatrisen . Ofta man att presentera utan att ta med deobekanta. Man bildar systemets totalmatris eller koefficientmatris som av koefficientmatrisen av

ofta separerade med ett streck att att det handlar om en totalmatris till ett ekvationssystem.denna matris man sedan radoperationer tills koefficientmatrisen , kan man enkelt ut de

obekanta ev. parameterform, eller se att systemet saknar I Matlab trianguleringen genom att manbildar systemets totalmatris A1 = [A b] och sedan T = rref(A1), (rref ortning av row reducedechelon form. Ur denna kan man X. ven ekvationen X*A = b kan med av rref, menekvationen transponeras, (X*A)’ = b’, som samma som A’*X’ = b’.Ytterligare ett att en till ekvationssystemet A*X = b ges av X=A\b. Om matrisen A kvadratisk

en genom Gausselimination. ven om systemet saknar eller har man

Page 9: Inledning till matematik med Matlab kompendium M1 och TD1

Matematik med Matlab M1 och TD1 2001/2002, 1 sid. 9

ett svar dock tillsammans med en varning. Om matrisen inverterbar samma som med matrisinversenovan, dock en annan det inte ert att man exakt samma numeriska resultat).Om A inte kvadratisk X=A\b en till A*X = b med minstakvadratmetoden. Det att en omsystemet saknar man ett svar.Analogt ger kommandot Y=c/A Y=c*inv(A) till systemet Y*A=c varje matris c som har likakolonner som A. Kommentarerna ovan en denna operation.Exempel, med A =

och b =

ger X = inv(A)*b och X = A\bX =

Vidare ger rref([A b]) matrisen

ur vilken vi direkt kan samma som ovan.vi A =

och b =

ger T = rref([A b])T =

Den sista raden ger oss ekvationen 0 = 1 vilket visar att ekvationssystemet AX = b saknarger X = A\b

X =

ges emellertid en varning som oss att detta kanske fel.Om vi till b =

ger T = rref([A b])T =

Ur denna matris kan vi se att systemet harNu ger X = A\bX =

Page 10: Inledning till matematik med Matlab kompendium M1 och TD1

Matematik med Matlab M1 och TD1 2001/2002, 1 sid. 10

ven nu ges en varning som oss att detta kanske fel.Exempel: Vi minstakv till systemet

Vi kallar systemets matris W. I matrisbeteckningar blir systemet W*X=b. vi det:>> W=[1 2; 3 4; 5 6]; b=[1; 3; 5]; X= W\bX =

Vi er om detta en till ekvationssystemet genom att ge kommandot:>> W*Xans =

Notera att detta system entydigt men det vet vi inte utan att triangulera det.Om vi till b=[1;0;0] systemet W*x=b inte MATLAB ger minstakvningen:>> b=[1 0 0]’; X=W\cX =

Vi ser att detta inte till den givna ekvationen:>> W*Xans =

OBS! Om A och c radmatriser av samma och Y en till ekvationen Y*A = c Y ett tal och cen multipel av A. Om c inte en multipel av A ger Y=c/A minstakv Y som minimerar |c - Y*A|.

I detta fall . Jag detta att belysa ett annat problem: Antag att vi vill be-den elementvisa divisionen x./sin(x) men punkten. Matlab ger ingen varning utan

. Vi kan sedan obegripliga felmeddelanden eller helt felaktiga resultat.

Uppgift 5: I denna uppgift skall du olika ekvationssystem och som med deolika metoderna som beskrivs ovan.Matriserna C,D, E och F samma som i uppgift 2, matrisen A den du fick i uppgift 3b. Skriv ner den eller de

som ger. eventuella skillnader mellan metoderna.

a. ekvationssystemen AX=E och YA=D med av inv(A). dem sedan en med av rref (transpo-nera ekvationen YA=D). med resultaten som ges av matlabs operationer A\E och D/A.

b. inv(C) och C*inv(C). sedan det(C). Vilken till ekvationssystemet CX=E gerX = inv(C)*E? Vilken till ekvationssystemet CX=E ger X = C\E?

c. Bilda totalmatrisen C1 till ekvationssystemet ovan, dvs C1 = [C,E]. Matlab trappstegsmatrisen tillC1 med av kommandot rref(C1) . Vad kan du nu om till ekvationssystemet.

d. CX=F med av rref([C,F]). Vad ger X = C\F? Ser du samband mellan