86

Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Lab�velser i MATLAB for Mat1110avKlara Hveberg

Senter for matematikk for anvendelser (CMA)Universitetet i Oslo2006

Page 2: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

c Klara Hveberg 2006

Page 3: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

ForordI dette heftet �nner du laboratorie�velser i Matlab for kurset MAT1110. �velsene erav varierende lengde og vanskelighetsgrad | noen av dem er ledede oppgavesekvenser,mens andre er rene programmeringsoppgaver som skal teste at du har f�att med deg sen-trale punkter i teorien. De este lab�velsene er delt inn i to eller tre deler: en laboratorie-/oppgavedel, en egen del med l�sningsforslag og eventuelt en del som inneholder hintog halvferdige l�sninger til oppgavene.Lab�velsene er egnet for selvstudium, og det er derfor til en viss grad opp til deg selvhvor mye utbytte du f�ar av dem. Du l�rer absolutt mest av �a pr�ve deg ordentligp�a oppgavene p�a egen h�and f�r du kikker i l�sningsforslagene. �velsene er imidlertidbygget opp s�ann at du helst b�r ha forst�att en oppgave ordentlig f�r du g�ar l�s p�a neste.Er du usikker p�a hvordan en oppgave skal l�ses, kan det derfor v�re lurt �a sjekke at duforst�ar l�sningsforslaget til oppgaven f�r du g�ar videre.Lab�velsene forutsetter at du har arbeidet deg gjennom introduksjonsheftet tilMatlabp�a forh�and og kjenner til kommandoene vi gjennomg�ar der. Andre kommandoer du f�arbruk for underveis, blir gjennomg�att i �velsene. Etter innholdsfortegnelsen �nner duen liten beskrivelse av hver lab�velse hvor det blir oppgitt hvilke matematiske begreper�velsen dreier seg om og hvilke deler av Matlab du trenger for �a gjennomf�re �velsen.Jeg har ogs�a laget noen enklere og mindre oppvarmings�velser som du gjerne kan gj�remens du leser introduksjonsheftet. I motsetning til de regul�re lab�velsene, forutsetterikke disse at du vet hvordan man lager m-�ler og funksjoner i Matlab. Du �nneroppvarmings�velsene i appendiks 1 i dette heftet, rett etter de regul�re lab�velsene.Til noen av �velsene foreligger det ferdige Matlab-�ler som du kan laste ned fra inter-nettadressenhttp://folk.uio.no/klara/matlab/Blindern, 28. desember 2006Klara Hveberg

i

Page 4: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

InnholdsfortegnelseForord : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : iInnholdsfortegnelse : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : iiBeskrivelse av laboratorie�velsene : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : iiiLab 1: Line�ravbildninger og matriser : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1Lab 2: Gauss-eliminasjon : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 13Lab 3: Ligningssystemer og line�r uavhengighet : : : : : : : : : : : : : 19Lab 4: Newtons metode for flere variable : : : : : : : : : : : : : : : : : : : : 21APPENDIKS 1: Oppvarmings�velser�velse 1: Matrisemultiplikasjon : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 35�velse 2: Egenskaper ved determinanter : : : : : : : : : : : : : : : : : : : : : : : 39APPENDIKS 2: L�sningsforslag og hintL�sningsforlag til lab 1 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 47L�sningsforlag til lab 2 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 51Hint til lab 3 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 55L�sningsforlag til lab 3 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 59L�sningsforlag til lab 4 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 65L�sningsforlag til �velse 1 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 77L�sningsforlag til �velse 2 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 79

ii

Page 5: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Beskrivelse av laboratorie�velseneNedenfor �nner du kortfattede beskrivelser av hver enkelt lab�velse, med stikkord somantyder hvilke matematiske begreper �velsen dreier seg om og hvilke deler av Matlabdu trenger for �a gjennomf�re �velsen.Lab 1: Line�ravbildninger og matriserInnhold: I denne lab�velsen ser vi p�a sammenhengen mellom line�re transformasjonerog matriser. Vi bruker plottefunksjonen i Matlab til �a tegne opp ulike todimensjonale�gurer og ser p�a hvordan vi kan transformere �gurene ved�a multiplisere plottepunktenemed passende matriser. Til slutt bruker vi for-l�kker til �a lage sm�a \�lmsnutter" av�gurene i bevegelse.Begreper: matriserepresentasjon av line�ravbildninger, matrisemultiplikasjon, potens-er av matriser.Matlab: matriser, m-�ler (funksjoner og skript), plotting, for-l�kker.Nyttige m-�ler som kan lastes ned: baat.m, monogramMH.m, klokkeskive.m,klokkepil.m og seilendebaat.mLab 2: Gauss-eliminasjonInnhold: I denne lab�velsen ser vi n�rmere p�a hvordan Gauss-eliminasjon kan be-skrives p�a en systematisk m�ate som lar seg programmere i Matlab. Vi lager f�rsten Matlab-funksjon som bringer en matrise over p�a trappeform ved �a bruke Gauss-eliminasjon med delvis pivotering, og deretter utvider vi denne til en funksjon sombringer matrisen p�a redusert trappeform.Begreper: element�re radoperasjoner, Gauss-eliminasjon.Matlab: matriser, kolon-indeksering for rad- og s�yleoperasjoner, m-�ler, for-l�kkerog while-l�kker, if-tester.Lab 3: Ligningssystemer og line�r uavhengighetInnhold: I denne lab�velsen lager vi Matlab-funksjoner som bruker den redusertetrappeformen til en matrise for�a avgj�re om et ligningssystem er konsistent, hvor mangel�sninger det eventuelt har, og om s�ylevektorene i matrisen er line�rt uavhengige ellerikke.Begreper: line�r avhengighet og uavhengighet, konsistente og inkonsistente lignings-systemer.Matlab: matriser, m-�ler, rref-kommandoen, for-l�kker og while-l�kker, if-tester,boolske variabler.Lab 4: Newtons metode for ere variableInnhold: I denne lab�velsen lager vi enMatlab-funksjon som utf�rer Newtons metodep�a funksjoner av ere variable. Vi ser ogs�a p�a hva som skjer hvis vi bruker Newtonsmetode p�a funksjoner av en kompleks variabel, og hvordan dette leder til eksotiske�gurer som kalles fraktaler.Begreper: Newtons metode, Jacobi-matrise, invers matrise.Matlab: matriser, m-�ler, plotting, for-l�kker, if-tester. iii

Page 6: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Appendiks 1: Oppvarmings�velser�velse 1: MatrisemultiplikasjonInnhold: I denne �velsen tar vi utgangspunkt i den komponentvise de�nisjonen avmatrisemultiplikasjon, og ser p�a hvordan multiplikasjonen kan beskrives p�a alternativem�ater ved hjelp av radene eller s�ylene i matrisene.Begreper: matrisemultiplikasjon, line�rkombinasjoner av vektorer.Matlab: matriser, kolon-indeksering for rad- og s�yleoperasjoner.�velse 2: Egenskaper ved determinanterInnhold: I denne �velsen studerer vi egenskaper ved determinanter og hvordan dissep�avirkes av element�re radoperasjoner p�a matrisen. Vi ser ogs�a p�a determinanten til�vre- og nedre-triangul�re matriser, identitetsmatriser og permutasjonsmatriser.Begreper: determinanter, �vre og nedre triangul�re matriser, permutasjonsmatriser,identitetsmatriser.Matlab: matriser, kolon-indeksering for rad- og s�yleoperasjoner, for-l�kker, tilfeldiggenererte matriser, triangul�re matriser.

iv

Page 7: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Lab 1: Line�ravbildninger og matriseravKlara HvebergI denne laboratorie�velsen skal vi se n�rmere p�a sammenhengen mellom line�re av-bildninger og matriser. Vi skal bruke plottefunksjonen i Matlab til �a tegne opp uliketodimensjonale �gurer og se hvordan avbildningene virker p�a dem. I tillegg til�a bli kjentmed matriserepresentasjonen til enkle line�ravbildninger, vil du f�a trening i�a lage skriptog funksjoner i Matlab (og bruke for-l�kker). Flere av Matlab-funksjonene i dennelab�velsen kan lastes ned fra adressen http://www.math.uio.no/~klara/matlab/.Opptegning av enkle �gurerHvis vi har to n-dimensjonale vektorer x = (x1; x2; : : : ; xn) og y = (y1; y2; : : : ; yn) kanvi (som du sikkert husker) bruke Matlab-kommandoen>> plot(x,y)til �a lage en strektegning som starter i punktet (x1; y1) og forbinder dette punktet medpunktet (x2; y2) ved en rett strek, tegner en ny rett strek fra (x2; y2) til (x3; y3) osv.For �a tegne opp et kvadrat, kan vi derfor angi koordinatene til de �re hj�rnepunktene(i den rekkef�lgen vi vil at Matlab skal forbinde dem) og f�a Matlab til �a tegne innrette streker fra ett hj�rnepunkt til det neste.La oss si at vi �nsker �a f�a Matlab til �a tegne opp kvadratet med hj�rner i punktene(0; 0), (0; 4), (4; 4) og (4; 0). Vi m�a da lage en vektor x som best�ar av f�rstekomponentenetil de �re hj�rnepunktene og en vektor y som best�ar av andrekomponentene (og for �af�a tegnet opp et fullstendig kvadrat, m�a vi avslutte med samme hj�rnepunkt som vistartet i).>> x=[0 0 4 4 0];>> y=[0 4 4 0 0];Vi kan n�a tegne opp kvadratet i et kvadratisk aksesystem hvor skalaene er satt til[-10 10] i begge retninger ved kommandoene>> plot(x,y) % trekker linje mellom punktene>> axis([-10 10 -10 10])>> axis('square')N�ar vi etter hvert skal tegne opp mer kompliserte �gurer som inneholder ere plot-tepunkter (la oss si n stykker), og studere hvordan ulike line�ravbildninger virker p�adisse �gurene, er det mer oversiktlig �a kunne angi plottepunktene i en (2� n)-matrisehvor f�rste rad best�ar av f�rstekoordinatene til punktene og andre rad best�ar av andre-koordinatene. Hver s�yle i matrisen skal alts�a representere et plottepunkt, og matrisentil kvadratet ovenfor vil alts�a v�re (2� 5)-matrisen>> K = [0 0 4 4 00 4 4 0 0]For �a f�a Matlab til �a plotte kvadratet gir vi n�a kommandoene 1

Page 8: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

2 Lab 1: Line�ravbildninger og matriser>> x=K(1,:); % x-vektor skal v�re f�rste rad i matrisen K>> y=K(2,:); % y-vektor skal v�re andre rad i matrisen K>> plot(x,y) % trekker linje mellom punktene>> axis([-10 10 -10 10])>> axis('square')For�a slippe�a gjenta disse plotte-kommandoene hver gang vi skal tegne en ny �gur, vil vilage enMatlab-funksjon tegn som kan kalles med en hvilken som helst (2�n)-matriseX som inn-parameter, og som tegner opp den tilsvarende �guren. P�a m-�len tegn.mlegger vi f�lgende Matlab-kode:function tegn(X)% Denne funksjonen tar som inn-parameter en matrise% X med 2 rader og et vilk�arlig antall s�yler.% Funksjonen tegner hver s�yle som et punkt i% planet og forbinder punktene etter tur med linjestykker.% Skalaen er satt til [-10, 10] i begge retninger.x = X(1,:);y = X(2,:);plot(x, y, 'b-') % trekker bl�a linje mellom punkteneaxis([-10 10 -10 10])axis('square')Etter �a ha de�nert matrisen K som inneholder plottepunktene, kan vi n�a f�a tegnet oppkvadratet med kommandoen>> tegn(K)Istedenfor �a de�nere matrisen K direkte i kommandovinduet, kan vi ogs�a lage en litenMatlab-funksjon kvadrat som returnerer matrisen som inneholder plottepunktene forkvadratet. Da legger vi f�lgende kode p�a �len kvadrat.m:function X = kvadrat% Returnerer en matrise X med data for tegning av et kvadratX = [0 0 4 4 00 4 4 0 0];Vi kan n�a bruke funksjonen kvadrat som inn-parameter til funksjonen tegn, og f�aMatlab til �a tegne kvadratet ved �a gi kommandoen>> tegn(kvadrat)Det kan kanskje virke un�dvendig omstendelig�a de�nere slikeMatlab-funksjoner barefor �a tegne opp et kvadrat, men fordelen er at vi n�a lett kan studere hvordan multipli-kasjon med ulike (2� 2)-matriser A virker inn p�a kvadratet. Siden funksjonen kvadratreturnerer en (2 � 5)-matrise, kan vi utf�re matrisemultiplikasjonen A*kvadrat for envilk�arlig (2�2)-matrise A og f�a en ny (2�5)-matrise som inneholder \bildene" av plot-tepunktene i kvadrat etter line�rtransformasjonen representert ved matrisen A. For �af�a Matlab til �a tegne opp et bilde av de transformerte punktene, kan vi alts�a sendemed (2 � 5)-matrisen A*kvadrat som inn-parameter til funksjonen tegn. Vi tester utdette for matrisen

Page 9: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Opptegning av enkle �gurer 3>> A=[-2 00 1]>> tegn(A*kvadrat)Vi ser n�a at multiplikasjon med matrisen A har forvandlet kvadratet til et rektangel,og yttet det mot venstre. Det er imidlertid vanskelig �a se n�yaktig hvordan dette harskjedd uten �a kunne f�lge med p�a hvor de enkelte hj�rnepunktene er yttet. Vi skalderfor lage en alternativ tegne-funksjon som ogs�a markerer to fritt valgte plottepunkteri forskjellige farger. N�ar vi allerede har laget en m-�l tegn.m, er det lett �a f�ye tildet lille som trengs for �a gj�re dette, og lagre koden p�a en ny m-�l som vi kallertegnmedpunkter.m.function tegnmedpunkter(X,m,n)% Denne funksjonen fungerer p�a samme m�ate som funksjonen tegn,% bortsett fra at den i tillegg tar to tall m og n som inn-parametre,% og markerer plottepunkt nr. m og n med hhv r�d og gr�nn sirkelx = X(1,:);y = X(2,:);plot(x,y,'b-',x(m),y(m),'or',x(n),y(n),'og')axis([-10 10 -10 10])axis('square')% Plottekommandoen ovenfor har samme virkning som kommandoene:% plot(x, y, 'b-') % trekker bl�a linje mellom punktene% hold on % neste plott kommer n�a i samme figur% plot(x(m),y(m),'or') % markerer punkt nr m med r�d sirkel% plot(x(n),y(n),'og') % markerer punkt nr n med gr�nn sirkel% hold off % ingen flere plott skal inn i samme figurVi kan n�a f�a markert hj�rnene (0; 4) og (4; 0) (plottepunkt nr 2 og nr 4) med henholdsvisen r�d og en gr�nn sirkel ved �a gi kommandoen>> tegnmedpunkter(kvadrat,2,4)For�a unders�ke hva som egentlig skjer med kvadratet n�ar vi multipliserer med matrisenA, gir vi kommandoen>> tegnmedpunkter(A*kvadrat,2,4)Vi ser n�a at kvadratet er blitt til et rektangel ved at det er speilet om y-aksen ogstrukket med en faktor 2 i x-retningen. For �a f�a bekreftet hva som har skjedd med deopprinnelige hj�rnepunktene i kvadratet, kan vi se p�a plottepunktene i den nye matrisen>> A*kvadratVed�a sammenligne med de opprinnelige plottepunktene fra funksjonen kvadrat, ser viat multiplikasjon med matrisen A har f�rt til at alle x-koordinatene har skiftet fortegn ogblitt dobbelt s�a store, mens y-koordinatene er de samme som f�r. Men dette tilsvarer jonettopp at alle punktene er speilet om y-aksen og yttet dobbelt s�a langt i x-retningen.Oppgave 1Lag m-�lene kvadrat.m og tegn.m som beskrevet ovenfor (hvis du ikke allerede har gjortdet). Bruk kommandoen tegn(A*kvadrat) til �a studere hva som skjer med kvadratetn�ar matrisen A er henholdsvis

Page 10: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

4 Lab 1: Line�ravbildninger og matrisera) A = � 2 00 2�b) A = � 2 00 1�c) A = � 1 00 �1�d) A = � 1 00 0�e) A = � 1 0:50 1 �f) A = �p2=2 �p2=2p2=2 p2=2 �Beskriv hva som skjer med kvadratet i hvert enkelt tilfelle (du kan eventuelt brukefunksjonen tegnmedpunkt hvis du synes det er vanskelig �a se hva som skjer), og fors�k�a forklare hvorfor multiplikasjon med matrisen gir denne virkningen.SkaleringsmatriserVi skal n�a bruke metoden fra forrige avsnitt til �a tegne opp en litt mer komplisert �gur.P�a m-�la hus.m legger vi f�lgende plottepunkter for opptegning av et hus (tegn innpunktene p�a et papir f�rst for �a v�re sikker p�a at du forst�ar hvordan opptegningenforeg�ar):function X = hus% Lager en matrise X som inneholder data for tegning av et hus.% Kan f.eks kalles med tegn(A*hus) for ulike 2*2-matriser AX = [0 -7 -6 -6 3 3 0 0 6 6 7 08 1 2 -8 -8 -3 -3 -8 -8 2 1 8];Vi f�ar n�a Matlab til �a tegne opp huset ved �a gi kommandoen>> tegn(hus)Oppgave 2Finn en matrise slik at mulitiplikasjon med matrisena) gj�r huset halvparten s�a stortb) gj�r huset halvparten s�a bredtc) gj�r huset halvparten s�a h�ytTegn i hvert tilfelle opp det nye huset ved �a bruke kommandoen>> tegn(A*hus)SpeilingsmatriserP�a �la baat.m legger vi f�lgende data for opptegning av en seilb�at (igjen b�r du startemed �a tegne inn punktene p�a et papir s�a du skj�nner hvordan �guren fremkommer).function X = baat% Lager en matrise X som inneholder data for tegning av en b�at.% Kan f.eks kalles med tegn(A*baat) for ulike 2*2matriser AX = [ 0 7 4 -4 -7 0 0 2 0 5 0-4 -4 -7 -7 -4 -4 8 6 6 -2 -2];P�a samme m�ate som tidligere kan vi tegne opp b�aten med kommandoen>> tegn(baat)

Page 11: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Speiling, rotasjoner og sammensetning av avbildninger 5Oppgave 3a) Finn en matrise A slik at mulitiplikasjon med A f�ar b�aten til�a seile i motsatt retning.b) Finn en speilingsmatrise A som f�ar b�aten til �a kullseile (dvs vipper b�aten oppned).Tegn opp resultatene ved hjelp av kommandoen>> tegn(A*baat)Speiling, rotasjoner og sammensetning av avbildningerVi skal n�a leke litt med sammensetning av speilinger og rotasjoner for �a lage ulikemonogrammer av bokstavene M og H. Vi lager f�rst en Matlab-funksjon p�a �la mono-gramMH.m som returnerer en matrise med plottepunktene for�a tegne opp monogrammetMH.function X = monogramMH% Lager en matrise X som inneholder data for tegning av monogrammet MH.% Kan f.eks kalles med tegn(A*monogram) for ulike 2*2-matriser AM = [ 0 -1 -1.7 -3.5 -5.3 -6 -7 -6 -5 -3.5 -2 -1 0-3 -3 1.5 -1.2 1.5 -3 -3 3 3 0.5 3 3 -3];H = [ 0 0 1 1 3 3 4 4 3 3 1 1 0-3 3 3 0.5 0.5 3 3 -3 -3 -0.5 -0.5 -3 -3];X=[M,H]; % Skj�ter sammen de to matrisene med M etterfulgt av H% NB! Har egentlig med punktet (0,-3) en gang mer enn n�dvendig (b�ade% i slutten av M og i starten av H) n�ar vi skj�ter sammen bokstavene,% men det er lettere �a se hvordan bokstavene M og H fremkommer p�a% denne m�aten.Vi f�ar n�a tegnet opp monogrammet MH ved �a gi kommandoen>> tegn(monogramMH)Som i de foreg�aende seksjonene skal vi visualisere hva som skjer med plottepunktene n�arvi multipliserer med ulike (2 � 2)-matriser A. La oss si at vi �nsker at monogrammetMH skal skrives med skr�astilte bokstaver (kursiv). For at bokstavene skal helle litt moth�yre, m�a vi bruke en skj�r-matrise (shear matrix) som adderer et lite tillegg til x-komponenten, og dette tillegget b�r v�re proporsjonalt med y-komponenten til punktet(slik at det blir mer forskj�vet mot h�yre jo h�yere opp i bokstaven punktet ligger). Vikan for eksempel bruke skj�r-matrisen>> A=[1 0.20 1 ]og sjekke resultatet ved kommandoen>> tegn(A*monogramMH)�nsker vi isteden �a gj�re bokstavene smalere ved �a krympe dem litt i x-retningen, m�avi bruke en skaleringsmatrise som multipliserer alle x-koordinatene med en faktor somer mindre enn 1. Vi kan for eksempel bruke matrisen>> B=[0.8 00 1]og sjekke resultatet ved �a skrive

Page 12: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

