Klara Hveberg, 26 sylen under pivot-elementet, ma vi na bare trekke (3; 2)=(2; 2) = 8=2 = 4 ganger andre rad fra tredje rad >> k=(3,2)/(2,2); >> (3,:)

Like dokumenter
c Klara Hveberg 2006

Bytte om to rader La Matlab generere en tilfeldig (4 4)-matrise med heltallige komponenter mellom 10 og 10 ved kommandoen Vi skal underske hva som skj

Lineære likningssystemer og matriser

Lineære ligningssystemer og gausseliminasjon

Lineære ligningssystemer og gausseliminasjon

if m<n disp('sylevektorene er linert avhengige pga flere syler enn rader') U=rref(A) uavh=true; for j=1:n if U(j,j)==0 % Sjekker om det fins et null-e

MAT1120 Repetisjon Kap. 1

Her har vi samlet en del større prosjektoppgaver som er ment for å drille studenten i kombinasjonen av matematikk og enkel programmering.

Lineær Algebra og Vektorrom. Eivind Eriksen. Høgskolen i Oslo, Avdeling for Ingeniørutdanning

6 Determinanter TMA4110 høsten 2018

Lineære ligningssystem og matriser

Lineære likningssett.

4 Matriser TMA4110 høsten 2018

Lineære ligningssystem; Gauss-eliminasjon, Redusert echelonmatrise

Løsningsforslag B = 1 3 A + B, AB, BA, AB BA, B 2, B 3 C + D, CD, DC, AC, CB. det(a), det(b)

Oppgave P. = 2/x + C 6 P. + C 6 P. d) 12(1 x) 5 dx = 12u 5 1/( 1) du = 2u 6 + C = 2(1 x) 6 + C 6 P. Oppgave P.

med andre ord nne en tilnrmet verdi for kvadratroten av 2). Siden den deriverte av funksjonen var er f 0 (x) = 2x, blir rekursjonsformelen vi skal bru

Til enhver m n matrise A kan vi knytte et tall, rangen til A, som gir viktig informasjon.

RF5100 Lineær algebra Leksjon 2

Til enhver m n matrise A kan vi knytte et tall, rangen til A, som gir viktig informasjon.

Lineære likningssystemer

Øving 3 Determinanter

Matriser. Kapittel 4. Definisjoner og notasjon

TMA4122/TMA4130 Matematikk 4M/4N Høsten 2010

function newton(start,fogdf) % MATLAB-funksjon som utfrer Newtons metode pa en funksjon % f med derivert df spesifisert pa filen 'fogdf.m'. % Innparam

Obligatorisk innleveringsoppgave, løsning Lineær algebra, Våren 2006

MAT 1120: Obligatorisk oppgave 2, H-09

Forelesning 22 MA0003, Mandag 5/ Invertible matriser Lay: 2.2

Forord Dette er en samling lsningsforslag som jeg opprinnelig utarbeidet til gruppeundervisningen i kurset MAT00A ved Universitetet i Oslo hsten 2000.

MET Matematikk for siviløkonomer

Forelesning 10 Cramers regel med anvendelser

MAT-1004 Vårsemester 2017 Obligatorisk øving 2

Matematikk Øvingsoppgaver i numerikk leksjon 8 Matriser. Løsningsforslag

At z + w og zw er reelle betyr at deres imaginrdeler er lik null, det vil si at b + d 0 ad + bc 0 Den frste ligningen gir b d. Setter vi dette inn i d

DAFE ELFE Matematikk 1000 HIOA Obligatorisk innlevering 3 Innleveringsfrist Torsdag 26. mars 2015 Antall oppgaver:

Mer om kvadratiske matriser

Løsningsforslag C = B = 1 3 A + B, AB, BA, AB BA, B 2, B 3 C + D, CD, DC, AC, CB

Oblig 2 - MAT1120. Fredrik Meyer 23. september 2009 A =

MAT1120 Repetisjon Kap. 1, 2 og 3

Mer om kvadratiske matriser

MA2501 Numeriske metoder

MA2501 Numeriske metoder

Gauss-eliminasjon og matrisemultiplikasjon

MAT1120 Notat 1 Tillegg til avsnitt 4.4

Lineær algebra-oppsummering

MAT 1110: Bruk av redusert trappeform

MAT1120 Oppgaver til plenumsregningen torsdag 25/9

Avdeling for lærerutdanning. Lineær algebra. for allmennlærerutdanningen. Inger Christin Borge