6 Lab 1: Line�ravbildninger og matriser>> tegn(B*monogramMH)De to foreg�aende typene matriser har vi v�rt borti tidligere (i oppgave 1), men hvaom vi �nsker �a �nne en matrise som b�ade skr�astiller bokstavene og samtidig gj�r demsmalere? Hvis vi tenker oss at dette gj�res i to trinn, kan vi f�rst lage plottematrisenfor det kursiverte monogrammet ved �a utf�re operasjonen>> A*monogramMHog deretter gj�re det kursiverte monogrammet smalere ved operasjonen>> B*(A*monogramMH)Vi tegner opp resultatet ved �a gi kommandoen>> tegn(B*(A*monogramMH))La oss se hva som skjer hvis vi isteden danner produktmatrisen>> C=B*Aog anvender denne p�a plottepunktene til monogrammet:>> tegn(C*monogramMH)Bemerkning: Dette tilsvarer alts�a�a gi kommandoen>> tegn((B*A)*monogramMH)Vi f�ar akkurat samme resultat som i stad, og ser alts�a at sammensetning av avbildningersvarer til matrisemultiplikasjon av matrisene som representerer operasjonene.Oppgave 4Ta utgangspunkt i monogrammet MH. I hvert av punktene a){c) nedenfor skal du�nne en matrise A (speiling eller rotasjon) slik at mulitiplikasjon med A omdannermonogrammet MH til monogrammeta) HMb) WHc) HWSjekk resultatet i hvert tilfelle ved �a bruke kommandoen>> tegn(A*monogramMH)d) Lag tre sm�aMatlab-funksjoner p�a �lene speilomx.m, speilomy.m og roter180.msom returnerer de speilings- og rotasjonsmatrisene du fant i punkt a){c). Dissefunksjonene kan du benytte i resten av oppgaven.e) I hvert av tilfellene nedenfor skal du �nne en speiling eller rotasjon som- avbilder MH p�a HM- avbilder HM videre p�a WH- avbilder WH videre p�a HWHer kan det v�re nyttig �a spare p�a resultatet fra hvert trinn i en matrise som dus�a kan arbeide videre med i neste trinn. Hvis du i f�rste trinn bruker en matrise A(som returneres av en av de tre funksjonene du laget ovenfor), b�r du alts�a brukekommandoer av typen

Page 13: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Mer om sammensetning og generelle rotasjonsmatriser 7>> monogramHM = A * monogramMH>> tegn(monogramHM)Og i neste trinn>> monogramWH = B * monogramHM>> tegn(monogramWH)osv: : :f) Forklar hvordan resultatene i punkt b) og e) gir oss to m�ater�a avbilde monogrammetMH p�a monogrammet WH. Bruk disse observasjonene til �a �nne en sammenhengmellom speiling om x-aksen i forhold til speiling om y-aksen etterfulgt av en rotasjonp�a 180 grader.g) Sammenlign matrisen fra funksjonen speilomx med matrisen du f�ar ved �a brukekommandoen>> speilomy*roter180Kan du forklare hvordan dette henger sammen med (og underbygger) observasjonenfra punkt f)?h) Finner du ere sammensetninger som er like?Mer om sammensetning og generelle rotasjonsmatriserI denne seksjonen skal vi se n�rmere p�a mer generelle rotasjonsmatriser og sammenset-ninger av slike. Vi skal bruke Matlab til �a illustrere disse rotasjonene i form av beveg-elser til timeviseren p�a en klokke, og starter derfor med �a lage f�lgende skript p�a �laklokkeskive.m for �a tegne opp en klokkeskive med timemark�rer:% Skript: klokkeskive% Tegner opp en sirkul�r klokkeskive med tall som markerer timenet=0:0.05:2*pi;x=6*cos(t);y=6*sin(t);plot(x,y) % tegner sirkelskive med radius 6axis([-10 10 -10 10])axis('square')h=0.3; % for �a h�yrejustere posisjon av tall% pga tekstboksens plasseringtext(5*cos(pi/2)-h,5*sin(pi/2),'12') % setter tall som timemark�rertext(5*cos(pi/3),5*sin(pi/3),'1')text(5*cos(pi/6),5*sin(pi/6),'2')text(5*cos(0),5*sin(0),'3')text(5*cos(-pi/6),5*sin(-pi/6),'4')text(5*cos(-pi/3),5*sin(-pi/3),'5')text(5*cos(-pi/2)-h,5*sin(-pi/2),'6')text(5*cos(4*pi/3),5*sin(4*pi/3),'7')text(5*cos(7*pi/6),5*sin(7*pi/6),'8')text(5*cos(pi),5*sin(pi),'9')text(5*cos(5*pi/6)-h,5*sin(5*pi/6),'10')text(5*cos(2*pi/3)-h,5*sin(2*pi/3),'11')title('Klokke')

Page 14: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

8 Lab 1: Line�ravbildninger og matriser% Vi kunne ogs�a ha brukt en for-l�kke til �a plassere timemark�rene:% for t=1:12% text(5*cos(pi/2-t*pi/6)-h,5*sin(pi/2-t*pi/6),int2str(t))% endVi f�ar n�a tegnet opp klokkeskiven med kommandoen>> klokkeskiveDet neste vi trenger er en timeviser. P�a samme m�ate som i de foreg�aende seksjonenekan vi f�a Matlab til �a tegne en pil som starter i origo og peker rett opp (mot kl 12)ved �a spesi�sere plottepunktene i en matrise, og sende denne som inn-parameter tilfunksjonen tegn (som vi laget i oppgave 1). P�a �la klokkepil.m lager vi derfor enfunksjon klokkepil som returnerer matrisen med plottepunktene for timeviseren.function X = klokkepil% Lager en matrise som inneholder data for tegning av en pil med% lengde 4 som starter i origo og peker rett opp (markerer kl 12).X = [-0.2 -0.2 -0.4 0 0.4 0.2 0.2 -0.20 3 3 3.8 3 3 0 0 ];Vi kan n�a f�a Matlab til �a tegne en klokke der timeviseren peker p�a 12, ved �a gikommandoene>> klokkeskive>> hold on % s�rger for at timeviseren kommer i samme figur>> tegn(klokkepil)>> hold off % ingen flere plott skal i samme figurIdeen er n�a at vi kan f�a timeviseren til �a peke p�a ulike klokkeslett ved hjelp av enrotasjonsmatrise A og kommandoen>> tegn(A*klokkepil)La oss si at vi �nsker at timeviseren skal peke p�a tallet 3. Det betyr at vi m�a dreie den 90grader med klokka (dvs en vinkel p�a ��=2 radianer). For �a �nne rotasjonsmatrisen tilen dreining p�a ��=2 radianer, er det nok�a se p�a hva basisvektorene e1 = (1; 0) og e2 =(0; 1) avbildes p�a, og bruke bildene av disse vektorene som s�yler i rotasjonsmatrisen.Dreier vi vektoren e1 = (1; 0) en vinkel p�a ��=2 radianer, havner den p�a vektoren(0;�1). Dette er alts�a f�rste s�yle i rotasjonsmatrisen. Tilsvarende havner vektorene2 = (0; 1) p�a vektoren (1; 0) n�ar vi dreier den en vinkel p�a ��=2 radianer, s�a andres�yle i rotasjonsmatrisen er (1; 0). Det betyr at rotasjonsmatrisen for vinkelen ��=2 er>> A = [ 0 1-1 0]Vi kan sjekke at vi har funnet den riktige matrisen ved �a bruke kommandoen>> tegn(A*klokkepil)for �a se at vi n�a f�ar en pil som peker rett mot h�yre.Generelt er det gjerne litt mer arbeid �a �nne rotasjonsmatrisen til en vinkel, selv omdu kan bruke samme fremgangsm�ate som ovenfor (men for �a �nne koordinatene tilbilledvektorene m�a du benytte cosinus og sinus til rotasjonsvinkelen).

Page 15: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Filmer ved hjelp av for-l�kker 9Oppgave 5a) Finn matriser A og B slik at mulitiplikasjon medi) matrisen A dreier viseren en time fremii) matrisen B dreier viseren to timer fremHer skal du selv beregne rotasjonsmatrisene til de aktuelle vinklene ved hjelp avmetoden beskrevet ovenfor (se p�a bildet av basisvektorene under den aktuelle drei-ningen).Sjekk resultatene ved �a bruke kommandoene>> klokkeskive>> hold on>> tegn(A*klokkepil) % Bytt ut A med B i punkt ii)>> hold offb) Forklar hvordan du istedenfor �a beregne rotasjonsmatrisen B direkte slik du gjordeovenfor, kan benytte (en potens av) matrisen A til �a dreie viseren to timer frem.c) Lag en funksjon roter som tar en vinkel v (i radianer) som inn-parameter ogreturnerer rotasjonsmatrisen til vinkelen v. P�a �len roter.m legger du alts�a enfunksjon som starter medfunction X = roter(v)Test funksjonen ved �a bruke den til �a tegne opp en klokke hvor viseren peker p�a ettog en klokke hvor viseren peker p�a fem. Til dette kan du bruke kommandoen>> tegn(roter(t*(-pi)/6)*klokkepil)for passende verdier av t.d) Forklar hvordan du isteden kan dreie timeviseren t timer frem ved hjelp av rotasjons-matrisen A fra punkt a) og utf�r dette for de to klokkeslettene i punkt c). Hvilkenav de to metodene krever est regneoperasjoner?Filmer ved hjelp av for-l�kkerVi skal avslutte denne laboratorie�velsen med�a bruke funksjonene vi allerede har lagettil �a simulere en klokke som tikker og g�ar. Dette gir en enkel illustrasjon av hvordan vikan bruke for-l�kker i Matlab.For �a illustrere ideen skal vi f�rst se et eksempel p�a en for-l�kke som f�ar b�aten fraoppgave 2 til �a seile av sted over �gurvinduet fra h�yre mot venstre. B�atens for ytninger riktignok ikke en line�ravbildning i planet og kan derfor ikke uttrykkes ved multi-plikasjon med en 2 � 2-matrise (se bemerkningen helt til slutt i dette avsnittet), meneksemplet illustrerer hvordan vi kan bruke for-l�kker til �a generere bilder i bevegelse.P�a �len seilendebaat.m legger vi f�lgende skript:% Skript: seilendebaat% Viser en b�at som seiler av sted fra h�yre billedkant mot venstre.% Henter inn plottepunktene til b�aten fra matrisen generert av% skriptet baat.m% Tegner opp alt i et aksesystem med skala [-10 10] i begge retninger% ved hjelp av funksjonen tegn.mB=baat; % leser inn plottepunktene fra baat.m

Page 16: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

10 Lab 1: Line�ravbildninger og matriserX=1/4*[B(1,:)+32; B(2,:)]; % krymper b�aten og plasserer den i h�yre% billedkanttegn(X); % tegner det f�rste bildet av b�atenfor t=1:160X=[X(1,:)-0.1; X(2,:)]; % flytter b�aten skrittvis mot venstretegn(X); % tegner b�aten i den nye posisjonenpause(0.05) % venter 0.05 sek f�r neste bilde tegnesendDenne \�lmsnutten" kan n�a kj�res ved �a gi kommandoen>> seilendebaatOppgave 6Bruk fremgangsm�aten ovenfor til �a lage et skript p�a �la tikkendeklokke.m som tegneropp en en klokke som g�ar en runde med timeviseren. Du kan f.eks la klokka g�a med enfart p�a 1 time per sekund ved �a benytte kommandoen>> pause(1)som venter ett sekund f�r neste bilde tegnes.Bemerkning om translasjoner for spesielt interesserteSom vi var inne p�a da vi skulle generere �lmsnutten med den seilende b�aten, er entranslasjon (for ytning i x-retningen og/eller y-retningen) i planet ikke en line�rtrans-formasjon (alle line�re avbildninger sender origo p�a origo) og kan derfor ikke uttrykkesved multiplikasjon med en (2 � 2)-matrise. Det �nnes imidlertid et nyttig triks somgj�r at vi kan uttrykke slike translasjoner ved hjelp av matriser likevel. Ved �a g�a oppen dimensjon og benytte (3 � 3)-matriser, kan vi �nne en matrise som �kser jobben.Vi benytter det som kalles homogene koordinater, som grovt sagt betyr at vi iste-denfor �a se p�a punktene (x; y) i xy-planet, l�fter planet ett hakk opp og ser p�a detilsvarende punktene (x; y; 1) i det parallelle planet z = 1. Enhver line�ravbildning avpunktet (x; y) i det opprinnelige planet kunne oppn�as ved multiplikasjon med en (2�2)-matrise A=[a b; c d], og den tilsvarende avbildningen av det korresponderende punk-tet (x; y; 1) i det l�ftede planet z = 1 oppn�as n�a ved multiplikasjon med (3�3)-matrisenB=[a b 0; c d 0; 0 0 1]. Men ved �a g�a opp en dimensjon har vi i tillegg f�attmulighet til �a translatere punktet (x; y; 1): For �a ytte punktet h enheter bortoveri x-retningen, multipliserer vi bare med matrisen X=[1 0 h; 0 1 0; 0 0 1], og for�a ytte punktet k enheter bortover i y-retningen, multipliserer vi med matrisenY=[1 0 0; 0 1 k; 0 0 1].Litt om animasjonerHvis du �nsker �a lage en �lmsnutt som skal spilles av ere ganger, kan det v�re lurt �alage en animasjon. Dette gj�res ved at vi etter hvert plott lagrer plottet i en strukturF ved kommandoen>> F(t)=getframe; % plott nummer t lagres i F(t)Etterp�a kan vi da spille av animasjonen s�a mange ganger vi vil med kommandoen

Page 17: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Litt om animasjoner 11>> movie(F,k,m)hvor k angir angir antall ganger �lmen skal kj�res, og m angir antall �gurer som skalvises per sekund.For �a lage en animasjon av den seilende b�aten i det forrige eksemplet, bruker vi dakommandoene:>> B=baat;>> X=1/4*[B(1,:)+32; B(2,:)];>> for t=1:160X=[X(1,:)-0.1; X(2,:)];tegn(X)F(t)=getframe; % lagrer hvert plott i strukturen FendVi kan n�a spille av animasjonen i passe tempo med kommandoen>> movie(F,1,20)Oppgave 7 (ekstraoppgave)Lag en animasjon av den tikkende klokken.

Page 18: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

12 Lab 1: Line�ravbildninger og matriser

Page 19: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Lab 2: Gauss-eliminasjonavKlara HvebergI denne laboratorie�velsen skal vi se p�a hvordan vi kan lage Matlab-funksjoner somutf�rer Gauss-eliminasjon p�a matriser, dvs som bringer dem p�a trappeform ved hjelpav element�re radoperasjoner. I tillegg til at du m�a tenke gjennom hvordan Gauss-eliminasjon kan beskrives p�a en systematisk m�ate som kan programmeres, vil du f�atrening i�a brukeMatlab til�a utf�re radoperasjoner p�a en matrise, og i�a lage funksjonermed for-l�kker eller while-l�kker.Hvis du f�ler at du har god kontroll p�a Gauss-eliminasjon og ikke vil ha hjelp til pro-grammeringen, kan du godt hoppe over innledningen og g�a rett l�s p�a oppgave 3 og4, hvor du f�rst skal lage en funksjon som bringer en vilk�arlig matrise over p�a trappe-form, og deretter en som bringer matrisen p�a redusert trappeform (uten �a bruke deninnebygde Matlab-funksjonen rref).Gauss-eliminasjon (enkel versjon uten ombytting av rader)Vi husker at Gauss-eliminasjon bruker radvise operasjoner til �a bringe en matrise overp�a s�akalt trappeform, dvs en form hvori) det ledende elementet (dvs. det f�rste elementet som ikke er null) i en rad alltid st�arlenger til h�yre enn det ledende elementet i raden ovenfor.ii) eventuelle nullrader er samlet i bunnen av matrisenLa oss starte med�a repetere hvordan vi utf�rer Gauss-eliminasjon p�a en konkret matriseA = 0@ 6 �2 09 �1 13 7 51AV�ar f�rste oppgave er�a s�rge for at vi har et ikke-trivielt pivot-element (alts�a et elementforskjellig fra null) i posisjon (1; 1) i f�rste s�yle og ska�e oss nuller under dette elementetved �a trekke passende multiplum av f�rste rad ifra radene nedenfor. Siden A(1; 1) = 6,betyr det at vi m�a trekke A(2; 1)=A(1; 1) = 9=6 = 3=2 av f�rste rad fra andre rad for �af�a null i posisjonen under pivot-elementet, s�a vi utf�rer kommandoene>> k=A(2,1)/A(1,1);>> A(2,:)=A(2,:) - k*A(1,:)Deretter s�rger vi for �a f�a null i tredje rad ved �a trekke A(3; 1)=A(1; 1) = 3=6 = 1=2 avf�rste rad fra tredje rad>> k=A(3,1)/A(1,1);>> A(3,:)=A(3,:) - k*A(1,:)Vi st�ar n�a igjen med matrisen A = 0@ 6 �2 00 2 10 8 51Aog er alts�a ferdig med �a ska�e oss nuller under pivot-elementet i f�rste s�yle. Vi g�arn�a videre til andre s�yle hvor pivot-elementet er A(2; 2) = 2. For �a ska�e oss nuller i13

Page 20: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

14 Lab 2: Gauss-eliminasjons�ylen under pivot-elementet, m�a vi n�a bare trekke A(3; 2)=A(2; 2) = 8=2 = 4 gangerandre rad fra tredje rad>> k=A(3,2)/A(2,2);>> A(3,:)=A(3,:) - k*A(2,:)Vi st�ar n�a igjen med matrisen A = 0@ 6 �2 00 2 10 0 11Aog er alts�a ferdig med �a bringe matrisen over p�a trappeform.Algoritmen vi fulgte ovenfor kan oppsummeres i f�lgende programskisse:FOR <hver s�yle, bortsett fra den siste som godt kan droppes>FOR <hver rad nedenfor pivot-raden><beregn hvilket multiplum av pivot-raden vi m�a trekke fra radenvi er i for �a nulle ut elementet i s�ylen under pivot-posisjonen><trekk fra det riktige multiplumet av pivot-raden>ENDENDOppgave 1Lag et skript gaussA som utf�rer Gauss-eliminasjon p�a matrisenA = 0@ 6 �2 09 �1 13 7 51Aved hjelp av for-l�kker (bruk to for-l�kker n�stet inni hverandre). Matlab skal alts�ai hvert trinn selv regne ut de riktige multiplumene av pivotraden som skal trekkes fraradene nedenfor.Oppgave 2Bruk ideen fra skriptet i forrige oppgave til �a lage en Matlab-funksjon gauss somtar en matrise A som inn-parameter, utf�rer Gauss-eliminasjon og returnerer matrisenp�a trappeform. Du kan forutsette at matrisen A kan bringes p�a trappeform uten atdu st�ter p�a null-elementer i pivot-posisjoner underveis. Det betyr at du �nner pivot-elementene p�a hoveddiagonalen i posisjonene (j; j). Du kan ogs�a anta at matrisen erkvadratisk, hvis du synes det gj�r oppgaven lettere. Du trenger ikke �a lage en robustfunksjon som sjekker at disse antagelsene er oppfylt for matrisen A. Kommandoen>> [m,n]=size(A)kan brukes til �a lese inn dimensjonen til matrisen A.Gauss-eliminasjon med ombytting av raderI eksemplet i forrige avsnitt var vi \heldige" og unngikk �a st�te p�a null-elementer ipivot-posisjoner underveis i prosessen. Generelt m�a vi imidlertid regne med �a st�te p�aslike null-elementer, og m�a da lete etter et ikke-trivielt element lenger nede i sammes�yle. Hvis vi �nner et slikt ikke-trivielt element, ytter vi dette opp i pivot-posisjonen

Page 21: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Gauss-eliminasjon med ombytting av rader 15ved �a bytte om rader i matrisen. Hvis det bare st�ar nuller under nullelementet i pivot-posisjonen, g�ar vi videre til neste s�yle, men begynner da �a lete etter pivot-elementet isamme rad som vi lette i forrige s�yle. Det betyr at pivot-posisjonen i s�yle nr j ikken�dvendigvis lenger er posisjonen (j; j) p�a hoveddiagonalen (trappetrinnene har ikken�dvendigvis dybde 1), s�a vi m�a f�re regnskap med radindeksen og s�yleindeksen hverfor seg.La oss starte med �a se p�a et eksempel hvor det dukker opp et null-element i en pivot-posisjon, og hvor alle elementene i s�ylen nedenfor er null. Vi ser p�a matrienA = 0@ 0 0 75 �5 101 �1 6 1AV�ar f�rste oppgave er �a pr�ve �a ska�e et ikke-trivielt pivot-element (alts�a et elementforskjellig fra null) i posisjon (1; 1) i f�rste s�yle. Vi leter da nedover i f�rste s�yle etteret ikke-trivielt element, og �nner dette i rad nr 2. Vi kan derfor ska�e oss et ikke-trivieltpivot-element ved �a bytte om f�rste og andre rad:>> A([1 2],:)=A([2 1],:)Matrisen v�ar er n�a p�a formen A = 0@ 5 �5 100 0 71 �1 6 1Aog vi ska�er oss nuller under pivot-elementet i f�rste s�yle ved �a trekke passende mul-tiplum av f�rste rad ifra radene nedenfor. Vi har allerede null i posisjonen rett underpivot-elementet, og trenger derfor ikke �a gj�re noe med rad nr 2. For �a f�a null i tredjerad, trekker vi A(3; 1)=A(1; 1) = 1=5 av f�rste rad fra tredje rad>> k=A(3,1)/A(1,1);>> A(3,:)=A(3,:) - k*A(1,:)Vi st�ar n�a igjen med matrisen A = 0@ 5 �5 100 0 70 0 4 1Aog er alts�a ferdig med�a ska�e oss nuller under pivot-elementet i f�rste s�yle. Vi g�ar n�avidere til andre s�yle og leter etter et pivot-element i posisjon (2; 2). Siden elementetA(2; 2) er null, leter vi nedover i s�ylen etter et ikke-trivielt element �a ytte opp. Menalle elementene nedenfor er ogs�a null, s�a vi har ikke noe�a utrette i denne s�ylen. Vi g�arderfor videre til s�yle nr 3 og leter denne gangen etter et pivot-element i posisjon (2; 3)(vi be�nner oss alts�a ikke lenger p�a diagonalen, men leter videre i samme rad som vistartet p�a i forrige s�yle). Her �nner vi et ikke-trivielt element A(2; 3) = 7, og nuller utelementet nedenfor i samme s�yle ved �a trekke A(3; 3)=A(2; 3) = 4=7 ganger andre radfra tredje rad>> k=A(3,3)/A(2,3);>> A(3,:)=A(3,:) - k*A(2,:)

Page 22: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

16 Lab 2: Gauss-eliminasjonVi st�ar n�a igjen med matrisen A = 0@ 5 �5 100 0 70 0 0 1Aog er alts�a ferdig med�a bringe matrisen over p�a trappeform. Eksemplet illustrerer at vigjennoml�per s�ylene etter tur p�a samme m�ate som i forrige avsnitt, men at vi dennegangen ogs�a m�a holde styr p�a radene: vi skal �ke radindeksen med 1 dersom pivot-elementet vi �nner (etter eventuell ombytting av rader) er forskjellig fra null, men laradindeksen forbli den samme dersom vi bare f�ar et null-element i pivot-posisjonen.Vi skal n�a se hvordan vi kan modi�sere funksjonen gauss (fra oppgave 2) til �a taklematriser hvor vi ogs�a kan st�te p�a null-elementer i pivot-posisjoner og m�a bytte omrader underveis. Ideen er alts�a at hver gang vi st�ter p�a et slikt null-element A(i; j) = 0i en pivot-posisjon, leter vi etter ikke-trivielle elementer nedenfor dette nullelementeti s�yle nr j. Dersom vi �nner et slikt ikke-trivielt element A(p; j) 6= 0, bytter vi omradene p og i, og fortsetter som i den opprinnelige funksjonen.Ved vanlig Gauss-eliminasjon st�ar vi fritt til �a bytte om rad j og en hvilken som helstrad nedenfor som har et ikke-trivielt element i s�yle nr j (ved programmering kan vif.eks bestemme oss for �a bytte med den f�rste aktuelle raden vi �nner). For �a redusereavrundingsfeilene l�nner det seg imidlertid �a velge rad nr p p�a en slik m�ate at A(p; j)er st�rst mulig i absoluttverdi. Dersom vi alltid velger p p�a denne m�aten (uansettom det opprinnelige elementet i pivot-posisjonen er null eller ikke) kalles prosedyrenGauss-eliminasjon med delvis pivotering. Denne prosedyren er enkel �a implementere iMatlab ved hjelp av en ferdig innebygd funksjon max som �nner det st�rste elementeti en s�ylevektor. Kommandoen>> [maksverdi,p]=max(y)returnerer det maksimale elementet maksverdi i s�ylevektoren y og nummeret p tilraden hvor dette elementet be�nner seg.Gauss-eliminajon med delvis pivoteringVi kan n�a skissere en algoritme for �a utf�re Gauss-eliminasjon med delvis pivotering.For �a legge oss n�rmest mulig opp til den enkle algoritmen vi skisserte f�r oppgave 1,skal vi basere oss p�a for-l�kker. Dette krever imidlertid at vi i visse situasjoner m�aavbryte en l�kke ved hjelp av kommandoen break, og noen synes kanskje at dette erlite elegant programmering. I l�sningsforslaget vil du derfor ogs�a �nne et alternativ sombaserer seg p�a en while-l�kke.ProgramskisseFOR <hver s�yle><finn elementet med st�rst absoluttverdi i s�ylen under pivoten><beregn nummeret q til raden som inneholder dette st�rste elementet><bytt om den opprinnelige pivot-raden med rad nr. q>HVIS <pivot-elementet ikke er null>FOR <hver rad nedenfor pivot-raden><beregn hvilket multiplum av pivot-raden vi m�a trekke fra radenvi er i for �a nulle ut elementet i s�ylen under pivoten><trekk fra det riktige multiplumet av pivot-raden>

Page 23: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Gauss-Jordan-eliminasjon 17END % FOR<�k radindeksen med 1 for �a lete etter neste pivot i raden nedenfor.><avbryt l�kken dersom radindeksen blir st�rre enn antall rader>END % HVIS% (Hvis elementet i pivot-posisjonen er null, vet vi (siden dette er% elementet med maksimal absoluttverdi i s�ylen) at alle elementer i% s�ylen er null, s�a vi fortsetter bare til neste s�yle uten �a% oppdatere radindeksen)END % FOROppgave 3Lag en Matlab-funksjon gauss delpiv som tar en vilk�arlig (m � n)-matrise A sominn-parameter, utf�rer Gauss-eliminasjon med delvis pivotering p�a den og returnerermatrisen p�a trappeform. Husk at du kan ha nytte av kommandoen>> [maksverdi,p] = max(abs(A(j:n,j)));Du kan f�lge programskissen ovenfor, men kan gjerne bruke en while-l�kke isteden hvisdu synes det gir penere programmering.Gauss-Jordan-eliminasjonHittil har vi bare laget funksjoner som bringer en matrise over p�a trappeform ved hjelpav Gauss-eliminasjon. I dette avsnittet skal vi se hvordan vi kan utvide disse til enfunksjon som bringer matrisen p�a redusert trappeform, dvs en trappeform hvor vi (itillegg til krav i) og ii) til en matrise p�a trappeform, har f�lgende krav oppfylt:iii) alle ledende elementer er 1-ereiv) i hver pivot-s�yle er alle elementer null bortsett fra pivot-elementetDette oppn�as gjerne ved s�akalt bakoverreduksjon, dvs at vi etter �a ha f�att matrisen p�atrappeform starter i nederste rad og ska�er oss nuller over pivot-elementet (hvis det�ns et) i denne raden. Deretter gj�r vi det samme over pivot-elementet i nest nedersterad osv. oppover. Fordelen med denne metoden er at vi ska�er nuller som vi drarmed oss og har nytte av i senere utregninger etter hvert som vi jobber oss oppover(og dette gj�r jobben mye lettere n�ar vi utf�rer regningene for h�and). N�ar vi skalprogrammere, er det imidlertid enklere �a gj�re disse operasjonene underveis i Gauss-eliminasjonen. Da trenger vi bare et par linjer ekstra med programkode for �a gj�refunksjonen gauss delpiv om til en funksjon som utf�rer Gauss-Jordan-eliminasjon ogbringer matrisen over p�a redusert trappeform.Oppgave 4Utvid funksjonen gauss delpiv til en funksjon gauss jordan som tar en matrise Asom inn-parameter, utf�rer Gauss-Jordan-eliminasjon p�a den og returnerer matrisen p�aredusert trappeform.Hint: Du m�a s�rge for to ting:i) Gj�r alle pivot-elementene til 1-ere ved �a dele pivot-raden med pivot-elementet.ii) Ska� nuller i s�ylen over hvert pivot-element ved �a trekke et passende multiplum avpivot-raden fra radene ovenfor.

Page 24: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

18 Lab 2: Gauss-eliminasjon

Page 25: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Lab 3: Line�r uavhengighetavKlara HvebergI denne laboratorie�velsen skal vi se p�a hvordan vi kan bruke den reduserte trappefor-men til en matrise for �a unders�ke om s�ylene i matrisen er line�rt uavhengige, ommatriseligninger av typen Ax = b er konsistente, og om de i s�a fall har en eller erel�sninger. I tillegg til�a gi deg en test p�a om du har f�att med deg sammenhengen mellomdisse begrepene, vil lab�velsen gi deg trening i �a lage Matlab-funksjoner som er littmer omfattende enn de du har laget tidligere.La oss starte med �a repetere et par grunnleggende begreper som du vil f�a bruk for idenne �velsen. Vi sier at vektorene v1;v2; : : : ;vn er line�rt uavhengige dersom ligningenx1v1+x2v2+ � � �+xnvn = 0 bare har den trivielle l�sningen x1 = x2 = � � � = xn = 0. Imotsatt fall sier vi at vektorene er line�rt avhengige, og en av vektorene kan da uttrykkessom en line�r kombinasjon av de �vrige. Et ligningssystem er konsistent dersom dethar minst �en l�sning og inkonsistent dersom det ikke har noen l�sning.I ere av oppgavene kan du ha nytte av boolske variabler som antar en sannhetsverdi(true eller false). Slike variabler er ikke omtalt i Matlab-heftet, men du kan �nneut mer om dem ved �a gi kommandoen>> help logical�nsker du en boolsk variabel som heter avhengig og som skal tilordnes verdien true,skriver du bare>> avhengig = true % her bruker vi enkelt likhetstegn for tilordningDa kan du senere teste sannhetsverdien til denne variabelen i en if-setning ved �a skrive>> if avhengig==true % her bruker vi dobbelt likhetstegn for testingeller ved �a bruke den kortere varianten>> if avhengigHvis du ikke er s�a glad i�a programmere, �nner du halvferdige programbiter i seksjonenmed hint, hvor du bare trenger �a fylle ut noen vesentlige linjer som tester den mate-matiske forst�aelsen av problemet. Du l�rer imidlertid mye mer av �a pr�ve �a sette oppstrukturen i programmet p�a egen h�and f�rst.Oppgave 1Lag en Matlab-funksjon linavh som tar en vilk�arlig matrise A som inn-parameter,og som skriver ut den reduserte trappeformen til matrisen sammen med beskjed omhvorvidt s�ylene i matrisen er line�rt avhengige eller line�rt uavhengige. Her er poengetat du bare skal bruke informasjon fra trappematrisen (og du har derfor f.eks ikke lov til�a bruke den innebygde Matlab-funksjonen rank selv om du skulle kjenne til begrepet\rangen til en matrise"). Du kan bruke den innebygde Matlab-funksjonen rref(A)for �a bringe en matrise p�a redusert trappeform. For �a �nne dimensjonen til en matrise,kan du bruke kommandoen [m,n]=size(A). 19

Page 26: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

20 Lab 3: Line�r uavhengighetOppgave 2Lag en Matlab-funksjon inkons som tar en vilk�arlig matrise A og en vektor b sominn-parametre, og som skriver ut den reduserte trappeformen til den utvidete matrisen[A;b] sammen med beskjed om hvorvidt matriseligningen Ax = b er konsistent ellerinkonsistent. (Hvis systemet er konsistent, trenger ikke denne funksjonen�a avgj�re hvormange l�sninger systemet har).Oppgave 3Utvid Matlab-funksjonen inkons fra forrige oppgave til en funksjon antlosn som taren vilk�arlig matrise A og en vektor b som inn-parametre, og som i tillegg til �a avgj�reom matriseligningen Ax = b er konsistent eller inkonsistent, ogs�a gir beskjed om hvormange l�sninger (en eller uendelig mange) systemet har dersom det er konsistent.Oppgave 4I denne oppgaven f�ar du bruk for f�lgende matriser og s�ylevektorer:A = 0@ 0 0 15 0 101 0 6 1A B = 0B@ 1 2 3 45 3 4 63 1 4 25 5 7 101CA C = 0B@ 1 2 3 4 15 3 4 6 23 1 4 2 35 5 7 10 41CAD = 0BBB@ 5 2 7 57 7 4 94 3 9 83 5 9 62 2 6 81CCCA E = 0BBB@ 1 7 6 2 2 60 3 4 6 4 89 5 5 8 8 12 1 3 5 7 63 10 4 6 5 1

1CCCAa = 0@ 1211A b = 0B@ 13211CA d = 0BBB@ 4146104

1CCCAa) Test funksjonen linavh p�a matrisene A, B, C, D og E og sjekk om svaret er riktig.b) Test funksjonen inkons med f�lgende inn-parametre og sjekk om svaret er riktig:(A; a), (B;b), (C;b), (D;d) og (E;d). Dersom svaret du f�ar er at et ligningssystemer konsistent, skal du bruke funksjonen antlosn til �a avgj�re hvor mange l�sningersystemet har.

Page 27: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Lab 4: Newtons metode for ere variableavKlara HvebergI denne laboratorie�velsen skal vi studere Newtons metode for �a �nne tiln�rmedel�sninger til systemer av ikke-line�re ligninger. Vi starter med �a repetere Newtonsmetode for funksjoner av en variabel, og ser deretter p�a hva som skjer hvis vi brukersamme metode p�a en funksjon hvor variabelen er et komplekst tall. Her skal vi spesieltstudere hvordan ulike valg av startverdier p�avirker konvergensen, og se at dette leder tilnoen fascinerende geometriske �gurer som kalles fraktaler. Til slutt ser vi p�a hvordanNewtons metode kan generaliseres til �a fungere for systemer av ligninger i ere variable.Hvis du f�ler at du har god kontroll p�a Newtons metode for funksjoner av en variabel(og kanskje til og med har programmert metoden i Java eller lignende spr�ak tidligere),kan du godt hoppe over innledningen, gj�re oppgave 2, og deretter g�a videre til avsnittetom Newtons metode for funksjoner av en kompleks variabel.Newtons metode for funksjoner av en variabelLa oss begynne med en kort repetisjon av ideen bak Newtons metode. Fra teorien forfunksjoner av en variabel, vet vi at n�ar vi bruker Newtons metode til�a �nne tiln�rmedel�sninger til et nullpunkt for en funksjon f(x), starter vi med�a gjette p�a et nullpunkt x0(som ofte m�a velges med litt omhu for�a f�a metoden til�a fungere), og deretter danner vioss en f�lge x1; x2; x3; : : : av (forh�apentligvis) stadig bedre tiln�rminger til nullpunktetved �a bruke f�lgende strategi: Hver gang vi har en tiln�rmingsverdi xn, lar vi denneste tiln�rmingsverdien xn+1 v�re skj�ringspunktet mellom x-aksen og tangententil grafen i punktet (xn; f(xn)). Eller sagt p�a en annen m�ate: Hver gang vi har entiln�rmingsverdi xn, �nner vi den neste tiln�rmingsverdien xn+1 ved �a erstatte denopprinnelige funksjonen med den beste line�re tiln�rmingen til funksjonen over punktetxn (dvs tangenten) og bruke nullpunktet til denne lineariseringen som en tiln�rmet verdifor nullpunktet til funksjonen.Tangenten til funksjonen i punktet (xn; f(xn)) har ligningeny = f(xn) + f 0(xn)(x� xn)For �a �nne ut hvor denne tangenten skj�rer x-aksen, setter vi inn y = 0 og f�ar dermedligningen 0 = f(xn) + f 0(xn)(x� xn)L�ser vi denne ligningen med hensyn p�a x, og kaller l�sningen xn+1, f�ar vi f�lgenderekursjonsformel for hvordan vi kan regne ut xn+1:xn+1 = xn � f(xn)f 0(xn)La oss f�rst se et enkelt eksempel p�a hvordan vi kan utnytte denne formelen for �a f�aMatlab til�a �nne en tiln�rmet verdi for nullpunktet til funksjonen f(x) = x2�2 (eller21

Page 28: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

22 Lab 4: Newtons metode for ere variablemed andre ord �nne en tiln�rmet verdi for kvadratroten av 2). Siden den deriverte avfunksjonen v�ar er f 0(x) = 2x, blir rekursjonsformelen vi skal bruke i dette tilfelletxn+1 = xn � x2n � 22xnFor �a f�a Matlab til �a regne ut de 5 f�rste tiln�rmingsverdiene fra Newtons metodemed startverdi x0 = 1, kan vi derfor bruke f�lgende for-l�kke:>> x=1;>> for t=1:5xny=x-(x^2-2)/(2*x); % Beregner neste tiln�rmingsverdix=xny % utelater semikolon for �a f�a se alle tiln�rmingsverdieneendDet kan n�a v�re lurt �a sjekke om den siste verdien Matlab beregnet (som n�a ligger ivariabelen x) faktisk er en god tiln�rming til nullpunktet for funksjonen, ved �a regneut funksjonsverdien i dette punktet med kommandoen>> x^2-2Merknad: I Matlab er indekseringene av x-ene strengt tatt un�dvendig, siden likhets-tegnet betyr \tilordning" og ikke \likhet". Istedenfor �a gi kommandoene>> xny=x-(x^2-2)/(2*x)>> x=xny;kan vi simpelthen gi kommandoen>> x=x-(x^2-2)/(2*x)Her spiller x-en p�a venstre side rollen som xny, mens den p�a h�yre side er v�ar gamlex. I denne laboratorie�velsen kommer vi imidlertid stort sett til �a benytte det f�rstealternativet i h�ap om at det vil gj�re det enklere �a forst�a programmene (men hvis duf�ler deg trygg p�a det andre alternativet, m�a du gjerne benytte dette).Oppgave 1a) Bruk en for-l�kke for �a f�a Matlab til �a regne ut de 5 f�rste tiln�rmingsverdieneNewtons metode gir til nullpunktet som funksjonen f(x) = x3 + 2x2 � 2 har iintervallet mellom 0 og 1. Du kan bruke startverdien x0 = 1. (Husk at du f�rstm�a �nne rekursjonsformelen for denne funksjonen ved �a regne ut f 0(x) og sette inni den generelle formelen for Newtons metode.) Ser det ut som om tiln�rmingenekonvergerer mot en bestemt verdi? Unders�k i s�a fall om denne verdien faktisk er etnullpunkt for funksjonen ved�a laMatlab regne ut funksjonsverdien i dette punktet.b) Hvor mange iterasjoner m�a gjennomf�res f�r de �re f�rste desimalene i tiln�rmings-verdien ikke endrer seg? Hvor mange iterasjoner som m�a gjennomf�res f�r de tolvf�rste desimalene ikke endrer seg.Matlab-tips: For �a f�a Matlab til �a skrive ut ere desimaler p�a skjermen, kan dugi kommandoen>> format long

Page 29: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Newtons metode for funksjoner av en variabel 23Litt om konvergensDet er ikke sikkert at f�lgen av approksimasjoner vi f�ar ved Newtons metode konvergerermot nullpunktet vi er p�a jakt etter, men sjansen for at metoden fungerer blir st�rre hvisstartpunktet x0 ligger i n�rheten av det faktiske nullpunktet. En god (men ikke sikker)indikasjon p�a at approksimasjonene konvergerer, er at forskjellen mellom to p�af�lgendeledd xn og xn+1 i f�lgen blir liten. N�ar man skal programmere Newtons metode, erdet derfor vanlig �a spesi�sere en toleranse (f.eks 10�12) og stoppe iterasjonene dersomforskjellen mellom xn og xn+1 (i absoluttverdi) blir mindre enn denne toleransen. Manantar da at xn+1 er et godt estimat for nullpunktet (men man b�r egentlig sjekke atfunksjonsverdien i dette punktet faktisk er n�r null). Dersom approksimasjonene ikkekonvergerer, risikerer man at di�erensen mellom xn+1 og xn aldri blir mindre enn denoppgitte toleransen, s�a for �a unng�a�a bli g�aende i en evig l�kke av iterasjoner, b�r manogs�a spesi�sere et maksimalt antall iterasjoner som skal utf�res.La oss vende tilbake til eksempelet med funksjonen f(x) = x2 � 2 og se p�a hvordanvi kan modi�sere for-l�kken slik at Matlab utf�rer iterasjonene av Newtons metode(med startverdi x0 = 1) inntil di�erensen mellom xn+1 og xn er mindre enn en toleransep�a 0.0001, men likevel slik at den ikke utf�rer mer enn maksimalt 20 iterasjoner. Vibruker da kommandoen break til �a avbryte l�kken hvis di�eransen blir mindre enn denvalgte toleransen:>> tol=0.0001; %angir den �nskede toleransen>> maksit=20; %maksimalt antall iterasjoner som skal utf�res>> x=1; %startverdi>> diff=tol+1; %initialiserer diff til �a v�re st�rre enn toleransen>> for t=1:maksitxny=x-(x^2-2)/(2*x);diff=abs(xny-x); % beregner absoluttverdien av differensenx=xny % utelater semikolon for �a f�a se alle verdieneif diff<tol % tester om vi skal avbryte l�kkenbreak;end % ifend % forDu kan selvf�lgelig benytte en while-l�kke isteden, hvis du foretrekker det:>> tol=0.0001; %angir den �nskede toleransen>> maksit=20; %maksimalt antall iterasjoner som skal utf�res;>> diff=tol+1; %initialiserer diff til �a v�re st�rre enn toleransen>> x=1;>> t=0;>> while (diff>tol) & (t<maksit)xny=x-(x^2-2)/(2*x);diff=abs(xny-x); % beregner absoluttverdien av differensenx=xny % utelater semikolon for �a f�a se alle verdienet=t+1;endN�ar vi skal lete etter nullpunktene til en funksjon ved hjelp av Newtons metode, vil detofte v�re aktuelt �a pr�ve med litt forskjellige startverdier. Det kan derfor v�re kjekt �alage enMatlab-funksjon newton hvor vi kan spesi�sere startverdien som innparameter.

Page 30: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