1. Finn egenverdiene og egenvektorene til matrisen A = 2 1 A =

Lineære ligningssystemer. Forelesning, TMA4110 Torsdag 17/9. Lineære ligningssystemer (forts.) Eksempler

MAT1120 Plenumsregningen torsdag 26/8

b) 17 går ikke opp i 84 siden vi får en rest på 16 når 84 deles med 17 c) 17 går opp i 357 siden

Elementære eliminasjonsmatriser

4. D. v = ds=dt = 6:0 t + 2:0 ) v = 14 m/s ved t = 2:0 s ) P = F v = 140 W ved t = 2:0 s.

Øving 4 Egenverdier og egenvektorer

Lineær algebra. Kurskompendium, Utøya, MAT1000. Inger Christin Borge

Oppgave 1. f(2x ) = f(0,40) = 0,60 ln(1,40) + 0,40 ln(0,60) 0,0024 < 0

6.4 Gram-Schmidt prosessen

Wiener filter of length 10 (performance 0.374) Pulse P Sample number. Wiener filter of length 10 (performance 0.

Fasit MAT102 juni 2016

MA2501 Numerical methods

6.4 (og 6.7) Gram-Schmidt prosessen

Gauss-Jordan eliminasjon; redusert echelonform. Forelesning, TMA4110 Fredag 18/9. Reduserte echelonmatriser. Reduserte echelonmatriser (forts.

Eksamen i ELE Matematikk valgfag Torsdag 18. mai Oppgave 1

Løsnings forslag i java In115, Våren 1999

MAT1120 Notat 1 Tillegg til avsnitt 4.4

SIF5010 Matematikk 3. y 00, 2y 0 +5y = sin x 4A, 2B =0 4B +2A =1;

Forelesning 9: Frsteordens logikk { kompletthet Roger Antonsen mars 2006

6.5 Minste kvadraters problemer

Rekursjon. Binærsøk. Hanois tårn.

Øving 2 Matrisealgebra

Numerisk lineær algebra

Matriser En matrise er en rektangulær oppstilling av tall og betegnes med en stor bokstav, f.eks. A, B, C,.. Eksempler:

Matematikk Øvingsoppgaver i numerikk leksjon 5 for-løkker

Fra skolematematikken husker vi at kvadratroten til et tall a er det ositive tallet som har kvadrat lik a. Men det betyr at x2 = n x for x 0 x for x <

Wavelet P Sample number. Roots of the z transform. Wavelet P Amplitude Spectrum.

MET Matematikk for siviløkonomer

Relasjoner - forelesningsnotat i Diskret matematikk 2015

Fasit til utvalgte oppgaver MAT1110, uka 13/4-16/4

MAT1120 Notat 2 Tillegg til avsnitt 5.4

Norsk informatikkolympiade runde

jx + j < 7. Hvis vi i tillegg srger for at faktoren jx j < ", far vi 7 ialt jf(x) f()j = jx + jjx j < 7 " 7 = " Dette blir flgelig ofylt for alle x sl

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

1 Oppgave 1 Skriveoppgave Manuell poengsum. 2 Oppgave 2 Code editor Manuell poengsum. 3 Oppgave 3 Skriveoppgave Manuell poengsum

Input α. Desired output. Linear prediction. Prediction error. Input α. Desired output. Linear prediction. Prediction error

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

tma4110 Matematikk 3 Notater høsten 2018 Øystein Skartsæterhagen Morten Andreas Nome Paul Trygsland

TMA4110 Matematikk 3 Eksamen høsten 2018 Løsning Side 1 av 9. Løsningsforslag. Vi setter opp totalmatrisen og gausseliminerer:

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

MA0002 Brukerkurs i matematikk B Vår 2013

En algoritme for permutasjonsgenerering

Løsning Eksamensrelevante oppgaver i ELE 3719 Matematikk Vektorer, matriser og lineær algebra Dato Februar Oppgave 1. (A) Vi leser av at

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

5. TEGNFORKLARING FOR DE NESTE SKISSENE: : HOLD KNAPPEN INNE : SLIPP KNAPPEN. 6. Samme som engelsk versjon.

TFY4104 Fysikk. Institutt for fysikk, NTNU. Lsningsforslag til ving 10.

Matematikk Øvingsoppgaver i numerikk leksjon 3 Skript

Løsningsforslag MAT102 Vår 2018

Quicksort. Fra idé til algoritme.

Transkript:

Lab 2: Gauss-eliminasjon av Klara Hveberg I denne laboratorievelsen skal vi se pa hvordan vi kan lage Matlab-funksjoner som utfrer Gauss-eliminasjon pa matriser, dvs som bringer dem pa trappeform ved hjelp av elementre radoperasjoner. I tillegg til at du ma tenke gjennom hvordan Gausseliminasjon kan beskrives pa en systematisk mate som kan programmeres, vil du fa trening ia bruke Matlab tila utfre radoperasjoner pa en matrise, og ia lage funksjoner med for-lkker eller while-lkker. Hvis du fler at du har god kontroll pa Gauss-eliminasjon og ikke vil ha hjelp til programmeringen, kan du godt hoppe over innledningen og ga rett ls pa oppgave 3 og 4, hvor du frst skal lage en funksjon som bringer en vilkarlig matrise over pa trappeform, og deretter en som bringer matrisen pa redusert trappeform (uten a bruke den innebygde Matlab-funksjonen rref). Gauss-eliminasjon (enkel versjon uten ombytting av rader) Vi husker at Gauss-eliminasjon bruker radvise operasjoner til a bringe en matrise over pa sakalt trappeform, dvs en form hvor i) det ledende elementet (dvs. det frste elementet som ikke er null) i en rad alltid star lenger til hyre enn det ledende elementet i raden ovenfor. ii) eventuelle nullrader er samlet i bunnen av matrisen La oss starte med a repetere hvordan vi utfrer Gauss-eliminasjon pa en konkret matrise = 6 2 9 3 7 5 Var frste oppgave er a srge for at vi har et ikke-trivielt pivot-element (altsa et element forskjellig fra null) i posisjon (; ) i frste syle og skae oss nuller under dette elementet ved a trekke passende multiplum av frste rad ifra radene nedenfor. Siden (; ) = 6, betyr det at vi ma trekke (2; )=(; ) = 9=6 = 3=2 av frste rad fra andre rad for a fa null i posisjonen under pivot-elementet, sa vi utfrer kommandoene >> k=(2,)/(,); >> (2,:)=(2,:) - k*(,:) Deretter srger vi for a fa null i tredje rad ved a trekke (3; )=(; ) = 3=6 = =2 av frste rad fra tredje rad >> k=(3,)/(,); >> (3,:)=(3,:) - k*(,:) = 6 2 2 8 5 og er altsa ferdig med a skae oss nuller under pivot-elementet i frste syle. Vi gar na videre til andre syle hvor pivot-elementet er (2; 2) = 2. For a skae oss nuller i

Klara Hveberg, 26 sylen under pivot-elementet, ma vi na bare trekke (3; 2)=(2; 2) = 8=2 = 4 ganger andre rad fra tredje rad >> k=(3,2)/(2,2); >> (3,:)=(3,:) - k*(2,:) = 6 2 2 og er altsa ferdig med a bringe matrisen over pa trappeform. lgoritmen vi fulgte ovenfor kan oppsummeres i flgende programskisse: FOR <hver syle, bortsett fra den siste som godt kan droppes> FOR <hver rad nedenfor pivot-raden> <beregn hvilket multiplum av pivot-raden vi ma trekke fra raden vi er i for a nulle ut elementet i sylen under pivot-posisjonen> <trekk fra det riktige multiplumet av pivot-raden> END END Oppgave Lag et skript gauss som utfrer Gauss-eliminasjon pa matrisen = 6 2 9 3 7 5 ved hjelp av for-lkker (bruk to for-lkker nstet inni hverandre). Matlab skal altsa i hvert trinn selv regne ut de riktige multiplumene av pivotraden som skal trekkes fra radene nedenfor. Oppgave 2 Bruk ideen fra skriptet i forrige oppgave til a lage en Matlab-funksjon gauss som tar en matrise som inn-parameter, utfrer Gauss-eliminasjon og returnerer matrisen pa trappeform. Du kan forutsette at matrisen kan bringes pa trappeform uten at du stter pa null-elementer i pivot-posisjoner underveis. Det betyr at du nner pivotelementene pa hoveddiagonalen i posisjonene (j; j). Du kan ogsa anta at matrisen er kvadratisk, hvis du synes det gjr oppgaven lettere. Du trenger ikke a lage en robust funksjon som sjekker at disse antagelsene er oppfylt for matrisen. Kommandoen >> [m,n]=size() kan brukes til a lese inn dimensjonen til matrisen. Gauss-eliminasjon med ombytting av rader I eksemplet i forrige avsnitt var vi \heldige" og unngikk a stte pa null-elementer i pivot-posisjoner underveis i prosessen. Generelt ma vi imidlertid regne med a stte pa slike null-elementer, og ma da lete etter et ikke-trivielt element lenger nede i samme syle. Hvis vi nner et slikt ikke-trivielt element, ytter vi dette opp i pivot-posisjonen 2

Klara Hveberg, 26 ved a bytte om rader i matrisen. Hvis det bare star nuller under nullelementet i pivotposisjonen, gar vi videre til neste syle, men begynner da a lete etter pivot-elementet i samme rad som vi lette i forrige syle. Det betyr at pivot-posisjonen i syle nr j ikke ndvendigvis lenger er posisjonen (j; j) pa hoveddiagonalen (trappetrinnene har ikke ndvendigvis dybde ), sa vi ma fre regnskap med radindeksen og syleindeksen hver for seg. La oss starte med a se pa et eksempel hvor det dukker opp et null-element i en pivotposisjon, og hvor alle elementene i sylen nedenfor er null. Vi ser pa matrien = 7 5 5 6 Var frste oppgave er a prve a skae et ikke-trivielt pivot-element (altsa et element forskjellig fra null) i posisjon (; ) i frste syle. Vi leter da nedover i frste syle etter et ikke-trivielt element, og nner dette i rad nr 2. Vi kan derfor skae oss et ikke-trivielt pivot-element ved a bytte om frste og andre rad: >> ([ 2],:)=([2 ],:) Matrisen var er na pa formen = 5 5 7 6 og vi skaer oss nuller under pivot-elementet i frste syle ved a trekke passende multiplum av frste rad ifra radene nedenfor. Vi har allerede null i posisjonen rett under pivot-elementet, og trenger derfor ikke a gjre noe med rad nr 2. For a fa null i tredje rad, trekker vi (3; )=(; ) = =5 av frste rad fra tredje rad >> k=(3,)/(,); >> (3,:)=(3,:) - k*(,:) = 5 5 7 4 og er altsa ferdig med a skae oss nuller under pivot-elementet i frste syle. Vi gar na videre til andre syle og leter etter et pivot-element i posisjon (2; 2). Siden elementet (2; 2) er null, leter vi nedover i sylen etter et ikke-trivielt element a ytte opp. Men alle elementene nedenfor er ogsa null, sa vi har ikke noe a utrette i denne sylen. Vi gar derfor videre til syle nr 3 og leter denne gangen etter et pivot-element i posisjon (2; 3) (vi benner oss altsa ikke lenger pa diagonalen, men leter videre i samme rad som vi startet pa i forrige syle). Her nner vi et ikke-trivielt element (2; 3) = 7, og nuller ut elementet nedenfor i samme syle ved a trekke (3; 3)=(2; 3) = 4=7 ganger andre rad fra tredje rad >> k=(3,3)/(2,3); >> (3,:)=(3,:) - k*(2,:) 3

Klara Hveberg, 26 = 5 5 7 og er altsa ferdig med a bringe matrisen over pa trappeform. Eksemplet illustrerer at vi gjennomlper sylene etter tur pa samme mate som i forrige avsnitt, men at vi denne gangen ogsa ma holde styr pa radene: vi skal ke radindeksen med dersom pivotelementet vi nner (etter eventuell ombytting av rader) er forskjellig fra null, men la radindeksen forbli den samme dersom vi bare far et null-element i pivot-posisjonen. Vi skal na se hvordan vi kan modisere funksjonen gauss (fra oppgave 2) til a takle matriser hvor vi ogsa kan stte pa null-elementer i pivot-posisjoner og ma bytte om rader underveis. Ideen er altsa at hver gang vi stter pa et slikt null-element (i; j) = i en pivot-posisjon, leter vi etter ikke-trivielle elementer nedenfor dette nullelementet i syle nr j. Dersom vi nner et slikt ikke-trivielt element (p; j) 6=, bytter vi om radene p og i, og fortsetter som i den opprinnelige funksjonen. Ved vanlig Gauss-eliminasjon star vi fritt til a bytte om rad j og en hvilken som helst rad nedenfor som har et ikke-trivielt element i syle nr j (ved programmering kan vi f.eks bestemme oss for a bytte med den frste aktuelle raden vi nner). For a redusere avrundingsfeilene lnner det seg imidlertid a velge rad nr p pa en slik mate at (p; j) er strst mulig i absoluttverdi. Dersom vi alltid velger p pa denne maten (uansett om det opprinnelige elementet i pivot-posisjonen er null eller ikke) kalles prosedyren Gauss-eliminasjon med delvis pivotering. Denne prosedyren er enkel a implementere i Matlab ved hjelp av en ferdig innebygd funksjon max som nner det strste elementet i en sylevektor. Kommandoen >> [maksverdi,p]=max(y) returnerer det maksimale elementet maksverdi i sylevektoren y og nummeret p til raden hvor dette elementet benner seg. Gauss-eliminajon med delvis pivotering Vi kan na skissere en algoritme for a utfre Gauss-eliminasjon med delvis pivotering. For a legge oss nrmest mulig opp til den enkle algoritmen vi skisserte fr oppgave, skal vi basere oss pa for-lkker. Dette krever imidlertid at vi i visse situasjoner ma avbryte en lkke ved hjelp av kommandoen break, og noen synes kanskje at dette er lite elegant programmering. I lsningsforslaget vil du derfor ogsa nne et alternativ som baserer seg pa en while-lkke. Programskisse FOR <hver syle> <finn elementet med strst absoluttverdi i sylen under pivoten> <beregn nummeret q til raden som inneholder dette strste 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 ma trekke fra raden vi er i for a nulle ut elementet i sylen under pivoten> <trekk fra det riktige multiplumet av pivot-raden> 4

Klara Hveberg, 26 END % FOR <k radindeksen med for a lete etter neste pivot i raden nedenfor.> <avbryt lkken dersom radindeksen blir strre enn antall rader> END % HVIS % (Hvis elementet i pivot-posisjonen er null, vet vi (siden dette er % elementet med maksimal absoluttverdi i sylen) at alle elementer i % sylen er null, sa vi fortsetter bare til neste syle uten a % oppdatere radindeksen) END % FOR Oppgave 3 Lag en Matlab-funksjon gauss delpiv som tar en vilkarlig (m n)-matrise som inn-parameter, utfrer Gauss-eliminasjon med delvis pivotering pa den og returnerer matrisen pa trappeform. Husk at du kan ha nytte av kommandoen >> [maksverdi,p] = max(abs((j:n,j))); Du kan flge programskissen ovenfor, men kan gjerne bruke en while-lkke isteden hvis du synes det gir penere programmering. Gauss-Jordan-eliminasjon Hittil har vi bare laget funksjoner som bringer en matrise over pa trappeform ved hjelp av Gauss-eliminasjon. I dette avsnittet skal vi se hvordan vi kan utvide disse til en funksjon som bringer matrisen pa redusert trappeform, dvs en trappeform hvor vi (i tillegg til krav i) og ii) til en matrise pa trappeform, har flgende krav oppfylt: iii) alle ledende elementer er -ere iv) i hver pivot-syle er alle elementer null bortsett fra pivot-elementet Dette oppnas gjerne ved sakalt bakoverreduksjon, dvs at vi etter a ha fatt matrisen pa trappeform starter i nederste rad og skaer oss nuller over pivot-elementet (hvis det ns et) i denne raden. Deretter gjr vi det samme over pivot-elementet i nest nederste rad osv. oppover. Fordelen med denne metoden er at vi skaer nuller som vi drar med oss og har nytte av i senere utregninger etter hvert som vi jobber oss oppover (og dette gjr jobben mye lettere nar vi utfrer regningene for hand). Nar vi skal programmere, er det imidlertid enklere a gjre disse operasjonene underveis i Gausseliminasjonen. Da trenger vi bare et par linjer ekstra med programkode for a gjre funksjonen gauss delpiv om til en funksjon som utfrer Gauss-Jordan-eliminasjon og bringer matrisen over pa redusert trappeform. Oppgave 4 Utvid funksjonen gauss delpiv til en funksjon gauss jordan som tar en matrise som inn-parameter, utfrer Gauss-Jordan-eliminasjon pa den og returnerer matrisen pa redusert trappeform. Hint: Du ma srge for to ting: i) Gjr alle pivot-elementene til -ere ved a dele pivot-raden med pivot-elementet. ii) Ska nuller i sylen over hvert pivot-element ved a trekke et passende multiplum av pivot-raden fra radene ovenfor. 5