24 Lab 4: Newtons metode for ere variableFor �a kunne benytte denne p�a forskjellige funksjoner uten �a m�atte g�a inn i hoved�lennewton.m og endre rekursjonsformelen hver gang, kan det ogs�a v�re greit �a bruke dengenerelle rekursjonsformelen xn+1 = xn � f(x)f 0(x) i newton og la den hente informasjonom den aktuelle funksjonen og dens deriverte fra en egen m-�l fogder.m. Da trengervi bare �a gj�re endringer lokalt i den sistnevnte �len n�ar vi bytter funksjon. Hvis vivil studere ere funksjoner, er det ofte praktisk �a kunne ha dem liggende p�a m-�lermed forskjellige navn istedenfor �a m�atte endre p�a �len fogder.m hele tiden. Dette kanvi f�a til ved �a sende med navnet p�a m-�len som innparameter til Matlab-funksjonennewton. Vi lar i s�a fall denne f�a f�lgende signatur:function x=newton(start,fogdf)% MATLAB-funksjon som pr�ver �a finne nullpunkt for en funksjon ved hjelp% av Newtons metode. Den leser inn definisjonen av funksjonen og dens% deriverte fra m-filen med navn angitt av innparameteren fogdf%Innparametre:% start: startverdi for iterasjonene% fogdf: navn p�a fil som inneholder den aktuelle funksjonen og dens% deriverte%Utparameter:% x: den beregnede tiln�rmingsverdien til nullpunktet<Programkode: Denne skal du lage i oppgave 2>�nsker vi f.eks �a bruke Matlab-funksjonen newton p�a funksjonen f(x) = x3+2x2� 2(fra oppgave 1), spesi�serer vi bare f(x) og dens deriverte p�a m-�len fogder.m p�af�lgende m�ate:function [y,d]=fogder(x)y=x^3+2*x^2-2;d=3*x^2+4*x;For �a bruke Matlab-funksjonen newton med startpunkt x0 = 2 p�a funksjonen f(x),sender vi n�a navnet p�a funksjons�len fogder.m med som innparameter ved �a gi kom-mandoen>> x=newton(2,'fogder');Legg spesielt merke til at vi m�a ha apostrofer rundt navnet p�a �len som vi sender medsom innparameter, men at vi utelater etternavnet .m.La oss til slutt se p�a hvordan vi iMatlab-funksjonen newton kan lese inn funksjonsver-dien og den deriverte fra m-�len med navn gitt ved innparameteren fogdf. For�a beregnefunksjonsverdien og den deriverte i et punkt x og ta vare p�a disse verdiene i to vari-able vi kaller fx og dfx, kan vi bruke den innebygde Matlab-kommandoen feval p�af�lgende m�ate:[fx,dfx]=feval(fogdf,x);Matlab-funksjonen feval tar alts�a et funksjonsnavn og et punkt som innparametre,og returnerer funksjonen evaluert i det oppgitte punktet.Merknad: Grunnen til at vi m�a bruke Matlab-funksjonen feval er at innparameterenfogdf er et navn p�a en funksjons�l (alts�a en tekststreng), s�a det gir ikke mening�a pr�ve�a kalle funksjonen med innparameter x ved �a gi kommandoen [fx,dfx]=fogdf(x).Hvis du er fortrolig med anonyme funksjoner iMatlab, kan du gjerne la newton ta slikefunksjoner direkte som innparametre istedenfor�a bruke en m-�l og sende med �lnavnet.

Page 31: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Newtons metode for funksjoner av en kompleks variabel 25Oppgave 2a) Lag enMatlab-funksjon p�a m-�len newton.m som leser inn verdiene til en funksjonog dens deriverte fra en egen m-�l, og beregner tiln�rmingsverdier for nullpunktetved hjelp av disse verdiene. Som innparametre skal Matlab-funksjonen ta et start-punkt start og navnet fogdf p�a m-�len hvor funksjonen f og dens deriverte erde�nert. Matlab-funksjonen skal deretter utf�re Newtons metode inntil di�erensenmellom xn+1 og xn er mindre enn en toleranse p�a 0.0000001, eller den har utf�rt detmaksimale antall iterasjoner som du tillater (du kan f.eks la dette v�re maksit=30).Til slutt skal Matlab-funksjonen returnere den sist beregnede tiln�rmingsverdiensom utparameter.Matlab-tips: Dersom iterasjonsindeksen din heter t, kan du legge til f�lgendekommandolinje i iterasjonsl�kka for �a f�a en pen utskrift p�a skjermen av iterasjons-nummeret, den tilh�rende tiln�rmingsverdien x som blir beregnet for nullpunktet ihvert trinn, og tilh�rende funksjonsverdi fx i dette punktet:fprintf('itnr=%3d x=%15.12f f(x)=%15.12fnn',t,x,fx)Du kan lese mer om denne kommandoen ved �a skrive>> help fprintfi Matlab-vinduet.b) Test Matlab-funksjon du lagde i punktet ovenfor p�a funksjonen f(x) = x3+2x2�2 (fra oppgave 1) for �a �nne tiln�rmingsverdier for nullpunktet funksjonen har iintervallet [0; 1].c) Lag et plott av funksjonen f(x) = x3 + 2x2 � 30x � 5 over intervallet [�8; 6] for �adanne deg et bilde av hvor nullpunktene ligger. Bruk deretter Matlab-funksjonendu lagde i punkt a) til �a �nne tiln�rmingsverdier for hvert av de tre nullpunktene.Du kan for eksempel bruke startverdiene x0 = 1, 4 og �4.d) Vi skal n�a se p�a noen tilfeller hvor Newtons metode virker d�arlig. Vi skal f�rst tafor oss funksjonen g(x) = x3� 5x. Lag et plott av denne funksjonen over intervallet[�3; 3] og kj�r deretter Newtons metode med startpunktet x0 = 1. Hva skjer mediterasjonene? Kan du se hvorfor dette skjer utifra grafen du plottet? Unders�kom det samme problemet oppst�ar hvis du kj�rer Newtons metode p�a nytt medstartpunktet x0 = 2 isteden.La oss deretter pr�ve Newtons metode p�a funksjonen h(x) = x 13 . Her er x = 0opplagt det eneste nullpunktet. Lag et plott av funksjonen over intervallet [�4; 4]for �a danne deg et bilde av hvordan grafen oppf�rer seg i n�rheten av nullpunktet.Kj�r deretter Newtons metode med startpunkt x0 = 1. N�rmer tiln�rmingsverdieneseg nullpunktet x = 0? Pr�v �a forklare hva som skjer utifra grafen.Matlab-tips: For�a unng�a atMatlab returnerer komplekse r�tter av negative tall,kan det v�re lurt�a representere funksjonen h(x) = x1=3 p�a f�lgende m�ate iMatlab:>> y=sign(x).*abs(x).^(1/3);Newtons metode for funksjoner av en kompleks variabelI forrige seksjon studerte vi Newtons metode for�a �nne tiln�ringsverdier for nullpunktertil funksjoner av en reell variabel, men det viser seg at metoden fungerer like godt forfunksjoner av en kompleks variabel. Du har sannsynligvis ikke v�rt borti kompleksefunksjoner tidligere, men hvis du forel�pig bare godtar p�astanden om at de kan deriveres

Page 32: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

26 Lab 4: Newtons metode for ere variablep�a samme m�ate som reelle funksjoner, vil du kunne plugge dem inn i rekursjonsformelenfor Newtons metode og se hva som skjer.Som vanlig begynner vi da med �a gjette p�a et startpunkt x0, som denne gangen eret komplekst tall p�a formen a + ib og alts�a kan tolkes som et punkt (a; b) i planet.Deretter bruker vi rekursjonsformelen til �a danne oss en f�lge av komplekse tall som(forh�apentligvis) er stadig bedre tiln�rminger til et nullpunkt for funksjonen vi studerer.Da vi studerte Newtons metode p�a funksjoner av en reell variabel, s�a vi at startpunktetvi valgte kunne v�re avgj�rende for om f�lgen av tiln�rminger konvergerte, hvilketnullpunkt de eventuelt konvergerte mot og hvor fort de konvergerte mot dette. Generelt�kte sjansen for konvergens hvis startpunktet vi valgte l�a n�r det virkelige nullpunktet,men fasongen p�a grafen var ogs�a avgj�rende.For funksjoner av komplekse variable, er situasjonen enda mer innviklet | s�a innviklet atdet�a studere hvilke nullpunkter de forskjellige startpunktene i planet gir oss konvergensmot, leder til kompliserte og fascinerende �gurer som kalles fraktaler. Dette skal du f�a enliten smakebit p�a i denne seksjonen hvor vi skal studere Newtons metode p�a kompleksefunksjoner av typen f(z) = z3 + az + b for ulike verdier av konstantene a og b. Somnevnt kan vi derivere disse funksjonene p�a vanlig m�ate og f�a at f 0(z) = 3z2 + a, s�arekursjonsformelen for Newtons metode blir i dette tilfellet zn+1 = zn � z3+az+b3z2+a .En funksjon p�a formen f(z) = z3 + az + b har tre (komplekse) nullpunkter, og det vi�nsker�a gj�re, er�a fargelegge (et omr�ade av) planet slik at vi kan se hvilke startpunktersom gir konvergens mot samme nullpunkt n�ar vi bruker Newtons metode. For hvert avde tre nullpunktene til funksjonen velger vi alts�a ut en farge og deretter fargelegger vialle startpunkter som gir konvergens mot samme nullpunkt, i den fargen som vi valgtefor nullpunktet.La oss se hvordan vi kan f�aMatlab til �a lage et slikt bilde. F�rst m�a vi de�nere hvilkekomplekse tall vi �nsker �a studere som startpunkter for Newtons metode (dvs hvilketomr�adet i planet vi �nsker �a studere). La oss velge �a se p�a de komplekse tallene hvorb�ade realdelen og imagin�rdelen ligger mellom �2 og 2. Vi kan ikke studere alle dissepunktene siden det er uendelig mange av dem, men vi lager oss et tett gitter av punkteri dette omr�adet ved kommandoene:>> x=[-2:0.01:2];>> y=[-2:0.01:2];>> [X,Y]=meshgrid(x,y);>> [m,n]=size(X); %tar vare p�a st�rrelsen for senere bruk i l�kkeDeretter vil vi laMatlab �nne numeriske tiln�rmingsverdier for nullpunktene til funk-sjonen vi skal studere (da blir det enkelt �a sjekke hvilket nullpunkt tiln�rmingsverdi-ene konvergerer mot). Til dette kan vi bruke den innebygde Matlab-kommandoenroots(p) som returnerer en vektor med nullpunktene til et polynom p. Polynomet skalspesi�seres som en radvektor best�aende av koe�sientene foran de ulike potensene avvariabelen, slik at funksjonen f(z) = z3+az+b f�ar polynomspesi�kasjonen p = [1; 0; a; b](husk�a ta med koe�sienten null foran \det usynlige" leddet z2). Aller f�rst m�a vi imid-lertid spesi�sere hvilken funksjon vi vil studere ved �a angi verdiene av konstantene aog b. Vi vil starte med �a studere funksjonen f(z) = z3 � 1 og velger derfor a = 0 ogb = �1:>> a=0;>> b=-1;

Page 33: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Newtons metode for funksjoner av en kompleks variabel 27>> p=[1 0 a b];>> rts=roots(p);N�a er vi klare til �a gjennoml�pe ett og ett punkt i gitteret og utf�re Newtons metodemed dette punktet som startverdi. Som tidligere velger vi f�rst et maksimalt antall it-erasjoner som skal utf�res, og en toleranse som avgj�r n�ar tiln�rmingsverdiene er s�a n�ret nullpunkt at vi vil avbryte iterasjonene. Deretter bruker vi en dobbelt for-l�kke til�agjennoml�pe punktene i gitteret. For hvert punkt bruker vi Newtons metode med punk-tet som startverdi og kj�rer gjentatte iterasjoner inntil tiln�rmingsverdiene eventueltkommer innenfor den oppgitte toleransen fra ett av nullpunktene. I s�a fall avbrytervi l�kka og gir punktet den fargeverdien vi har tilegnet nullpunktet vi �kk konvergensmot. I dette tilfellet vil vi bruke fargeverdien 1 (bl�a) for det f�rste nullpunktet rts(1),fargeverdien 44 (gul) for det andre nullpunktet rts(2), og fargeverdien 60 (r�d) for dettredje nullpunktet rts(3). Vi lagrer fargeverdiene til punktene i en matrise T slik atpunkt nr (j; k) i gitteret f�ar fargeverdien angitt av elementet T (j; k) i matrisen. F�rvi starter l�kkene, initialiserer vi alle elementene i T til fargeverdien 27 (turkis), s�a destartpunktene som eventuelt ikke gir oss konvergens mot noe nullpunkt i l�pet av detmaksimale antallet iterasjoner vi utf�rer, vil beholde denne fargen.>> maxit=30;>> tol=0.001;>> T=27*ones(m,n);for j=1:mfor k=1:n %gjennoml�per punktene i gitteretz=X(j,k)+i*Y(j,k); %omgj�r punkt i gitter til komplekst tall%S�a kj�res iterasjoner av Newtons metode med punktet som startverdifor t=1:maxitzny=z-(z^3+a*z+b)/(3*z^2+a);z=zny;if abs(z-rts(1))<tolT(j,k)=1;break;endif abs(z-rts(2))<tolT(j,k)=44;break;endif abs(z-rts(3))<tolT(j,k)=60;break;endend %for tend %for kend %for jN�a kan vi f�a fargelagt punktene i det aktuelle omr�adet i planet med fargeverdien bestemti matrisen T ved �a gi f�lgende kommandoer:>> image(x,y,T) %fargelegger punktet (x(j),y(k)) i planet med fargen%angitt av verdien av matrise-elementet T(j,k)>> axis xy %setter aksesystemet i vanlig xy-orientering

Page 34: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

28 Lab 4: Newtons metode for ere variable>> colorbar %tegner opp s�yle som angir fargeverdiene ved plottetOppgave 3a) Lag et skript p�a m-�len kompleks.m som genererer et bilde av hvilke punkter i planetsom konvergerer mot de forskjellige nullpunktene til funksjonen f(z) = z3 � 1.b) Gj�r de endringene som skal til i skriptet fra punkt a) for �a f�a tilsvarende bilder forfunksjonene f(z) = z3+2z (dvs at du setter parametrene til �a v�re a = 2 og b = 0)og f(z) = z3 � z + 2 (dvs at a = �1 og b = 2).Hittil har vi laget bilder som forteller hvilket nullpunkt de forskjellige startpunktenegir konvergens mot, men bildene gir ingen informasjon om hvor raskt konvergenseng�ar. For �a f�a et bilde som ogs�a inneholder informasjon om konvergenshastigheten til deforskjellige startpunktene, kan vi justere litt p�a fargeverdiene slik at punktene f�ar lyserefargeval�r jo langsommere konvergensen g�ar. Istedenfor bare �a sette fargeverdiene til1, 44 eller 60, kan vi justere fargeverdiene etter hvor mange iterasjoner t som er utf�rt,f.eks p�a f�lgende m�ate:if abs(z-rts(1))<tolT(j,k)=1+t*(23/maxit);break;endif abs(z-rts(2))<tolT(j,k)=48-t*(23/maxit);break;endif abs(z-rts(3))<tolT(j,k)=64-t*(23/maxit);break;endMerknad: Ikke blir forvirret over at vi gir et lite tillegg i det f�rste tilfellet, men gj�ret lite fradrag i de to neste. Det kommer bare av at fargeskalaen vi bruker er slik atbl�afargen blir lysere for h�yere verdier, mens gul og r�d blir lysere for lavere verdier.Oppgave 4a) Modi�ser skriptet fra forrige oppgave slik at bildet gir informasjon om konvergens-hastigheten til de ulike startpunktene i tillegg til hvilket nullpunkt de gir konvergensmot. Du kan gjerne gj�re om skriptet til en Matlab-funksjon som tar a og b sominnparametre, slik at du lett kan eksperimentere med ulike funksjoner.b) Generer et bilde for funksjonen f(z) = z3 � 1 og beskriv hva bildet viser. Pr�v �agjette p�a hvor nullpunktene ligger utifra bildet.c) Generer tilsvarende bilder for funksjonene f(z) = z3 + 2z og f(z) = z3 � z + 2.Oppgave 5Modi�ser Matlab-funksjonen fra forrige oppgave slik at du fritt kan velge sentrum ogforst�rrelse. Bruk den p�a funksjonen f(z) = z3 � 1, og lag en sekvens av bilder somzoomer inn p�a origo, og deretter en tilsvarende sekvens som zoomer inn p�a punktet(�0:8; 0).Hint: F�rste del av skriptet vi har brukt tidligere, kan f.eks omskrives slik:

Page 35: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Newtons metode for systemer av to ligninger i to ukjente 29sentrumx=0;sentrumy=0;lengde=2;x=linspace(sentrumx-lengde, sentrumx+lengde,400);y=linspace(sentrumy-lengde, sentrumy+lengde,400);Her har du n�a mulighet for �a velge andre koordinater for sentrumspunktet og andreintervallengder. Du kan for eksempel zoome inn mot origo ved f�rst �a sette lengde = 1,deretter lengde = 0:5, og til slutt lengde = 0:25. Flytt deretter sentrum litt mot venstreved �a velge sentrumx = �0:8, og foreta en tilsvarende innzooming der.Ekstraoppgave: Hvis du har gjennomf�rt den frivillige slutten p�a laboratorie�velsenr 1, hvor du l�rte �a lage animasjoner, kan du pr�ve �a lage en animasjon som viserinnzooming mot et punkt p�a fraktalen.Newtons metode for systemer av to ligninger i to ukjenteLa oss se p�a hvordan Newtons metode kan generaliseres til �a l�se ligningssystemer avtypen: f(x; y) = 0g(x; y) = 0Siden vi n�a arbeider med funksjoner av to variable, blir grafene ater i rommet, ognullpunktene vi skal tiln�rme vil ligge i xy-planet. Strategien er imidlertid den sammesom f�r: Vi starter med �a gjette p�a et nullpunkt (x0; y0), og deretter danner vi ossen f�lge (x1; y1); (x2; y2); (x3; y3) : : : av (forh�apentligvis) stadig bedre tiln�rminger tilnullpunktet ved �a benytte nullpunktene til line�re approksimasjoner (tangentplan) avde opprinnelige funksjonene: Hver gang vi har en tiln�rmingsverdi (xn; yn), �nner vi denneste tiln�rmingsverdien (xn+1; yn+1) ved�a erstatte de opprinnelige funksjonene f(x; y)og g(x; y) med deres beste line�re tiln�rminger (dvs tangentplanene) over punktet(xn; yn), og bruke skj�ringspunktet mellom xy-planet og disse lineariseringene som entiln�rmet verdi for nullpunktet til de opprinnelige funksjonene.Analogien til det �endimensjonale tilfellet blir klarere om vi benytter vektornotasjonenx = �xy � ; F = � fg � og F0(x) = � @f@x (x; y) @f@y (x; y)@g@x (x; y) @g@y (x; y)�der F0(x) er Jacobi-matrisen til F i punktet x. Skj�ringslinjen mellom de to tangent-planene er da gitt ved lineariseringenTxnF(x) = F(xn) + F0(xn)(x� xn)til vektorfunksjonen F i punktet xn = (xn; yn), og denne linjen skj�rer xy-planet inullpunktet til lineariseringen TxnF, det vil si i det punktet x som oppfyller den line�religningen F(xn) + F0(xn)(x� xn) = 0Dersom Jacobi-matrisen F0(xn) er invertibel, f�ar vi l�sningenx = xn � F0(xn)�1F(xn)som vi bruker som neste tiln�rming xn+1 til nullpunktet for F. Denne prosedyren giross alts�a rekursjonsformelen xn+1 = xn � F0(xn)�1F(xn)

Page 36: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

30 Lab 4: Newtons metode for ere variablesom vi kan bruke til�a bestemme f�lgen av tiln�rminger til nullpunktet. P�a komponent-form blir formelen�xn+1yn+1 � = �xnyn �� � @f@x (xn; yn) @f@y (xn; yn)@g@x (xn; yn) @g@y (xn; yn)��1 � f(xn; yn)g(xn; yn)�N�ar vi skal implementere l�sningen iMatlab, er det lite e�ektivt�a l�se ligningssystemetved �a regne ut den inverse av Jacobi-matrisen og multiplisere med denne. Det g�ar myeraskere �a l�se ligningssystemet ved �a bruke Matlabs innebygde venstredivisjonsopera-tor n. Istedenfor �a gi en kommando av typen>> xny=x-inv(J)*f(x)bruker vi alts�a heller en kommando av typen>> xny=x-Jnf(x)hvor J er Jacobi-matrisen. Legg spesielt merke til rekkef�lgen her: N�ar vi skal brukevenstredivisjonsoperatoren til �a \dele f(x) p�a J" (dvs venstremultiplisere f(x) medJ�1), skal J st�a til venstre for divisjonsoperatoren.Oppgave 6a) Lag en Matlab-funksjon p�a �len 'newtonfler.m' som leser inn verdiene til envektorfunksjon F og dens Jacobi-matrise J fra en egen m-�l, og bruker disse verdi-ene til �a beregne tiln�rmingsverdier til nullpunktet ved hjelp av Newtons metode.Som innparametre skal Matlab-funksjonen ta et startpunkt start (angitt som ens�ylevektor) og navnet p�a enMatlab-funksjon FogJ som returnerer en vektor [F,J],hvor F er en vektorfunksjon (angitt som en s�ylevektor med komponenter f og g) ogJ er dens Jacobi-matrise med de partiellderiverte. Matlab-funksjonen skal deretterutf�re Newtons metode inntil normen til xn+1 � xn er mindre enn en toleranse p�a0.0000001, eller den har utf�rt det maksimale antallet iterasjoner du tillater (dukan f.eks velge dette til �a v�re maksit= 30). Til slutt skal den returnere den sistberegnede tiln�rmingsverdien som utparameter.Matlab-tips: Du kan bruke Matlab-funksjonen norm(xny-x) for �a regne ut denaktuelle normen. Dersom iterasjonsindeksen din heter 't', kan du legge til f�lgendekommandolinje i iterasjonsl�kka for �a f�a en pen utskrift p�a skjermen av iterasjons-nummeret, alle tiln�rmingsverdiene x som blir beregnet for nullpunktet og tilh�rendefunksjonsverdi F (x) for vektorfunksjonen i disse punktene:fprintf('itnr=%2d x=[%13.10f,%13.10f] F(x)=[%13.10f,%13.10f]nn',...t,x(1),x(2),F(1),F(2))b) I resten av denne oppgaven skal vi studere ligningssystemetx2 + y2 � 48 = 0x+ y + 6 = 0BrukMatlab til�a lage et implisitt plott av de to ligningene i samme �gurvindu (dukan for eksempel lage et kontur-plott med en enkelt niv�akurve for funksjonsverdien0). Bruk �guren til �a bestemme hvor mange l�sninger dette ligningssystemet har.Matlab-tips: Hvis du har de�nert en funksjon f over et omr�ade gitt ved komman-doen [x,y]=meshgrid(-10:0.1:10), kan du lage et kontur-plott for funksjonen fmed bare �en niv�akurve i h�yden 0 ved �a gi kommandoen

Page 37: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Newtons metode for systemer av to ligninger i to ukjente 31>> contour(x,y,f,[0 0])(Generelt vil kommandoen contour(x,y,f,v) gi et plott av niv�akurvene til funk-sjonen f i h�ydene spesi�sert i vektoren v).c) Bruk �guren du lagde i punkt b) til �a �nne fornuftige startverdier for Newtonsmetode, og kj�r deretter Matlab-funksjonen newtonfler med disse startverdienefor �a �nne tiln�rmede verdier for nullpunktene.Oppgave 7Dersom du har fulgt den generelle l�sningsmetoden vi antydet i teksten da du lagdeMatlab-funksjonen newtonfler i forrige oppgave, burde den ogs�a fungere for systemerav mer enn to variable. Du kan unders�ke dette ved �a legge inn vektorfunksjoner med ere komponenter i funksjons�len som sendes som innparameter. Vil du for eksempell�se et ligningssystem p�a formen f(x; y; z) = 0g(x; y; z) = 0h(x; y; z) = 0de�nerer du bare en vektorfunksjon F = [f ; g;h] som en s�ylevektor med tre komponen-ter, og dens tilh�rende Jacobi-matrise J = [dfx; dfy; dfz; dgx; dgy; dgz; dhx; dhy; dhz] p�afunksjons�len du sender med som innparameter til Newton. Pr�v ut dette for �a �nneen tiln�rmet l�sning p�a ligningssystemety2 + z2 � 3 = 0x2 + z2 � 2 = 0x2 � z = 0ved hjelp av Newtons metode.Merknad: Matlab-funksjonen newtonfler fra forrige oppgave skal ikke trenge noenmodi�kasjon for �a beregne tiln�rmingsverdiene for systemer av mer enn to variable.Men i kommandoen fprintf som vi benyttet for �a f�a en pen utskrift p�a skjermenav alle de beregnede tiln�rmingsverdiene, ba vi bare om �a f�a skrevet ut de to f�rstekomponentene til x og F (x). For �a f�a en utskrift av alle de tre komponentene (medlitt f�rre desimaler enn sist, slik at vi f�ar plass p�a skjermen), kan du f.eks modi�serekommandoen slik:fprintf('itnr=%2d x=[%9.6f,%9.6f,%9.6f] F(x)=[%9.6f,%9.6f,%9.6f]nn',...t,x(1),x(2),x(3),F(1),F(2),F(3))

Page 38: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

32 Lab 4: Newtons metode for ere variable

Page 39: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Appendiks 1Oppvarmings�velserI denne seksjonen �nner du noen enkle oppvarmings�velser som du kan gj�re for�a treneinn Matlab-kommandoene som brukes til �a operere p�a rader og s�yler i en matrise.Disse �velsene krever ikke kjennskap til bruk av m-�ler og funksjoner iMatlab, og kanderfor gjennomf�res mens du leser f�rste del av introduksjonsheftet til Matlab.

Page 40: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger
Page 41: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

�velse 1: MatrisemultiplikasjonavKlara HvebergI denne enkle oppvarmings�velsen skal vi ta utgangspunkt i den komponentvise de�nisjo-nen av matrisemultiplikasjon og se hvordan denne leder til alternative m�ater�a beskrivemultiplikasjonen p�a ved hjelp av s�ylene og radene i matrisene.La oss begynne med�a repetere den komponentvise de�nisjonen av matrisemultiplikasjon:Produktet av to matriser A og B er de�nert ved at elementet i posisjon (i; k) i produkt-matrisen AB er skalarproduktet mellom i-te rad i A og k-te s�yle i B, det vil si summenav produktene av korresponderende elementer i rad nr. i fra A og s�yle nr. k fra B:(AB)(i; k) = nXj=1A(i; j)B(j; k)Produktet av en matrise og en s�ylevektorLag en matrise>> C=[1 5 2; 9 6 8; 8 7 4];og en s�ylevektor>> x=[2; 5; 8];Siden s�ylevektoren x er en (3�1)-matrise, kan vi bruke den komponentvise de�nisjonenav matrisemultiplikasjon og la Matlab regne ut matriseproduktet>> C*xBruk deretter s�ylene i C som vektorer>> c1=C(:,1);>> c2=C(:,2);>> c3=C(:,3);og la Matlab beregne line�rkombinasjonen av disse vektorene hvor vi bruker ele-mentene i s�ylevektoren x som koe�sienter:>> x(1)*c1+x(2)*c2+x(3)*c3Sammenlign med matriseproduktet du beregnet ovenfor.Oppgave 1a) Hva forteller dette resultatet om sammenhengen mellom matriseproduktet Cx ogs�ylene i C? Formuler denne sammenhengen med ord.b) Er dette en generell sammenheng som ogs�a gjelder for andre matriser C og vek-torer x? Pr�v i s�a fall �a forklare denne sammenhengen ut ifra den komponentvisede�nisjonen av matrisemultiplikasjon. 35

Page 42: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

36 �velse 1: MatrisemultiplikasjonS�ylevis matrisemultiplikasjonDe�ner to matriser>> A=[2 4 6; 1 3 5; 7 8 9];>> B=[1 4; 2 5; 3 6];og la Matlab regne ut matriseproduktet>> A*BBruk deretter s�ylene i B som vektorer>> b1=B(:,1);>> b2=B(:,2);og la Matlab regne ut produktene>> A*b1>> A*b2Oppgave 2a) Hva er sammenhengen mellom AB, Ab1 og Ab2? Pr�v�a formulere med ord en regelfor hvordan vi kan regne ut hver av s�ylene i matrisen AB.b) Er dette en generell sammenheng som ogs�a gjelder for andre matriser A og B? Pr�vi s�a fall �a forklare denne sammenhengen ut ifra den komponentvise de�nisjonen avmatrisemultiplikasjon.Oppgave 3Bruk resultatene fra oppgave 1 og 2 til�a forklare hvordan man kan regne ut f�rste s�ylei matriseproduktet AB ved hjelp av s�ylene i A. Gj�r det samme for andre s�yle i AB.Bruk til slutt Matlab til �a sjekke at resultatet stemmer for matrisene A og B som vide�nerte f�r oppgave 2.Produktet av en radvektor og en matriseLag en matrise>> R=[1 3 8; 4 6 2; 5 7 9];og en radvektor>> y=[3 -4 6];Siden radvektoren y er en (1�3)-matrise, kan vi bruke den komponentvise de�nisjonenav matrisemultiplikasjon og la Matlab regne ut matriseproduktet>> y*RBruk deretter radene i R som vektorer>> r1=R(1,:);>> r2=R(2,:);>> r3=R(3,:);og la Matlab beregne line�rkombinasjonen av disse vektorene hvor vi bruker ele-mentene i vektoren y som koe�sienter:

Page 43: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Radvis matrisemultiplikasjon 37>> y(1)*r1-y(2)*r2+y(3)*r3Sammenlign med matriseproduktet du beregnet ovenfor.Oppgave 4a) Hva forteller dette resultatet om sammenhengen mellom matriseproduktet yR ogradene i R? Formuler denne sammenhengen med ord.b) Er dette en generell sammenheng som ogs�a gjelder for andre vektorer y og ma-triser C? Pr�v i s�a fall �a forklare denne sammenhengen ut ifra den komponentvisede�nisjonen av matrisemultiplikasjon.Radvis matrisemultiplikasjonDe�ner to matriser>> D=[1 2 3; 4 5 6; 7 8 9];>> E=[2 4; 1 3; 7 8];og la Matlab regne ut matriseproduktet>> D*EBruk deretter radene i D som vektorer>> d1=D(1,:);>> d2=D(2,:);>> d3=D(3,:);og la Matlab regne ut produktene>> d1*E>> d2*E>> d3*EOppgave 5a) Hva er sammenhengen mellom DE, d1E, d2E og d3E?b) Er dette en generell sammenheng som ogs�a gjelder for andre matriser D og E? Pr�vi s�a fall �a forklare denne sammenhengen ut ifra den komponentvise de�nisjonen avmatrisemultiplikasjon.Oppgave 6Bruk resultatene fra oppgave 4 og 5 til�a forklare hvordan man kan regne ut f�rste rad imatriseproduktet DE ved hjelp av radene i E. Gj�r det samme for andre og tredje radi DE.Bruk til slutt Matlab til �a sjekke at resultatet stemmer for matrisene D og E som vide�nerte f�r oppgave 5.

Page 44: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

38 �velse 1: Matrisemultiplikasjon

Page 45: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

�velse 2: Egenskaper ved determinanteravKlara HvebergI denne �velsen skal vi bruke Matlab til �a studere hva element�re radoperasjoner gj�rmed determinanten til en matrise. Deretter skal vi se p�a determinanten til triangul�rematriser, identitetsmatriser og permutasjonsmatriser.Multiplisere en rad med en skalarLag en (4� 4)-matrise>> A=[2 4 6 8; 1 3 5 7; 9 8 7 6; 5 4 3 2]og la Matlab beregne determinanten>> det(A)Vi skal n�a se hva som skjer med determinanten hvis vi erstatter f�rste rad i A med 3ganger seg selv:>> A(1,:)=3*A(1,:)>> det(A)Hva skjedde med determinanten?For �a sjekke at dette resultatet ikke er en tilfeldighet knyttet til den spesielle matrisenA vi har valgt, skal vi la Matlab generere tilfeldige (4 � 4)-matriser med heltalligekomponenter mellom �10 og 10 ved kommandoen>> A=round(20*rand(4)-10)(Forklaring til kommandoen: rand(4) genererer en tilfeldig (4 � 4)-matrise hvor ele-mentene er desimaltall mellom 0 og 1. Ved�a multiplisere med 20, f�ar vi elementer medheltallsdel mellom 0 og 20. Vi trekker deretter ifra 10 for�a f�a elementer med heltallsdelmellom 10 og �10, og kommandoen round avrunder tallene til n�rmeste heltall).Oppgave 1Bruk Matlab til �a generere en tilfeldig (4 � 4)-matrise, beregne determinanten ogsammenligne denne med determinanten til matrisen som fremkommer ved �a erstattef�rste rad med 3 ganger seg selv. Gjenta eksperimentet et par ganger.a) Hva skjedde med determinanten til matrisene n�ar du multipliserte f�rste rad med 3?Gjelder dette ogs�a dersom du multipliserer en annen rad med 3? Hva skjer meddeterminanten hvis du isteden multipliserer raden med skalaren 8? Bruk disse ob-servasjonene til�a gjette p�a og formulere en regel for hva som skjer med determinantentil en generell kvadratisk matrise n�ar vi multipliserer en vilk�arlig rad med en skalar.b) Hva tror du resultatet blir hvis du isteden multipliserer en s�yle i A med en skalar?Du kan for eksempel multiplisere tredje s�yle i A med 3 ved kommandoen>> A(:,3)=3*A(:,3)og beregne determinanten>> det(A) 39

Page 46: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

40 �velse 2: Egenskaper ved determinanterBytte om to raderLa Matlab generere en tilfeldig (4� 4)-matrise med heltallige komponenter mellom 10og �10 ved kommandoen>> A=round(20*rand(4)-10)og beregne determinanten>> det(A)Vi skal unders�ke hva som skjer med determinanten hvis vi bytter om rad 2 og rad 4 imatrisen A>> A=A([1,4,3,2],:) % Her vektorindekserer vi radene i den rekkef�lgen% vi vil ha dem (rad 2 og 4 har byttet plass)>> det(A)Hva skjedde med determinanten?Vi skal n�a sjekke om dette resultatet er en tilfeldighet som bare er knyttet til dennematrisen A.Oppgave 2Gjenta eksperimentet ovenfor et par ganger med nye tilfeldig genererte (4�4)-matriser.a) Hva skjedde med determinanten til matrisene n�ar du byttet om rad 2 og rad 4?Gjelder det samme hvis du isteden bytter om rad 1 og rad 3? Bruk disse obser-vasjonene til �a gjette p�a og formulere en regel for hva som skjer med determinantentil en generell kvadratisk matrise n�ar vi bytter om p�a to vilk�arlige rader i matrisen.b) Hva tror du resultatet blir hvis du isteden bytter om to s�yler i A? Du kan foreksempel bytte om s�yle nr. 2 og 3 med kommandoen>> A=A(:,[1,3,2,4])og beregne determinanten>> det(A)Addere et skalarmultiplum av en rad til en annen radLa Matlab generere en tilfeldig (4� 4)-matrise med heltallige komponenter mellom 10og �10 ved kommandoen>> A=round(20*rand(4)-10)og beregne determinanten>> det(A)Vi skal n�a se hva som skjer med determinanten hvis vi adderer 3 ganger andre rad tilf�rste rad (det vil si at vi erstatter f�rste rad med summen av seg selv og 3 ganger andrerad)

Page 47: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

�vre triangul�re matriser 41>> A(1,:)=A(1,:)+3*A(2,:)>> det(A)Hva skjedde med determinanten?Vil vil igjen sjekke at dette resultatet ikke er en tilfeldighet som bare er knyttet tildenne matrisen A.Oppgave 3Gjenta eksperimentet ovenfor et par ganger med andre tilfeldig genererte (4 � 4)-matriser.a) Hva skjedde med determinanten til matrisene n�ar du adderte 3 ganger andre rad tilf�rste rad? Gjelder det samme ogs�a hvis du isteden adderer 5 ganger tredje rad tilandre rad? Bruk disse observasjonene til �a gjette p�a og formulere en regel for hvasom skjer med determinanten til en generell kvadratisk matrise n�ar vi adderer etvilk�arlig skalarmultiplum av en rad til en annen rad.b) Hva tror du resultatet blir hvis vi isteden adderer et skalarmultiplum av en s�yle tilen annen s�yle i A? Du kan for eksempel addere 3 ganger fjerde s�yle til andre s�yleved kommandoen>> A(:,2)=A(:,2)+3*A(:,4)og beregne determinanten>> det(A)�vre triangul�re matriserVi kaller en matrise �vre triangul�r dersom alle elementene under hoveddiagonalen ernull.Vi kan generere en tilfeldig �vre triangul�r (5� 5)-matrise med heltallige komponenteri Matlab ved kommandoen>> U=triu(round(10*rand(5)+1)og beregne determinanten>> det(U)(U st�ar for \Upper diagonal matrix")Deretter kan vi ta produktet av alle elementene p�a hoveddiagonalen til matrisen U vedhjelp av en for-l�kke:diag=U(1,1)for i=2:5diag=diag*U(i,i)endHva er sammenhengen mellom de to resultatene?Oppgave 4Gjenta eksperimentet ovenfor et par ganger med nye tilfeldig genererte �vre triangul�rematriser. Bruk disse observasjonene til �a gjette p�a og formulere en regel for hvordan vilett kan beregne determinanten til en �vre triangul�r matrise.

Page 48: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

42 �velse 2: Egenskaper ved determinanterNedre triangul�re matriserVi kaller en matrise nedre triangul�r dersom alle elementene over hoveddiagonalen ernull.Vi kan generere en tilfeldig nedre triangul�r (5�5)-matrise med heltallige komponenteri Matlab ved kommandoen>> L=tril(round(10*rand(5)+1)og beregne determinanten>> det(L)(L st�ar for \Lower diagonal matrix")Deretter kan vi ta produktet av alle elementene p�a hoveddiagonalen til matrisen L vedhjelp av en for-l�kke:diag=L(1,1)for i=2:5diag=diag*L(i,i)endHva er sammenhengen mellom de to resultatene?Oppgave 5Gjenta eksperimentet ovenfor et par ganger med nye tilfeldig genererte nedre triangul�rematriser. Bruk disse observasjonene til �a gjette p�a og formulere en regel for hvordan vilett kan beregne determinanten til en nedre triangul�r matrise.IdentitetsmatriserEn identitetsmatrise har 1-ere p�a hoveddiagonalen og nuller overalt ellers. I Matlabkan vi generere en (5� 5) identitetsmatrise ved kommandoen>> A=eye(5)og beregne determinanten>> det(A)Oppgave 6a) Beregn determinanten til identitetsmatrisene av dimensjon (4� 4) og (6� 6). Brukdette til�a gjette p�a og formulere en regel for hva determinanten til en generell (n�n)identitetsmatrise er.b) Forklar dette resultatet ved hjelp av resultatene vi kom frem til om determinantentil �vre og nedre triangul�re matriser i forrige seksjon.PermutasjonsmatriserEn permutasjonsmatrise er en kvadratisk matrise som inneholder n�yaktig en 1-er ihver rad og i hver s�yle. Den fremkommer ved en ombytting (permutasjon) av radenei identitetsmatrisen.N�ar vi skal lage en (5� 5) permutasjonsmatrise i Matlab, lager vi f�rst en identitets-matrise av samme st�rrelse

Page 49: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Bonusavsnitt for spesielt interesserte 43>> I=eye(5)Deretter velger vi en permutasjon av radnumrene i denne matrisen (husk at en per-mutasjon av tallene fra 1 til 5 bare er en omstokking av disse tallene). �nsker vi foreksempel�a lage permutasjonsmatrisen hvor andre og tredje rad har byttet plass, stokkervi om p�a disse radene ved �a skrive>> P=I([1 3 2 4],:)Vi kan f�a Matlab til �a generere en tilfeldig permutasjon av tallene fra 1 til 5 ved �askrive>> randperm(5)Vi kan alts�a generere en tilfeldig (5�5) permutasjonsmatrise P ved�a bruke kommandoen>> P=I(randperm(5),:)og deretter regne ut determinanten>> det(P)Oppgave 7Gjenta eksperimentet ovenfor ere ganger med nye tilfeldig genererte permutasjonsma-triser. Bruk disse observasjonene til �a gjette p�a og pr�ve �a formulere en regel for hvadeterminanten til en permutasjonsmatrise er.Hint: Merk at P fremkommer fra identitetsmatrisen ved �a bytte om to og to rader etvisst antall ganger. Unders�k hva som skjer n�ar antall slike ombyttinger er et partallog hva som skjer n�ar det er et oddetall.Bonusavsnitt for spesielt interesserteEgenskapene vi kom frem i begynnelsen av denne lab�velsen, kan brukes til �a de�nerehva determinanten det(A) = jAj til en kvadratisk (n � n)-matrise A = (aij) er. Deter imidlertid ogs�a vanlig �a de�nere determinanten ved hjelp av s�akalte element�re pro-dukter. Et element�rt produkt Qi ai�i av elementer fra matrisen inneholder n�yaktig�en faktor ai�i fra hver rad og hver s�yle. Det betyr at s�yleindeksene �1; �2; : : : ; �n eren permutasjon (\omstokking") av linjeindeksene 1; 2; : : : ; n. Hvert element�rt produktkan utstyres med et fortegn sign(�) = (�1)inv(�) som er bestemt av antall inversjonerinv(�) i permutasjonen �, det vil si av antall par (�i; �j) av s�yleindekser som opptrer iinvertert (\omvendt") rekkef�lge. Determinanten kan n�a de�neres som summen av alleelement�re produkter forsynt med fortegn, det vil si atdet(A) =X� sign(�) nYi=1ai�iOppgave 8 (ekstraoppgave)Pr�v�a for forklare f�lgende egenskaper ved determinanten ut ifra de�nisjonen av deter-minanten som en sum av element�rprodukter forsynt med riktig fortegn:a) regelen du kom frem til i oppgave 1a)b) regelen du kom frem til i oppgave 2a)c) regelen du kom frem til i oppgave 3a)d) regelen du kom frem til i oppgave 4a)e) regelen du kom frem til i oppgave 5a)

Page 50: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

44 �velse 2: Egenskaper ved determinanter

Page 51: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Appendiks 2L�sningsforslag og hintI denne seksjonen �nner du l�sningsforslag til lab�velsene og oppvarmings�velsene.Foran l�sningsforslaget til lab�velse nr 3, �nner du hint til denne lab�velsen som inne-holder halvferdige programsnutter hvor du bare m�a fylle inn noen vesentlige linjer somtester den matematiske forst�aelsen av problemene.

Page 52: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger
Page 53: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

L�sningsforslag til lab 1L�sning til oppgave 1a) Kvadratet blir dobbelt s�a stort. Multiplikasjon med A fordobler b�ade x-koordinateneog y-koordinatene til punktene i kvadrat.b) Kvadratet blir dobbelt s�a langt i x-retningen (s�a det blir et rektangel). Multiplika-sjon med A fordobler alle x-koordinatene og lar y-koordinatene forbli uendret.c) Kvadratet speiles om x-aksen. Multiplikasjon med A bytter fortegn p�a y-koordinatentil hvert punkt, mens x-koordinaten forblir uendret.d) Kvadratet kollapser til et linjestykke (nedre sidekant) langs x-aksen. Multiplikasjonmed A setter alle y-koordinatene til 0, mens x-koordinatene forblir uendret. Dettetilsvarer �a projisere alle punktene ned p�a x-aksen.e) Kvadratet blir deformert som om toppen dyttes mot h�yre mens bunnen ligger iro. Multiplikasjon med A forandrer ikke p�a y-koordinaten, men x-koordinaten f�aret tillegg som er halvparten av y-koordinaten (dvs at x-koordinaten f�ar et st�rretillegg jo h�yere opp i kvadratet punktet ligger). Dette er et eksempel p�a en s�akaltskj�r-avbildning.f) Kvadratet roteres 45 grader (mot klokka). Multiplikasjon med A avbilder vektoren(1; 0) p�a vektoren (p2=2;p2=2) som ogs�a fremkommer ved �a dreie vektoren (1; 0)en vinkel p�a 45 grader mot klokka. Tilsvarende avbildes vektoren (0; 1) p�a vektoren(�p2=2;p2=2) som fremkommer ved �a dreie vektoren (0; 1) en vinkel p�a 45 gradermot klokka. Vi skal senere se at dette er et spesialtilfelle av en generell rotasjons-matrise.L�sning til oppgave 2a) Vi m�a skrumpe �guren i begge retninger (halvere koordinatene)A = [ 0.5 00 0.5];b) Vi m�a skrumpe bare i x-retningen (halvere alle x-koordinater)A = [ 0.5 00 1];c) Vi m�a skrumpe bare i y-retningen (halvere alle y-koordinater)A = [ 1 00 0.5];L�sning til oppgave 3a) Alle x-koordinatene m�a skifte fortegn (vi speiler om y-aksen)A = [-1 00 1];b) Alle y-koordinatene m�a skifte fortegn (vi speiler om x-aksen)A = [1 00 -1];L�sning til oppgave 4a) Alle x-koordinatene m�a skifte fortegn (speiler om y-aksen) 47

Page 54: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

48 L�sningsforslag til lab 1A = [-1 00 1]b) Alle y-koordinatene m�a skifte fortegn (speiler om x-aksen)A = [1 00 -1]c) Roter � radianer (180 grader)A = [-1 00 -1]d) P�a �la speilomx.m legger vi f�lgende kode:function A = speilomx% Returnerer matrise for speiling om x-aksen.A = [ 1 00 -1];P�a �la speilomy.m legger vi f�lgende kode:function A = speilomy% Returnerer matrise for speiling om y-aksen.A = [-1 00 1];P�a �la roter180.m legger vi f�lgende kode:function A = roter180% Returnerer rotasjonsmatrise for dreining 180 grader.A= [-1 00 -1];e) Speiler vi MH om y-aksen f�ar vi HM:>> monogramHM = speilomy * monogramMH;>> tegn(monogramHM)Roterer vi HM 180 grader f�ar vi WH:>> monogramWH = roter180 * monogramHM;>> tegn(monogramHM)Speiler vi WH om y-aksen f�ar vi HW:>> monogramHW = speilomy * monogramWH;>> tegn(monogramHW)Roterer vi HW 180 grader f�ar vi MH:>> monogramMH = roter180 * monogramHW;>> tegn(monogramMH)f) Fra punkt b) vet vi at vi kan g�a direkte fra MH til WH ved �a speile om x-aksen.Og fra punkt e) vet vi at vi oppn�ar det samme ved f�rst �a speile MH om y-aksen ogderetter rotere resultatet HM en vinkel p�a 180 grader. Disse observasjonene tyderp�a at det �a speile om x-aksen gir samme resultat som det �a f�rst speile om y-aksenog deretter rotere 180 grader.

Page 55: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

49g) Matrisene vi f�ar ved kommandoene>> speilomxog>> speilomy*roter180er like.Forklaring: Sammensetning av avbildninger tilsvarer multiplikasjon av matrisenesom representerer avbildningene.h) Vi ser for eksempel at vi kan komme fra MH til HW p�a to forskjellige m�ater: Vikan enten g�a direkte fra MH til HW ved�a rotere 180 grader, eller vi kan f�rst speileMH om x-aksen slik at vi f�ar WH, og deretter speile WH og y-aksen og f�a HW.Dette tyder p�a at det �a rotere 180 grader gir samme resultat som f�rst �a speileom x-aksen og deretter speile om y-aksen. Bruk Matlab til �a sjekke at matrisenespeilomy*speilomx og roter180 er like.L�sning til oppgave 5a) i) Vi dreier pila 30 grader med klokkaA = [ cos(-pi/6) -sin(-pi/6)sin(-pi/6) cos(-pi/6)]ii) Vi dreier pila 60 grader med klokkaB = [ cos(-pi/3) -sin(-pi/3)sin(-pi/3) cos(-pi/3)]b) �A dreie viseren to timer frem er det samme som �a dreie viseren en time frem toganger etter hverandre. Siden vi vet at sammensetning av avbildninger tilsvarermatrisemultiplikasjon, kan vi alts�a benytte matrisen A2 for �a dreie viseren to timerfrem.c) P�a �la roter.m legger vi f�lgende funksjon:function X = roter(v)% Denne funksjonen tar som input en vinkel v% og returnerer matrisen som roterer figuren en vinkel v.X = [ cos(v) -sin(v)sin(v) cos(v)];Vi tester denne ved �a bruke kommandoene>> tegn(roter((-pi)/6)*klokkepil) % klokka viser ett>> tegn(roter(5*(-pi)/6)*klokkepil) % klokka viser femd) Som i punkt b) vet vi at det �a dreie viseren t timer frem er det samme som �adreie viseren en time frem t ganger, og at sammensetning av avbildninger tilsvarermatrisemultiplikasjon. Vi kan derfor bruke matrisen At til �a dreie klokkeviseren ttimer frem ved �a gi kommandoen>> tegn(A^t*klokkepil)Metoden med bruk av potenser krever ere regneoperasjoner enn metoden sombaserer seg direkte p�a rotasjonsmatrisene, og forskjellen blir st�rre jo st�rre t er,siden antall regneoperasjoner som kreves for �a beregne At vokser eksponentielt medt, mens det �a beregne sin(t) og cos(t) ikke blir noe mer komplisert n�ar t vokser.

Page 56: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

50 L�sningsforslag til lab 1L�sning til oppgave 6P�a �la tikkendeklokke.m legger vi f�lgende skript:% Skript: tikkendeklokke% Viser en timeklokke som g�ar en runde (1 time per sekund).% Henter inn en ferdig opptegnet klokkeskive generert av skriptet% klokkeskive.m% Plottepunktene for en timeviser som peker rett opp (kl 12) er% definert i en matrise som genereres av skriptet klokkepil.m% Denne timeviseren roteres vha en rotasjonsmatrise og tegnes opp% i samme figur som klokkeskiven ved hjelp av funksjonen tegn.mfor i=1:13klokkeskive % skript som tegner opp klokkeskivenhold ontegn(roter((i-1)*(-pi/6))*klokkepil) % tegner den roterte viserenhold offpause(1) % venter 1 sek f�r neste figur tegnesendL�sning til oppgave 7 (ekstraoppgave)Vi kan lage en klokkeanimasjon ved �a bruke kommandoene>> for i=1:13klokkeskivehold ontegn(roter((i-1)*(-pi)/6)*klokkepil)F(i)=getframe;hold offendVi kan n�a spille av klokkeanimasjonen (hvor timeviseren beveger seg med en fart p�a entime i sekundet) tre ganger p�a rad med kommandoen>> movie(F,3,1)

Page 57: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

L�sningsforslag til lab 2L�sning til oppgave 1P�a �len gaussA.m legger vi f�lgende skript:A=[6 -2 0; 9 -1 1; 3 7 5];for j=1:2 % gjennomg�ar en og en s�yle (unntatt siste)for i=j+1:3 % gjennomg�ar en og en rad nedenfor pivotenk = A(i,j)/A(j,j); % finner riktig multiplum �a trekke fraA(i,:) = A(i,:) - k*A(j,:); % nuller ut elementene under pivotenend % for iend % for jVi sjekker at vi f�ar samme resultat som da vi utf�rte skrittene manuelt:>> gaussA>> AL�sning til oppgave 2P�a �len gauss.m legger vi f�lgende kode:function U = gauss(A)% Fil: gauss.m% Funksjon som tar en kvadratisk matrise A som inn-parameter, utf�rer% Gauss-eliminasjon uten pivotering p�a denne matrisen og% returnerer en matrise U p�a trappeform.% Funksjonen fungerer bare p�a matriser som kan bringes p�a trappeform% uten at vi st�ter p�a null-elementer i pivot-posisjoner underveis.[m,n]=(size(A));% Antar at matrisen er kvadratisk slik at m=n.% Antar ogs�a at vi aldri st�ter p�a null-elementer i pivot-posisjonene,% s�a pivot-elementene er A(j,j) =0 p�a hoveddiagonalen.for j=1:n-1 % gjennomg�ar en og en s�ylefor i=j+1:m % gjennomg�ar en og en rad nedenfor pivotenk = A(i,j)/A(j,j); % finner riktig multiplum �a trekke fraA(i,:) = A(i,:) - k*A(j,:); % nuller ut elementene under pivotenend % for iend % for jU=A;L�sning til oppgave 3P�a �len gauss delpiv.m legger vi f.eks. f�lgende programkode:Alternativ 1: Funksjon som bruker for-l�kke og breakfunction U = gauss_delpiv(A);% Fil: gauss_delpiv.m% Funksjon som tar en matrise A som inn-parameter, utf�rer% Gauss-eliminasjon med delvis pivotering p�a denne matrisen og% returnerer matrisen p�a trappeform U.[m,n]=size(A)i=1; 51

Page 58: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

52 L�sningsforslag til lab 2for j=1:n[maksverdi,p] = max(abs(A(i:m,j)));q = p+i-1;A([i q],:) = A([q i],:);if A(i,j) = 0for r=i+1:mk = A(r,j)/A(i,j);A(r,:) = A(r,:) - k*A(i,:);end % for ri=i+1;if i>mbreakend % if iend % ifend % for jU=A;Alternativ 2: Funksjon som bruker while-l�kke.P�a �len gauss delpiv.m legger vi f�lgende kode:function U = gauss_delpiv(A);% Fil: gauss_delpiv.m% Funksjon som tar en matrise A som inn-parameter, utf�rer% Gauss-eliminasjon med delvis pivotering p�a denne matrisen og% returnerer matrisen p�a trappeform U.% Rutinen ligner Gauss-eliminasjon uten pivotering, bortsett fra at vi% i hvert steg f�rst velger det maksimale elementet i s�ylen som pivot.[m,n]=size(A)i=1;j=1;while (i<=m) & (j<=n)[maksverdi,p] = max(abs(A(i:m,j)));q = p+i-1;A([i q],:) = A([q i],:);if A(i,j) = 0for r=i+1:mk = A(r,j)/A(i,j);A(r,:) = A(r,:) - k*A(i,:);end % for ri=i+1;j=j+1;else % her er A(i,j)=0j=j+1;end % ifend % whileU=A;Bemerkning: IMatlab er det generelt tidsbesparende �a unng�a for-l�kker dersom mankan bruke vektor-indeksering isteden. I rutinene ovenfor kunne vi erstattet den innerstefor-l�kken (4 linjer) med f�lgende to linjer:

Page 59: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

53k(i+1:m,j) = A(i+1:m,j)/A(i,j);A(i+1:m,j:n) = A(i+1:m,j:n) - k(i+1:m,j)*A(i,j:n);L�sning til oppgave 4P�a �la gauss jordan.m legger vi f.eks f�lgende kode (vi modi�serer her funksjonen medwhile-l�kke fra oppgave 3, men kunne like godt brukt funksjonen med for-l�kke):function U = gauss_jordan(A);% Fil: gauss_jordan.m% Funksjon som tar en matrise A som inn-parameter, utf�rer% Gauss-Jordan-eliminasjon med delvis pivotering p�a denne matrisen og% returnerer matrisen p�a redusert trappeform U.[m,n]=size(A)i=1;j=1;while (i<=m) & (j<=n)[maksverdi,p] = max(abs(A(i:m,j)));q = p+i-1;A([i q],:) = A([q i],:);if A(i,j) = 0A(i,:) = A(i,:)/A(i,j); % skaffer ledende 1-er i pivot-radenfor r=1:m % g�ar gjennom alle radeneif r =i % bortsett fra rad nr i (pivot-raden)k = A(r,j);A(r,:) = A(r,:) - k*A(i,:); % nuller ut elementet i s�yle jend %ifend % for ri=i+1;j=j+1;else % her er A(i,j)=0j=j+1;end % ifend % whileU=A;

Page 60: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

54 L�sningsforslag til lab 2Utvidet l�sningsforslag til oppgave 3 med ere kommentarerfunction U = gauss_delvpiv(A);[m,n]=size(A) % leser inn antall rader m og antall s�yler n i matrisen Ai=1; % Vi starter i f�rste rad og setter derfor radindeksen 'i' lik 1% Vi skal n�a gjennomg�a en og en s�yle:for j=1:n% For hver s�yle j skal vi finne elementet med st�rst absoluttverdi% i denne s�ylen fra rad nr i og nedover til rad m, dvs blant elementene% i A(i:m,j). Verdien av det maksimale elementet returneres i variabelen% maksverdi, mens antall rader vi m�atte g�a nedover fra rad nr i for �a% finne det maksimale elementet, returneres i variabelen p.% (Dersom det fins flere like store maksimale elementer i en s�yle,% velger MATLAB den f�rste raden som inneholder et slikt maksimalt% element.)[maksverdi,p] = max(abs(A(i:m,j)));% N�a kan vi beregne radnummeret q til raden hvor det maksimale elementet% i s�yle nr j befinner seg ved �a justere indeksen 'p' (vi m�a legge til% (i-1) rader siden letingen etter maksimalelementet begynte i rad nr i)q = p+i-1;% S�a flytter vi rad nr q med det maksimale elementet opp ved �a bytte om% rad q og rad i (den �verste raden vi holder p�a med i dette trinnet)A([i q],:) = A([q i],:);% Vi har n�a f�att det maksimale elementet i s�yle nr j som v�art nye% pivot-element A(i,j). Resten av prosedyren er den samme som f�r:% Vi �nsker �a nulle ut alle elementene under pivot-elementet i s�yle j.% Hvis pivot-elementet A(i,j) vi n�a har f�att er forskjellig fra null,% skal vi f�rst dele alle rader nedenfor med dette pivot-elementet for% �a finne det riktige multiplumet av rad nr i som vi m�a trekke fra den% aktuelle raden for �a nulle ut elementet under pivot-elementet i s�yle% nr j. Deretter trekker vi fra det riktige multiplumet av rad nr i.if A(i,j) = 0for r=i+1:mk = A(r,j)/A(i,j);A(r,:) = A(r,:) - k*A(i,:);end % for r% Vi skal n�a g�a videre til neste s�yle og lete etter et pivot-element i% neste rad. Vi �ker derfor radindeksen 'i' med 1. Hvis radindeksen blir% st�rre enn totalt antall rader i matrisen, avbryter vi prosessen.i=i+1;if i>mbreakendend % if A(i,j)% Hvis elementet i pivot-posisjonen (i,j) er null, vet vi (siden det% var det maksimale elementet i s�ylen) at alle elementer under ogs�a er% null.% Vi skal da bare g�a videre til neste s�yle uten �a �ke radindeksen.end % for jU=A;

Page 61: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

Hint til lab 3Hint til oppgave 1Du kan godt l�se oppgaven ved�a bruke en for-l�kke og break, men vi velger�a gi en pro-gramskisse som benytter en while-l�kke. Her trenger du bare �a erstatte innmaten i deto parantesene <gi brukeren beskjed om s�ylene er line�rt avhengige eller uavhengige>og <betingelse oppfylt> med riktig Matlab-kode.function linavh(A)% Fil: linavh.m% Funksjon som tar en matrise som inn-parameter og sjekker om% s�ylene i matrisen er line�rt avhengige eller uavhengige.[m,n]=size(A);if m<n<gi brukeren beskjed om s�ylene er line�rt avhengige eller uavhengige>elseU=rref(A)uavh=true;j=1;while uavh==true & j<=nif <betingelse oppfylt>disp('S�ylevektorene er line�rt avhengige')uavh=false;endj=j+1;endif uavh==truedisp('S�ylevektorene er line�rt uavhengige')endendHint til oppgave 2Du kan godt l�se oppgaven ved �a bruke en for-l�kke og break, men vi velger �a gi enprogramskisse som benytter en while-l�kke. Her trenger du bare �a erstatte innmaten iparantesen <betingelser oppfylt> med riktig Matlab-kode.function inkons(A,b)% Fil: inkons.m% Funksjon som tar en matrise A og en vektor b som inn-parameter, og% sjekker om ligningssystemet A*x=b er konsistent eller inkonsistent.[m,n]=size(A);if length(b) =mdisp('Vektoren du tastet inn har feil dimensjon')elseAug=[A,b]; % utvidet matrise med dimensjon m*(n+1)U=rref(Aug)konsistent=true;i=1;while konsistent==true & i<=m 55

Page 62: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

56 Hint til lab 3if <betingelser oppfylt>disp('Ligningssystemet er inkonsistent')konsistent=false;endi=i+1;endif konsistent==truedisp('Ligningssystemet er konsistent')endendHint til oppgave 3Du kan godt l�se oppgaven ved �a bruke en for-l�kke og break, men vi velger �a gien programskisse som benytter en while-l�kke. Her trenger du bare �a erstatte inn-maten i de �re parantesene <betingelse oppfylt>, <betingelser oppfylt>, <gi brukerenbeskjed om antall l�sninger> og <gi variabelen entydig riktig sannhetsverdi>, medriktig Matlab-kode.function antlosn(A,b)% Fil: antlosn.m% Funksjon som tar en matrise A og en vektor b som inn-parameter, og% sjekker om ligningssystemet A*x=b er inkonsistent eller konsistent.% Dersom ligningssystemet er konsistent, sjekker funksjonen om det% har uendelig mange l�sninger eller en entydig l�sning.[m,n]=size(A);if length(b) =mdisp('Vektoren du oppga har feil dimensjon i forhold til matrisen')elseAug=[A,b]; % utvidet matrise med dimensjon m*(n+1)U=rref(Aug)i=1;konsistent=true;while konsistent == true & i<=mif <betingelser oppfylt>disp('Ligningssystemet er inkonsistent')konsistent=false;endi=i+1;endif konsistent==truedisp('Ligningssystemet er konsistent')entydig=true;if m<n<gi brukeren beskjed om antall l�sninger><gi variabelen entydig riktig sannhetsverdi>elsej=1;while entydig==true & (j<=n) % trenger ingen radindeks siden n<=mif <betingelse oppfylt>disp('Systemet har uendelig mange l�sninger')

Page 63: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

57entydig=false;endj=j+1;endif entydig==truedisp('Ligningssystemet har n�yaktig en l�sning')endend % if m<nend % if konsistentend % if length

Page 64: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

58 Hint til lab 3

Page 65: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

L�sningsforslag til lab 3L�sning til oppgave 1S�ylene i en matrise A er line�rt avhengige hvis og bare hvis det tilsvarende homogeneligningssystemet Ax = 0 har uendelig mange l�sninger. Dette vil v�re tilfelle dersomdet �nnes frie variable, dvs dersom det �nnes pivot-frie s�yler. Dette vil opplagt �nneshvis matrisen har ere s�yler enn rader, dvs hvis m < n. Hvis m � n kan vi testeom det �nnes pivot-frie s�yler ved �a unders�ke om det �nnes elementer p�a diagonalensom er null i den reduserte trappeformen til matrisen A. Det f�rste null-elementet vi�nner hvis vi leter nedover diagonalen, m�a st�a i en pivot-fri s�yle. (V�r sikker p�a atdu skj�nner hvorfor! Dette betyr ikke at vi kan �nne alle pivot-frie s�yler bare ved �alete etter nuller p�a diagonalen! Men siden vi bare er interessert i om det �nnes noenpivot-fri s�yle, er det nok �a �nne den f�rste.)Vi gir f�rst et l�sningsalternativ som bruker en while-l�kke:function linavh(A)% Fil: linavh.m% Funksjon som tar en matrise som inn-parameter og sjekker om% s�ylene i matrisen er line�rt avhengige eller uavhengige.% S�ylene er line�rt avhengige hvis det tilsvarende homogene% ligningssystemet har uendelig mange l�sninger, dvs dersom det% finnes frie variabler. Dette tilsvarer at det finnes pivot-frie% s�yler, noe som vil v�re tilfelle hvis m<n eller hvis det finnes% elementer p�a diagonalen som er null i den reduserte trappeformen.[m,n]=size(A);if m<ndisp('S�ylevektorene er line�rt avhengige pga flere s�yler enn rader')elseU=rref(A)uavh=true;j=1;while uavh==true & j<=nif U(j,j)==0 % Sjekker om det fins et null-element p�a diagonalendisp('S�ylevektorene er line�rt avhengige')uavh=false;endj=j+1;endif uavh==truedisp('S�ylevektorene er line�rt uavhengige')endendAlternativ l�sning med for-l�kke og breakfunction linavh(A)% Fil: linavh.m% Funksjon som tar en matrise som inn-parameter og sjekker om% s�ylene i matrisen er line�rt avhengige eller uavhengige. 59

Page 66: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

60 L�sningsforslag til lab 3[m,n]=size(A);if m<ndisp('S�ylevektorene er line�rt avhengige pga flere s�yler enn rader')elseU=rref(A)uavh=true;for j=1:nif U(j,j)==0 % Sjekker om det fins et null-element p�a diagonalendisp('S�ylevektorene er line�rt avhengige')uavh=false;break;endendif uavh==truedisp('S�ylevektorene er line�rt uavhengige')endendL�sning til oppgave 2Et ligningssystem av typen Ax = b er konsistent hvis og bare hvis den reduserte trappe-formen til den utvidete matrisen (augmented matrix) [A;b] ikke har en rad p�a formen[0;0; : : : ;0; c] hvor c er forskjellig fra null.Vi gir f�rst et l�sningsalternativ som bruker en while-l�kke:function inkons(A,b)% Fil: inkons.m% Funksjon som tar en matrise A og en vektor b som inn-parameter, og% sjekker om ligningssystemet A*x=b er konsistent eller inkonsistent.% Husk at et slikt ligningssystem er konsistent hvis og bare hvis den% reduserte trappeformen til den utvidete matrisen ikke har en rad p�a% formen [0 0 ...0 c] hvor c er forskjellig fra null.[m,n]=size(A);if length(b) =mdisp('Vektoren du tastet inn har feil dimensjon')elseAug=[A,b]; % utvidet matrise med dimensjon m*(n+1)U=rref(Aug)konsistent=true;i=1;while konsistent==true & i<=mif (U(i,1:n)==zeros(1,n)) & (U(i,n+1) =0)disp('Ligningssystemet er inkonsistent')konsistent=false;endi=i+1;endif konsistent==truedisp('Ligningssystemet er konsistent')endend

Page 67: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

61Alternativ l�sning med for-l�kke og breakfunction inkons(A,b)% Fil: inkons.m% Funksjon som tar en matrise A og en vektor b som inn-parameter, og% sjekker om ligningssystemet A*x=b er konsistent eller inkonsistent.[m,n]=size(A);if length(b) =mdisp('Vektoren du tastet inn har feil dimensjon')elseAug=[A,b]; % utvidet matrise med dimensjon m*(n+1)U=rref(Aug)konsistent=true;for i=1:mif (U(i,1:n)==zeros(1,n)) & (U(i,n+1) =0)disp('Ligningssystemet er inkonsistent')konsistent=false;break;endendif konsistent==truedisp('Ligningssystemet er konsistent')endendL�sning til oppgave 3Et konsistent ligningssystem Ax = b har uendelig mange l�sninger dersom det �nnesfrie variabler, dvs dersom det �nnes s�yler som ikke har pivot-elementer. Dette vil v�retilfelle hvis matrisen har ere s�yler enn rader, eller hvis det �nnes null-elementer p�adiagonalen.P�a samme m�ate som i de foreg�aende oppgavene kan du godt bruke en for-l�kke ogbreak, men vi gir her et forslag som benytter while-l�kker:function antlosn(A,b)% Fil: antlosn.m% Funksjon som tar en matrise A og en vektor b som inn-parameter og% sjekker om ligningssystemet A*x=b er inkonsistent eller konsistent.% Dersom ligningssystemet er konsistent, sjekker funksjonen om det% har uendelig mange l�sninger eller en entydig l�sning.% Husk at systemet har uendelig mange l�sninger dersom det finnes% frie variabler, dvs dersom det finnes s�yler som ikke har% pivot-elementer. Dette vil v�re tilfelle hvis m<n eller hvis det% finnes null-elementer p�a diagonalen A(j,j).[m,n]=size(A);if length(b) =mdisp('Vektoren du oppga har feil dimensjon i forhold til matrisen')elseAug=[A,b]; % utvidet matrise med dimensjon m*(n+1)U=rref(Aug)% Sjekker om ligningssystemet er inkonsistent ved �a lete etter

Page 68: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

62 L�sningsforslag til lab 3% en rad p�a formen [0 0 ... 0 c] hvor c er forskjellig fra null.i=1;konsistent=true;while konsistent == true & i<=mif (U(i,1:n)==zeros(1,n)) & (U(i,n+1) =0)disp('Ligningssystemet er inkonsistent')konsistent=false;endi=i+1;endif konsistent==truedisp('Ligningssystemet er konsistent')entydig=true;if m<n % det m�a finnes pivot-frie s�ylerdisp('Systemet har uendelig mange l�sninger')entydig=false;elsej=1;while entydig==true & (j<=n) % trenger ingen radindeks siden n<=mif U(j,j)==0 % det m�a finnes pivot-frie s�ylerdisp('Systemet har uendelig mange l�sninger')entydig=false;endj=j+1;endif entydig==truedisp('Systemet har n�yaktig en l�sning')endend %if m<nend % if konsistentend % if lengthL�sning til oppgave 4a) Resultatet av programkj�ringen b�r v�re:>> linavh(A)U = 1 0 00 0 10 0 0S�ylevektorene er line�rt avhengige>> linavh(B)U = 1 0 0 00 1 0 20 0 1 00 0 0 0S�ylevektorene er line�rt avhengige>> linavh(C)S�ylevektorene er line�rt avhengige pga flere s�yler enn rader

Page 69: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

63>> linavh(D)U = 1 0 0 00 1 0 00 0 1 00 0 0 10 0 0 0S�ylevektorene er line�rt uavhengige>> linavh(E)S�ylevektorene er line�rt avhengige pga flere s�yler enn raderb) Resultatet av programkj�ringene b�r v�re:>> inkons(A,a)U = 1 0 0 00 0 1 00 0 0 1Ligningssystemet er inkonsistent>> inkons(B,b)U = 1 0 0 0 00 1 0 2 00 0 1 0 00 0 0 0 1Ligningssystemet er inkonsistent>> inkons(C,b)U = 1.0000 0 0 0 0 0.96000 1.0000 0 2.0000 0 -1.48000 0 1.0000 0 0 1.68000 0 0 0 1.0000 -2.0400Ligningssystemet er konsistent>> antlosn(C,b)U = 1.0000 0 0 0 0 0.96000 1.0000 0 2.0000 0 -1.48000 0 1.0000 0 0 1.68000 0 0 0 1.0000 -2.0400Ligningssystemet er konsistentSystemet har uendelig mange l�sninger>> inkons(D,d)U = 1 0 0 0 00 1 0 0 20 0 1 0 00 0 0 1 00 0 0 0 0Ligningssystemet er konsistent>> antlosn(D,d)

Page 70: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

64 L�sningsforslag til lab 3U = 1 0 0 0 00 1 0 0 20 0 1 0 00 0 0 1 00 0 0 0 0Ligningssystemet er konsistentSystemet har n�yaktig en l�sning>> inkons(E,d)U = 1.0000 0 0 0 0 -1.0308 -1.25680 1.0000 0 0 0 -0.5992 -0.88760 0 1.0000 0 0 1.6646 1.27000 0 0 1.0000 0 0.3321 1.94160 0 0 0 1.0000 0.2866 -0.0166Ligningssystemet er konsistent>> antlosny(E,d)U = 1.0000 0 0 0 0 -1.0308 -1.25680 1.0000 0 0 0 -0.5992 -0.88760 0 1.0000 0 0 1.6646 1.27000 0 0 1.0000 0 0.3321 1.94160 0 0 0 1.0000 0.2866 -0.0166Ligningssystemet er konsistentSystemet har uendelig mange l�sninger

Page 71: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

L�sningsforslag til lab 4L�sning til oppgave 1a) Vi bruker f�lgende for-l�kke:>> x=1;>> for t=1:5xny=x-(x^3+2*x^2-2)/(3*x^2+4*x);x=xnyendMatlab svarer da med �a skrive ut alle tiln�rmingsverdiene den regner ut:x = 0.8571x = 0.8395x = 0.8393x = 0.8393x = 0.8393Hvis vi bruker kommandoen >> format long f�r vi kj�rer l�kken, f�ar vi se eredesimaler i tiln�rmingsverdiene:x =0.85714285714286x =0.83954451345756x =0.83928681006802x =0.83928675521416x =0.83928675521416Det ser ut som om tiln�rmingene konvergerer mot verdien x = 0:83928675521416.For �a teste om funksjonsverdien i dette punktet er n�r null, gir vi kommandoen>> x^3+2*x^2-2ans =-2.220446049250313e-16Funksjonsverdien i punktet er alts�a sv�rt n�r null.b) Etter tre iterasjoner forandrer ikke de �re f�rste desimalene i tiln�rmingen seg lenger.Etter �re iterasjoner forandrer ikke de tolv f�rste desimalene seg lenger.L�sning til oppgave 2a) P�a m-�len newton.m legger vi f�lgende Matlab-kode: 65

Page 72: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

66 L�sningsforslag til lab 4function x = newton(start,fogdf)% MATLAB-funksjon som utf�rer Newtons metode p�a en funksjon% f med derivert df spesifisert p�a filen 'fogdf.m'.% Innparametre:% start: startpunkt for iterasjonen% fogdf: navn p�a MATLAB-funksjon som returnerer vektor [f,df]% hvor f er funksjonen vi skal benytte Newtons metode p�a% mens df er den deriverte av denne funksjonenmaxit=30;tol=0.0000001;diff=tol+1;x=start;[f,df]=feval(fogdf,x);for t=1:maxitxny=x-f/df;diff=abs(xny-x);x=xny;[f,df]=feval(fogdf,x);fprintf('itnr=%2d x=%15.12f f(x)=%15.12fnn',t,x,f)if diff<tolbreak;end %ifend %for% Kalles f.eks med kommandoen:% >> x=newton(1,'fogd')% NB! Merk apostrofene rundt navnet p�a MATLAB-funksjonen% som sendes med som innparameterb) For �a kunne bruke Matlab-funksjonen newton p�a funksjonen f(x) = x3 + 2x2 � 2,lager vi en m-�l fogder.m hvor vi spesi�serer f(x) og dens deriverte f 0(x) = 3x2+4xp�a f�lgende m�atefunction [y,d]=fogder(x)% returnerer funksjonsverdien til f(x)=x^3+2*x^2-2 i punktet x% sammen med den deriverte f'(x)=3*x^2+4*x i det samme punktety=x^3+2*x^2-2;d=3*x^2+4*x;Vi kj�rer Matlab-funksjonen newton p�a funksjonen f med startpunkt x0 = 1 ved�a gi kommandoen>> x=newton(1,'fogder')Hvis du har brukt den anbefalte kommandoen fprintf for �a f�a pen utskrift p�askjermen, vil Matlab n�a svare med f�lgende utskriftitnr= 1 x= 0.857142857143 f(x)= 0.099125364431itnr= 2 x= 0.839544513458 f(x)= 0.001410328965itnr= 3 x= 0.839286810068 f(x)= 0.000000300070itnr= 4 x= 0.839286755214 f(x)= 0.000000000000x =0.83928675521416

Page 73: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

67c) F�rst plotter vi funksjonen f(x) = x3 + 2x2 � 30x� 5 over intervallet [�8; 6] ved �agi f�lgende kommandoer:>> x=[-8:0.1:6];>> y=x.^3+2.*x.^2-30.*x-5; %Husk punktum for elementvise operasjoner>> plot(x,y)For �a kunne bruke Matlab-funksjonen newton p�a funksjonen f(x) = x3 + 2x2 �30x� 5, lager vi en m-�l fogd.m hvor vi spesi�serer f(x) og dens deriverte f 0(x) =3x2 + 2x� 30 p�a f�lgende m�atefunction [y,d]=fogd(x)% returnerer funksjonsverdien til f(x)=x^3+2*x^2-30*x-5 i punktet x% sammen med den deriverte f'(x)=3*x^2+2*x-30 i det samme punktety=x^3+2*x^2-30*x-5;d=3*x^2+2*x-30;Vi kj�rer Matlab-funksjonen newton p�a funksjonen f med startpunkt x0 = 1 ved�a gi kommandoen>> x=newton(1,'fogd')itnr= 1 x=-0.280000000000 f(x)= 3.534848000000itnr= 2 x=-0.163433757189 f(x)=-0.047931510926itnr= 3 x=-0.165018440949 f(x)= 0.000521768852itnr= 4 x=-0.165001191448 f(x)=-0.000005692524itnr= 5 x=-0.165001379641 f(x)= 0.000000062104itnr= 6 x=-0.165001377588 f(x)=-0.000000000678x =-0.16500137758754Vi ser at funksjonsverdien i tiln�rmingspunktet er sv�rt n�r null, s�a dette er engod tiln�rming til et nullpunkt for funksjonen.Ved�a skifte ut startpunktet med hhv 4 og �4, f�ar vi p�a tilsvarende m�ate tiln�rmings-verdier x = 4:66323383636907 og x = �6:49823244654976 for de to andre nullpunkt-ene til funksjonen.d) For �a studere funksjonen g(x) = x3 � 5x lager vi f�rst et plott av funksjonen overintervallet [�3; 3] ved �a gi f�lgende kommandoer:>> x=[-3:0.1:3];>> y=x.^3-5.*x;>> plot(x,y)For �a kunne bruke Matlab-funksjonen newton p�a funksjonen g(x) = x3� 5x, lagervi en m-�l gogd.m hvor vi spesi�serer g(x) og dens deriverte g0(x) = 3x2 � 5 p�af�lgende m�atefunction [y,d]=gogd(x)% returnerer funksjonsverdien til g(x) = x^3� 5 � x i punktet x% og den deriverte g'(x)=3*x^2-5 i samme punkty=x^3-5*x;d=3*x^2-5;Vi kj�rer Matlab-funksjonen newton p�a funksjonen g med startpunkt x0 = 1 ved�a gi kommandoen

Page 74: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

68 L�sningsforslag til lab 4>> x=newton(1,'gogd')Vi ser da at tiln�rmingsverdiene hopper mellom 1 og -1 (g�ar i sykel), og n�rmer segalts�a ikke noe nullpunkt for funksjonen (funksjonsverdiene i de to punktene er hhv�4 og 4). �Arsaken til denne oppf�rselen er at tangenten til grafen over startpunktetx = 1 skj�rer x-aksen i punktet x = �1 (som alts�a blir neste tiln�rmingspunkt),mens tangenten til grafen over punktet x = �1 skj�rer x-aksen i punktet x = 1(slik at det neste tiln�rmingspunktet blir lik starpunktet). Dermed f�rer Newtonsmetode oss bare i en sykel mellom disse to punktene.N�ar vi etterp�a pr�ver med startpunktet x0 = 2, konvergerer tiln�rmingsverdienepent mot et tiln�rmet nullpunkt x = 2:23606797749979 for funksjonen. Oppgavenillustrerer alts�a hvor stor betydning valg av startpunkt kan ha for om Newtonsmetode konvergerer eller ikke: velger vi startpunktet x0 = 1 vil tiln�rmingsverdieneg�a inn i en sykel og ikke konvergere mot noe nullpunkt, men velger vi startpunktetx0 = 2, f�ar vi rask konvergens mot et nullpunkt.Vi lager et plott av funksjonen h(x) = x 13 over intervallet [�4; 4] ved �a gi f�lgendekommandoer:>> x=[-4:0.05:4];>> y=sign(x).*abs(x).^(1./3);>> plot(x,y)For �a bruke Matlab-funksjonen newton p�a funksjonen h(x) = x 13 lager vi en m-�lhogd.m hvor vi spesi�serer h(x) og dens deriverte h0(x) = 13x� 23 p�a f�lgende m�atefunction [y,d]=hogd(x)% returnerer funksjonsverdien til h(x)=x^(1/3) i punktet x% og den deriverte h'(x)=(1/3)*x^(-2/3) i samme punkty=sign(x)*abs(x)^(1/3);d=(1/3)*abs(x)^(-2/3);Vi kj�rer Matlab-funksjonen newton p�a funksjonen h med startpunkt x0 = 1 ogved �a gi kommandoen>> x=newton(1,'hogd')Her vil tiln�rmingsverdiene divergere lenger og lenger bort fra nullpunktet til funk-sjonen. �Arsaken til denne oppf�rselen er at tangenten til grafen over startpunktetx0 = 1, er s�a slak at det neste tiln�rmingspunktet x1 (som ligger der hvor tangen-ten krysser x-aksen) blir liggende lenger borte fra nullpunktet origo enn x0 gjorde.Tangenten i det nye tiln�rmingspunktet x1 er enda slakere, og f�rer oss derfor endalenger bort fra origo for �a �nne neste tiln�rmingsverdi x2 osv.L�sning til oppgave 3a) P�a �len kompleks.m legger vi f�lgende Matlab-skript:% Skript som genererer et bilde av hvilke punkter i planet som% gir konvergens mot samme nullpunkt n�ar vi bruker Newtons metode% p�a den komplekse funksjonen f(z)=z^3+a*z+b% Punktene i planet tilordnes en farge som angir hvilket av% nullpunktene de gir konvergens mot.% Vi lager f�rst et m*n-gitter av punkter i planet, og deretter

Page 75: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

69% genererer vi en m*n-matrise T som inneholder fargeverdiene hvert av% punktene skal ha.% Fargeverdien i et punkt finner vi ved �a bruke Newtons metode p�a% punktet, og se om resultatet havner n�r ett av nullpunktene for% funksjonen. Vi gir de punktene som konvergerer mot samme nullpunkt,% den samme fargen.% Lager vektorer som inneholder hhv real- of imagin�rdelen til% punktene i gitteret vi skal studerex=[-2:0.01:2];y=[-2:0.01:2];[X,Y]=meshgrid(x,y);[m,n]=size(X);maxit=30; % maksimalt antall iterasjoner som skal utf�restol=0.001; %toleranseT=27*ones(m,n); %initialiserer fargene til �a v�re 27 (turkis)% Velger parametere til funksjonen f(z)=z^3+a*z+ba=0;b=-1;% Vi angir koeffisientene foran potensene av z i polynomet z^3+a*x+b:p=[1 0 a b];% Vi lar Matlab finne numeriske verdier for de tre nullpunktene til% polynomet:rts=roots(p);% S�a gjennoml�per vi ett og ett punkt i gitteret ved en dobbelt% for-l�kke:for j=1:mfor k=1:nz=X(j,k)+i*Y(j,k);% Kj�rer gjentatte iterasjoner av Newtons metode p�a det aktuelle% punktet i gitteret inntil det ligger n�rmere et av% nullpunktene enn den angitte toleransen (eller til vi har utf�rt% maxit antall iterasjoner).% Fargeverdien til punktet registreres i matrisen T og settes til% hhv 1 (bl�a), 44 (gul) eller 60 (r�d) avhengig av hvilket nullpunkt% det gir konvergens mot.for t=1:maxitzny=z-(z^3+a*z+b)/(3*z^2+a);z=zny;if abs(z-rts(1))<tolT(j,k)=1;break;endif abs(z-rts(2))<tolT(j,k)=44;break;endif abs(z-rts(3))<tolT(j,k)=60;break;

Page 76: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

70 L�sningsforslag til lab 4endend %for tend %for kend %for jimage(x,y,T) %fargelegger punktet (x(j),y(k)) i planet med fargen%angitt av verdien av matrise-elementet T(j,k)axis xy %setter aksesystemet i vanlig xy-orientering;colorbar %tegner opp s�yle med fargeverdiene ved siden av plottet% Vi kan eventuelt skrive figuren til fil ved �a f�ye til kommandoen:% print -depsc2 'fig.eps'b) Den eneste modi�kasjonen du trenger �a gj�re i skriptet fra punkt a) er �a setteparameterverdiene til �a v�re a = 2 og b = 0, og deretter a = �1 og b = 2.L�sning til oppgave 4a) En modi�sert Matlab-funksjon som gir punktene dypere fargeval�r jo raskere kon-vergens de gir mot et nullpunkt, kan se slik ut:function kompleks(a,b)% Funksjon som genererer et bilde av hvilke punkter i planet som% gir konvergens mot samme nullpunkt n�ar vi bruker Newtons metode% p�a den komplekse funksjonen f(z)=z^3+a*z+b, hvor koeffisientene% a og b er innparametre til funksjonen.% Punktene i planet tilordnes en farge som angir hvilket av% nullpunktene de gir konvergens mot.% I denne versjonen gir vi i tillegg punktene dypere fargeval�r jo% raskere konvergensen mot nullpunktet g�ar.x=[-2:0.01:2];y=[-2:0.01:2];[X,Y]=meshgrid(x,y);[m,n]=size(X);maxit=30; % maksimalt antall iterasjoner som skal utf�restol=0.001; %toleranseT=27*ones(m,n); %initialiserer alle fargeverdiene til 27 (turkis)% Vi angir koeffisientene foran potensene av z i polynomet z^3+a*z+b:p=[1 0 a b];% Vi lar Matlab finne numeriske verdier for de tre nullpunktene til% polynomet:rts=roots(p);% S�a gjennoml�per vi ett og ett punkt i gitteret ved en dobbelt% for-l�kke:for j=1:mfor k=1:nz=X(j,k)+i*Y(j,k);% Kj�rer gjentatte iterasjoner av Newtons metode p�a det aktuelle% punktet i gitteret inntil resultatet ligger n�rmere et av% nullpunktene enn den angitte toleransen (eller til vi har utf�rt% maxit antall iterasjoner).% Fargeverdien til punktet registreres i matrisen T og settes til% hhv. bl�a (verdier fra 1 og litt oppover), gul (verdier fra 48

Page 77: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

71% og litt nedover) eller r�d (verdier fra 64 og litt nedover)% avhengig av hvilket nullpunkt det gir konvergens mot. Vi% indikerer konvergenshastigheten ved �a justere fargeverdien slik% at fargeval�ren blir lysere jo langsommere konvergensen g�ar.for t=1:maxitzny=z-(z^3+a*z+b)/(3*z^2+a);z=zny;if abs(z-rts(1))<tolT(j,k)=1+t*(23/maxit);break;endif abs(z-rts(2))<tolT(j,k)=48-t*(23/maxit);break;endif abs(z-rts(3))<tolT(j,k)=64-t*(23/maxit);break;endend %for tend %for kend %for jimage(x,y,T) %fargelegger punktet (x(j),y(k)) i planet med fargen%angitt av verdien av matrise-elementet T(j,k)axis xy %setter aksesystemet i vanlig xy-orientering;colorbar %tegner opp s�yle med fargeverdiene ved siden av plottet% Vi kan eventuelt skrive figuren til fil ved �a f�ye til kommandoen:% print -depsc2 'fig.eps'b) Nullpunktene er de tre prikkene med m�rkest fargeval�r i de st�rste fargeomr�adene avbl�att, gult og r�dt. Vi ser at rundt hvert nullpunkt er det et forholdsvis stort omr�adehvor alle punkter konvergerer mot nullpunktet, men konvergensen g�ar raskere (dyp-ere fargeval�r) jo n�rmerer nullpunktet startpunktet ligger. Inni hvert hovedfar-geomr�ade �nner vi imidlertid mindre omr�ader som konvergerer mot de andre null-punktene, og dette gir det intrikate fraktale bildet.c) Her setter du bare parameterverdiene til �a v�re a = 2 og b = 0, og deretter a = �1og b = 2.L�sning til oppgave 5Den modi�serteMatlab-funksjonen som gir mulighet til �a ytte sentrum og zoome innp�a et hvilket som helst punkt, kan se slik ut:function komplekszoom(sentrumx,sentrumy,zoom)% Funksjon som genererer et bilde av hvilke punkter i planet som% gir konvergens mot samme nullpunkt n�ar vi bruker Newtons metode% p�a den komplekse funksjonen f(z)=z^3+a*z+b% Punktene i planet tilordnes en farge som angir hvilket av% nullpunktene de gir konvergens mot, og hvor rask konvergensen er.% Denne versjonen kan brukes til �a zoome inn p�a et hvilket som helst% punkt (xsentrum, ysentrum) som angis som innparameter til prosedyren.

Page 78: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

72 L�sningsforslag til lab 4% I tillegg angis �nsket forst�rrelse ved innparameteren zoom. Hvis vi% ikke �nsker �a forst�rre noe, velges zoom=1, �nsker vi dobbelt% forst�rrelse, velges zoom=2 osv.% Vi regner ut (halve) lengden p�a intervallet ved hjelp av den% oppgitte forst�rrelsen gitt ved innparameteren zoom.% Denne lengden er i utgangspunktet lik 2 f�r forst�rrelse.lengde=2/zoom;x=linspace(sentrumx-lengde,sentrumx+lengde,400);y=linspace(sentrumy-lengde,sentrumy+lengde,400);[X,Y]=meshgrid(x,y);[m,n]=size(X);maxit=30; % maksimalt antall iterasjoner som skal utf�restol=0.001; %toleranseT=27*ones(m,n); %initialiserer alle fargeverdiene til �a v�re 27 (turkis)% Velger parametere til funksjonen f(z)=z^3+a*z+ba=0;b=-1;% Vi angir koeffisientene foran potensene av z i polynomet z^3+a*x+b:p=[1 0 a b];% Vi lar Matlab finne numeriske verdier for de tre nullpunktene til% polynomet:rts=roots(p);% S�a gjennoml�per vi ett og ett punkt i gitteret ved en dobbelt% for-l�kke:for j=1:mfor k=1:nz=X(j,k)+i*Y(j,k);for t=1:maxitzny=z-(z^3+a*z+b)/(3*z^2+a);z=zny;if abs(z-rts(1))<tolT(j,k)=1+t*(23/maxit);break;endif abs(z-rts(2))<tolT(j,k)=48-t*(23/maxit);break;endif abs(z-rts(3))<tolT(j,k)=64-t*(23/maxit);break;endend %for tend %for kend %for jimage(x,y,T) %fargelegger punktet (x(j),y(k)) i planet med fargen%angitt av verdien av matrise-elementet T(j,k)axis xy %setter aksesystemet i vanlig xy-orientering, ellers ville%verdiene p�a y-aksen g�ar i motsatt retning av vanlig

Page 79: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

73colorbar %tegner opp s�yle med fargeverdiene ved siden av plottet% Vi kan eventuelt skrive figuren til fil ved �a f�ye til kommandoen:% print -depsc2 'fig.eps'For �a lage en liten sekvens av bilder som zoomer inn p�a origo, kan vi f.eks dobleforst�rrelsen hver gang ved �a gi kommandoene>> komplekszoom(0,0,1)>> komplekszoom(0,0,2)>> komplekszoom(0,0,4)>> komplekszoom(0,0,8)Tilsvarende kan vi lage en sekvens av bilder som zoomer inn p�a punktet (�0:8; 0) ved�a bytte ut f�rste parameter med �0:8.L�sning p�a ekstraoppgave: For�a lage en animasjon som zoomer mer gradvis inn p�apunktet (�0:8; 0), kan vi bl�ase opp forst�rrelsene langsommere ved �a velge en mindreoppbl�asningsfaktor, f.eks faktor=1.25 (da vi fordoblet bildest�rrelsen ovenfor var dennefaktoren lik 2). F�lgende kommandoer lager en slik animasjon:>> faktor=1.25;>> makszoom=10;>> for t=1:makszoomkomplekszoom(-0.8,0,faktor^t);pause(0.1);F(t)=getframe; %plott nummer t lagres i F(t)end>> movie(F,1,2); %spiller animasjonen en gang med 2 bilder pr sekund.L�sning til oppgave 6a) Vi legger f�lgende Matlab-kode p�a �len 'newton er.m'function x = newtonfler(start,fogj)% MATLAB-funksjon som utf�rer Newtons metode p�a en vektorfunksjon% F med Jacobi-matrise J spesifisert p�a filen 'fogj.m'.% Innparametre:% start: s�ylevektor som inneholder startpunktet for iterasjonen% fogj: navn p�a MATLAB-funksjon som returnerer vektor [F,J] hvor F% er en vektorfunksjon gitt som en s�ylevektor med komponenter% gitt av funksjonene i systemet vi skal benytte Newtons metode p�a,% mens J er den tilh�rende Jacobi-matrisen.maxit=30;tol=0.0000001;diff=tol+1;x=start;[F,J]=feval(fogj,x);for t=1:maxitxny=x-JnF;diff=norm(xny-x);x=xny;[F,J]=feval(fogj,x);fprintf('itnr=%2d x=[%13.10f,%13.10f] F(x)=[%13.10f,%13.10f]nn',...

Page 80: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

74 L�sningsforslag til lab 4t,x(1),x(2),F(1),F(2))if diff<tolbreak;end %ifend %for% Kalles f.eks med kommandoen:% >> x=newtonfler([-7;1],'fogjac')% NB! Merk apostofene rundt navnet p�a funksjonsprosedyren% som sendes med som innparameter.b) Vi tegner opp niv�akurvene f(x; y) = 0 og g(x; y) = 0 i samme �gurvindu (og skriverplottet til �len kontur.eps) ved f�lgende lille Matlab-skript:[x,y]=meshgrid(-10:0.1:10);f=x.^2+y.^2-48;g=x+y+6;contour(x,y,f,[0 0]) % tegner opp en niv�akurve hvor f=0hold oncontour(x,y,g,[0 0]) % tegner opp en niv�akurve hvor g=0% axis([-10 10 -10 10])axis('square')hold offprint -deps 'kontur.eps'Av �guren ser vi at de to niv�akurvene skj�rer hverandre i to punkter, s�a lignings-systemet har to l�sninger.c) Vi ser av �guren i punkt a) at de to nullpunktene ligger i n�rheten av (�7; 1) og(1;�7), s�a det kan v�re lurt �a pr�ve disse som startverdier.F�r vi kan bruke Matlab-funksjonen newtonfler, m�a vi de�nere vektorfunksjonenvi �nsker �a studere, sammen med dens Jacobi-matrise p�a en m-�l vi f.eks kan kallefogjac.mfunction [F,J]=fogjac(X)% Returnerer en radvektor [F,J] hvor F er en s�ylevektor med% funksjonene f(x,y)=x^2+y^2-48 og g(x,y)=x+y+6% evaluert i punktet gitt ved s�ylevektoren X, mens J er den% tilh�rende Jacobi-matrisen evaluert i det samme punktet X.x=X(1);y=X(2);F=[x^2+y^2-48; x+y+6];f_x=2*x;f_y=2*y;g_x=1;g_y=1;J=[f_x, f_y; g_x, g_y];For �a utf�re Newtons metode med startpunkt (�7; 1), gir vi n�a kommandoen>> x=newtonfler([-7;1],'fogjac')og �nner da tiln�rmingsverdien x = (�6:8730; 0:8730).For �a �nne en tiln�rmingsverdi til det andre nullpunktet, bruker vi startpunktet(1;�7) og gir kommandoen

Page 81: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

75>> x=newtonfler([1;-7],'fogjac')Da �nner vi tiln�rmingsverdien x = (0:8730;�6:8730).NB! Husk at vi m�a ha apostrofer rundt funksjonsnavnene vi sender som innpara-metre! Husk ogs�a p�a at startpunktet skal angis som en s�ylevektor.L�sning til oppgave 7For�a brukeMatlab-funksjonen newtonfler fra l�sningsforslaget til oppgave 6, trengervi bare �a legge f�lgende kode p�a �len 'f3ogjac.m':function [F,J]=f3ogjac(X);% Returnerer en radvektor [F,J] hvor F er en s�ylevektor med% funksjonene f(x,y,z)=y^2+z^2-3, g(x,y,z)=(x^2+z^2-2) og h(x,y,z)=x^2-z% evaluert i punktet gitt ved s�ylevektoren X, mens J er den tilh�rende% Jacobi-matrisen evaluert i det samme punktet X.x=X(1);y=X(2);z=X(3);F=[y^2+z^2-3; x^2+z^2-2; x^2-z];dfx=0; dfy=2*y; dfz=2*z;dgx=2*x; dgy=0; dgz=2*z;dhx=2*x; dhy=0; dhz=-1;J=[dfx dfy dfz; dgx dgy dgz; dhx dhy dhz];For�a kj�re Matlab-funksjonen newtonfler p�a dette ligningssystemet med startpunktx = [1;�7; 5], gir vi da kommandoen>> newtonfler([1;-7;5],'f3ogjac')NB! Husk at startpunktet x m�a angis som en s�ylevektor.Vi �nner da tiln�rmingsverdien x = (1:0000;�1:4142; 1:0000).

Page 82: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

76 L�sningsforslag til lab 4

Page 83: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

L�sningsforslag til �velse 1L�sning til oppgave 1a) Vi kan beregne matriseproduktet Cx ved �a ta en line�rkombinasjon av s�ylene i Cmed koe�sienter gitt ved komponentene i x.b) Dette er en generell sammenheng. Den komponentvise de�nisjonen av matrisemul-tiplikasjon sier at vi f�ar i-te komponent i s�ylevektoren Cx ved�a ta skalarproduktetav i-te rad i C med vektoren x, det vil si at i-te komponent i Cx er en line�rkombinasjon av elementene i i-te rad fra C med komponentene i x som koe�sien-ter. Siden vi alts�a bruker de samme koe�sientene (fra x) hver gang vi uttrykker enkomponent i Cx som en slik line�r kombinasjon, betyr dette at vektoren Cx er enline�r kombinasjon av s�ylevektorene i C med komponentene i x som koe�sienter.L�sning til oppgave 2a) Vi f�ar f�rste s�yle i matriseproduktet AB ved�a multiplisere A med f�rste s�yle i B.Tilsvarende fremkommer andre s�yle i AB ved �a multiplisere A med andre s�yle iB.b) Dette er en generell sammenheng: Vi f�ar k-te s�yle i matriseproduktet AB ved �amultiplisere A med k-te s�yle i B. If�lge den komponentvise de�nisjonen av matrise-produkt f�ar vi i-te element i k-te s�yle i produktmatrisen AB ved �a ta skalarpro-duktet av linje nr. i fra A med s�yle nr. k fra B. Det betyr at i-te komponentfra k-te s�yle i AB er en line�r kombinasjon av elementene fra i-te rad i A medkomponentene fra k-te s�yle i B som koe�sienter. Siden vi alts�a bruker de sammekoe�sientene (fra k-te s�yle i B) for hver slik line�r kombinasjon, betyr dette at vif�ar k-te s�yle i produktmatrisen AB ved �a ta en line�r kombinasjon av s�ylene i Amed koe�sienter fra k-te s�yle i B. Men fra oppgave 1 vet vi at dette er det sammesom�a multiplisere A med k-te s�yle i B.L�sning til oppgave 3F�rste s�yle i AB er en line�r kombinasjon av s�ylene i A med koe�sienter fra f�rstes�yle i B. Tilsvarende er andre s�yle i AB en line�r kombinasjon av s�ylene i A medkoe�sienter fra andre s�yle i B.Vi kan bruke Matlab til �a sjekke at dette resultatet stemmer for matrisene A og B fraoppgave 2 ved �a lage tre s�ylevektorer>> a1=A(:,1);>> a2=A(:,2);>> a3=A(:,3);og sjekke at f�rste s�yle i AB er lik line�rkombinasjonen>> b1(1)*a1+b1(2)*a2+b1(3)*a3og at andre s�yle i AB er lik line�rkombinasjonen>> b2(1)*a1+b2(2)*a2+b2(3)*a3(Sammenlign enten med A*B(:,1) og A*B(:,2) eller med A*b1 og A*b2)L�sning til oppgave 4a) Vi kan beregne matriseproduktet y � R ved �a ta en line�rkombinasjon av radene iR med koe�sienter gitt ved komponentene i y. 77

Page 84: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

78 L�sningsforslag til �velse 1b) Dette er en generell sammenheng. Den komponentvise de�nisjonen av matrisemulti-plikasjon sier at vi f�ar j-te komponent i radvektoren yR ved�a ta skalarproduktet avy med j-te s�yle i R, det vil si at j-te komponent i yR er en line�r kombinasjon avelementene i j-te s�yle fra R med komponentene i y som koe�sienter. Siden vi alts�abruker de samme koe�sientene (fra y) hver gang vi uttrykker en komponent i yRsom en slik line�r kombinasjon, betyr dette at vektoren yR er en line�r kombinasjonav radvektorene i R med komponentene i y som koe�sienter.L�sning til oppgave 5a) Vi f�ar f�rste rad i DE ved�a multiplisere f�rste rad i D med E. Tilsvarende fremkom-mer andre rad i DE ved �a multiplisere andre rad i D med E, og tredje rad i D �Efremkommer ved �a multiplisere tredje rad i D med E.b) Dette er en generell sammenheng: Vi f�ar i-te rad i matriseproduktetDE ved�a multi-plisere i-te rad i D med E. If�lge den komponentvise de�nisjonen av matriseproduktf�ar vi k-te element i i-te rad i produktmatrisen DE ved�a ta skalarproduktet av linjenr. i i D med s�yle nr. k i E. Det betyr at k-te komponent i i-te rad i DE er enline�r kombinasjon av elementene i k-te s�yle i E med komponentene i i-te rad fraD som koe�sienter. Siden vi alts�a bruker de samme koe�sientene (fra i-te rad iD) for hver slik line�r kombinasjon, betyr dette at vi f�ar i-te rad i produktmatrisenDE ved�a ta en line�r kombinasjon av radene i E med koe�sienter fra i-te rad i D.Men fra oppgave 4 vet vi at dette er det samme som�a multiplisere i-te rad i D medE.L�sning til oppgave 6F�rste rad i DE er en line�r kombinasjon av radene i E med koe�sienter fra f�rste radi D. Tilsvarende er andre (hhv. tredje) rad i DE en line�r kombinasjon av radene i Emed koe�sienter fra andre (hhv. tredje) rad i D.Vi kan bruke Matlab til �a sjekke at dette resultatet stemmer for matrisene D og E fraoppgave 5 ved �a lage tre radvektorer>> e1=A(1,:);>> e2=A(2,:);>> e3=A(3,:);og sjekke at f�rste rad i DE er lik line�rkombinasjonen>> d1(1)*e1+d1(2)*e2+d1(3)*e3og at andre rad i DE er lik line�rkombinasjonen>> d2(1)*e1+d2(2)*e2+d2(3)*e3og at tredje rad i DE er lik line�rkombinasjonen>> d3(1)*e1+d3(2)*e2+d3(3)*e3(Sammenlign enten med D*E(1,:), D*E(2,:) og D*E(3,:) eller med d1*E, d2*e ogd3*E)

Page 85: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

L�sningsforslag til �velse 2L�sning til oppgave 1a) Determinanten til den nye matrisen blir 3 ganger s�a stor som determinanten til denopprinnelige. Generelt gjelder det at hvis vi erstatter en vilk�arlig rad med en skalark ganger raden, blir determinanten til den nye matrisen k ganger s�a stor som denopprinnelige.b) Hvis vi multipliserer en s�yle med skalaren k, blir determinanten til den nye matrisenk ganger s�a stor som den opprinnelige.L�sning til oppgave 2a) N�ar vi bytter om to rader i en kvadratisk matrise, skifter determinanten fortegn.b) Determinanten skifter fortegn.L�sning til oppgave 3a) N�ar vi adderer et skalarmultiplum av en rad til en annen rad, forblir determinantenuforandret.b) Determinanten forblir uforandret.L�sning til oppgave 4Determinanten til en �vre triangul�r matrise er lik produktet av elementene p�a hoved-diagonalen.L�sning til oppgave 5Determinanten til en nedre triangul�r matrise er lik produktet av elementene p�a ho-veddiagonalen.L�sning til oppgave 6a) Determinanten til en identitetsmatrise er lik 1.b) Siden identitetsmatrisen er b�ade �vre triangul�r og nedre triangul�r, vet vi fraforrige seksjon at determinanten er lik produktet av elementene p�a hoveddiagonalen.Resultatet f�lger derfor av at alle elementene p�a hoveddiagonalen er 1-ere.L�sning til oppgave 7Determinanten til en permutasjonsmatrise er 1 eller �1 avhengig av om antall inver-sjoner i permutasjonen er et partall eller et oddetall. Vi vet fra tidligere at hver gang vibytter om to rader i en matrise, s�a skifter determinanten fortegn. Dersom vi m�a bytteom rader et partall antall ganger, blir determinanten lik determinanten til identitetsma-trisen, alts�a 1, og hvis vi m�a bytte om rader et odde antall ganger, blir determinantenlik �1.L�sning til oppgave 8 (ekstraoppgave)a) Vi skal forklare hvorfor det er slik at hvis vi erstatter en vilk�arlig rad med en skalark ganger raden, s�a blir determinanten til den nye matrisen k ganger s�a stor som denopprinnelige.Dette kan vi se ut ifra de�nisjonen av determinanten ved element�re produkterforsynt med fortegn, fordi alle de element�re produktene vil bli k ganger st�rresiden de inneholder n�yaktig ett element fra den nye raden, og dette elementet er kganger �a stort som det opprinnelige elementet. 79

Page 86: Lab v - Universitetet i oslofolk.uio.no/klara/matlab/labber.pdf · lab oratorie-/oppga v edel, en egen del med l sningsforslag og ev tuelt som inneholder hin t og halvferdige l sninger

80 L�sningsforslag til �velse 2b) Vi skal forklare hvorfor det er slik at n�ar vi bytter om to rader i en kvadratiskmatrise, skifter determinanten fortegn.Dette kan vi se ut ifra de�nisjonen av determinanten som en sum av element�reprodukter forsynt med fortegn, fordi alle de element�re produktene vil skifte fortegnn�ar vi bytter om to rader i matrisen. Ved en slik ombytting vil vi enten fjerneeller legge til et odde antall inversjoner i s�ylepermutasjonen �, slik at fortegnetsign(�) = (�1)inv(�) skifter til motsatt verdi.Ved ombytting av linje nr. i og j (hvor i < j) vil to matriseelementer ai�i og aj�jsom inng�ar i et element�rt produkt Qi ai�i , opptre som elementene aj�i og ai�j iden nye matrisen, og s�yleindeksparet (�i; �j) vil n�a gjen�nnes som det inverterteparet (�j ; �i). Dette bidrar til at antall inversjoner endres med 1.For k 6= i; j vil s�yleindeksparene (�k; �i) og (�k; �j) gjen�nnes som (�k; �j) og(�k; �i). Hvis k < i eller k > j, blir ingen av parene invertert. Hvis i < k < j, blirbegge parene invertert. Disse tilfellene bidrar alts�a til at antall inversjoner endresmed et partall.Alt i alt ser vi derfor at antall inversjoner endres med et oddetall ved en ombyttingav to linjer i matrisen.c) Vi skal forklare hvorfor det er slik at n�ar vi adderer et skalarmultiplum av en rad tilen annen rad, forblir determinanten uforandret.Det f�lger fra de�nisjonen av determinanten ved element�re produkter at determin-anten er additiv som funksjon av rad nr. i, det vil si at hvis rad nr. i kan skrives somen sum av to vektorer v1 og v2, s�a blir determinanten lik summen av determinantenetil de matrisene vi f�ar ved �a putte inn henholdsvis v1 og v2 som rad nr. i.Fra oppgave 2 vet vi ogs�a at dersom vi bytter om to rader i en matrise, s�a skifterdeterminanten fortegn. Hvis vi har en matrise der to rader er like, og bytter omdisse radene, skal alts�a determinanten skifte fortegn. Men siden den nye matrisen erlik den opprinnelige (vi byttet jo bare om to like rader), m�a determinanten samtidigv�re lik den opprinnelige. Det eneste tallet D som oppfyller D = �D, er D = 0.Det f�lger derfor at hvis to rader i en matrise er like, s�a er determinanten null.Av disse to observasjonene f�lger resultatet: Hvis vi erstatter i-te rad i en matrisemed i-te rad pluss k ganger j-te rad, blir determinanten til den nye matrisen vedlinearitet lik den opprinnelige determinanten pluss k ganger determinanten til enmatrise hvor den i-te raden er erstattet med den j-te raden fra den opprinneligematrisen. Men siden den i-te og den j-te raden i den sistnevnte matrisen er like, slikat determinanten til denne matrisen er null, s�a f�lger konklusjonen.d) Vi skal forklare hvorfor determinanten til en �vre triangul�r matrise er lik produktetav elementene p�a hoveddiagonalen.Det f�lger av de�nisjonen av determinanten ved element�rprodukter at det enesteelement�rproduktet som ikke blir null, er produktet av elementene p�a hoveddia-gonalen (alle andre element�rprodukter m�a inneholde et element som ligger underhoveddiagonalen (forklar!) og blir derfor null).e) Vi skal forklare hvorfor determinanten til en nedre triangul�r matrise er lik produk-tet av elementene p�a hoveddiagonalen.Dette kommer av at det eneste element�rproduktet som ikke blir null, er produktetav elementene p�a hoveddiagonalen (alle andre element�rprodukter m�a inneholde etelement som ligger over hoveddiagonalen og blir derfor null).