Eerste serie opgaven Systeemtheorie Deze serie bestaat uit oefeningen en opdrachten. De oefeningen zijn bedoeld om je wegwijs te maken in Matlab en de toepassingen in de wiskunde. De opdrachten moet je uitvoeren en inleveren. Zie de studiehandleiding voor de eisen waaraan ingeleverd werk moet voldoen. Oefening. (. Maak in Matlab de 0 0 matrix A = i+j ) 0 i,j=. Doe dit op 3 manieren. Eerst door gebruik te maken van een for-loop en Matlab te laten rekenen. Bestudeer voor de werking van een for-loop. (Raadpleeg de Matlab Help Desk: Getting Started en dan naar Flow Control.) Tenslotte door B= ones(6,) * [::6] A= ones(6,6)./ (B + B -ones(6,6) ) % of nog anders: help hilb A= hilb(6) 2. Bepaal de inverse van A. Dat kan op tenminste drie manieren in Matlab. In de eerste plaats met een functie die de inverse bepaalt. Zoek de functie op in de lijst. In de tweede plaats door de matrix links te delen op de eenheidsmatrix. Doe dus A\ eye(0). Gebruik help \ als je dit niet volledig doorziet ( Matlab functions en dan Operators and Special Characters ). In de derde plaats kun je ook nog eye(size(a))/a doen. Ga na of de antwoorden hetzelfde zijn. Bepaal ook de relatieve fouten in de antwoorden, door bijvoorbeeld: A = A ; A2 = A\eye(0); max(abs(a-a2))/max(abs(a)) Wat vind je van deze relatieve fout? Wat komt er uit eye(size(a))\a? 3. Bepaal de eigenwaarden en eigenvectoren van A. (Zie boven, doe ook help eig.) Is A inverteerbaar? Wat betekent dat voor de eigenwaarden van A?
4. Zij D de matrix met op de diagonaal de eigenwaarden van A en S de matrix met als kolommen de bijbehorende eigenvectoren. Bereken A SDS en interpreteer het antwoord. 5. Bepaal van A het spoor, de determinant en het karakteristieke polynoom p A. (matlabcommando: poly(a).) Wat is de constante term van p A? Begrijp je hoe Matlab een polynoom representeert? Herken de bekende(?) relaties tussen p A en het spoor (trace) en de determinant (det) van A. Opdracht. Zij A een 3 3 matrix en x 0 een vector in R 3. De matrix A en de vector x 0 krijg je door de data van Eerste serie opdracht van de web-pagina http://www.cs.vu.nl/ freek (Klik op Mathematische Systeemtheorie en daarna op Eerste serie opdracht ) in een file opdr 03.m in je matlab-directory te zetten. Doe dan Snummer= [n; n2] % hierbij zijn n en n2 jullie studentnummers opdr 03 Je hebt nu de matrix A. Zij x k = Ax k voor k =, 2,..., 63. We gaan de baan van de punten x k in de ruimte tekenen. Dat kan als volgt. Doe in matlab (zorg dat je begrijpt wat er gebeurt!): Y=A, X = X0 ; for tel = :6; X = [X Y*X ] ; Y = Y * Y; end; % maakt in X de kolommen x k. Vergeet de ; niet! % Zonder de ; krijg je alle tussenresultaten op het scherm. plot3(x(,:),x(2,:),x(3,:), + ); hold on ; plot3(x(,:),x(2,:),x(3,:), - );grid;hold off; % het kan ook met plot3(x(,:),x(2,:),x(3,:), +,X(,:),X(2,:),X(3,:), - );grid; Verklaar de verschijnselen die je in de grafiek waarneemt uit de eigenwaarden en eigenvectoren van de matrix A. Je kunt door de grafiek te roteren beter zicht krijgen op het verloop van de rij. De grafiek roteren kan door klikken op het rotatie-icon in het grafieken-window van matlab. In de oudere studentenversie kan dat niet. Je kunt dan bijvoorbeeld ook kijken naar de projecties op de coördinaatvlakken (met behulp van de tweedimensionale plot ). Oefening 2. Zij x = ( 2 7 8 ) en y = ( 2. Voer de vectoren in Matlab in. Dit kan bijvoorbeeld door: 3 7 8 x =./ [ : 8] % transponeren en per element delen op. y = [ ones(,4) ; -ones(,4) ] y = y(:) % alles in een vector zetten. y = y.* x % elementsgewijze vermenigvuldiging ). 2
2. Bereken het inwendige product van x en y. Dit kan door gebruik te maken van spiegelen of van array-vermenigvuldiging. 3. Bepaal de matrix van rang die x als basis heeft voor de kolomruimte en y als basis voor de rijruimte. 4. Zoals we boven gezien hebben representeren x en y ook polynomen van de graad 7. Bepaal de nulpunten van die polynomen. Uiteraard heeft Matlab hier een functie voor ( roots )! Leg uit wat de relatie tussen de twee rijen nulpunten is en waarom dat zo is. 5. Bepaal een polynoom q waarvan de wortels de elementen van de vector x zijn. Wat is de constante van dat polynoom precies? In de representatie van het polynoom lijkt er nul te staan. Dat komt omdat initieel het format van matlab in 5 decimalen is. Het afgedrukte aantal decimalen staat overigens los van de interne rekennauwkeurigheid. Er zijn echter andere mogelijkheden. Onderzoek die: doe help format en probeer de effecten op de uitkomsten van berekeningen. Kies in het vervolg steeds het format dat je het beste lijkt voor een bepaalde vraag. 6. In Matlab kunnen ook polynomen met elkaar vermenigvuldigd worden. Om die operatie te begrijpen moet je bedenken dat als a,..., a n+ de coëfficienten zijn van een polynoom van de graad ten hoogste n en b,..., b m+ de coefficienten zijn van een polynoom van de graad ten hoogste m, dan vinden we de coefficienten c,..., c m+n+ van het product met de formule c l = N a k+ b l k. k=0 Hierbij is N het grootste getal zo dat alle a k+ en alle b l k ook inderdaad bestaan. Dat getal N hangt dus af van n, m an l. De door de formule gegeven operatie heet convolutie. Daarom heet de polynoomvermenigvuldiging in Matlab conv. Bereken nu het product van de polynomen gegeven door x en y. Wat betekenen de gevonden nullen en kloppen die met wat je verwacht in dit geval? 7. Je kunt ook polynomen delen met rest in Matlab. De operatie heet deconv. Maak in Matlab een vector z met 6 elementen die alle elementen van x en van y bevat. Maak een polynoom p dat de elementen van z als nulpunten heeft en een polynoom q dat de elementen van x als nulpunten heeft. Bereken p + gedeeld door q. Opdracht 2. Maak een vector Snummer met als de twee componenten jullie studentnummers. Haal de gegevens voor Eerste serie opdracht 2 van de webpagina en zet die in de file opdr 03 2.m in je matlab-directory. Doe dan in matlab Snummer= [n; n2] % hierbij zijn n en n2 jullie studentnummers opdr 03 2 3
Dan is teller de representatie in matlab van het polynoom van de graad 4 dat de teller is van een rationale functie f en noemer stelt de noemer van f voor.. Maak nu met behulp van de functies polyval, plot, subplot en axis duidelijke grafieken van f op deelintervallen van de reële rechte, waaruit de nulpunten en de polen (d.w.z. de punten a waarvoor lim x a f(x) = ) goed af te lezen zijn. Geef ook de getalswaarden van de nulpunten en polen. Let erop dat die waarden ook met de grafiek overeen moeten komen. 2. We kunnen de functie f schrijven in de vorm f(x) = a 0 + a x + a 2 x 2 + + a n x n + x n R n (x) waarbij R n een rationale functie is met lim x R n (x) = 0. Bepaal met matlab de waarden van a 0, a,..., a 6 en R 6 (x). 3. Is het ook mogelijk te schrijven f(x) = b 0 + b x + b 2 x 2 + + b n x n + x n S n (x) met S n een rationale functie is met lim x 0 S n (x) = 0? Zo ja, geef dan aan hoe je met matlab dit kunt uitvoeren. Oefening 3. Bij deze oefening is het noodzakelijk om format short e te kiezen.. Construeer met de functies eye en zeros de matrix 0 0 0 0 0 0 0 0 A = 0 0 0 0 0 0 0 0. 0 0 0 0 Bedenk daarbij dat A een 2 2 blokmatrix is van nul- en eenheidsblokken. Verander nu A 23 in 2. Maak a 3 de derde rij in A. Maak de deelmatrix ( ) a23 a B = 25. a 43 a 45 van A. We gaan nu werken met de singuliere-waarden-decompositie van een matrix. Gewoonlijk wordt die afgekort tot svd. Er is ook een Matlab functie met die naam. Lees daarvan de help en bedenk dat in Matlab A de notatie is voor A T. De theorie van de svd staat in 4 van het laatste hoofdstuk van het boek van Lay. Lees daar nu eerst wat de svd is en de opmerkingen en de voorbeelden. Als je nu al wilt weten waar de svd goed voor is, lees dan ook bijvoorbeeld de volgende paragraaf. 4
2. Bedenk eerst dat als A = USV T met U en V orthogonale matrices, dan is de rang van A gelijk aan die van S. Bepaal daarmee de rang van de matrix 2 8 9 A = 2 0 8 2 7 5. 9 4 8 6 Bepaal met svd de singulier waarden van A. Wat is nu eigenlijk de rang van S, 2 of 3? Bepaal nu ook de rang van A met de functie rank. Matlab gebruikt de svd om de rang van A te bepalen en vindt dus kennelijk dat S 33 = 0. Waarom is dat redelijk? Wat gebeurt er met de rang als we A met 0 6 vermenigvuldigen? Maakt het voor de door matlab bepaalde rang uit? Opdracht 3. Bij deze opdracht is het handig om format short e te kiezen. Op de webpagina van de cursus staan het matlab-commando dat de matrix A voor deze opdracht maakt. Deze matrix is eigenlijk een matrix die door afronden op drie cijfers achter de komma verstoord is geraakt. Achterhaal de rang van de oorsponkelijke matrix. Bepaal uitgaande van de matrix A een matrix die op alle plaatsen minder dan 0 3 van A verschilt en de rang van de oorspronkelijke matrix heeft. Vergeet niet te aan te tonen dat de gebruikte methode het gewenste resultaat heeft. Je kunt daarbij ervoor kiezen te laten zien dat het voor dit specifieke geval zo is of te bewijzen dat de gebruikte methode werkt onafhankelijk van de concrete matrix A. Aanwijzing: bedenk dat een matrix van rang r slechts r singuliere waarden heeft die ongelijk aan nul zijn. Oefening 4. Met het volgende commando teken je een cirkel t = [-pi : pi/00 : pi]; plot( cos(t),sin(t)); Je wilt misschien de assen schalen. Dat kan met het functie axis. Door, bijvoorbeeld, axis( square ) te kiezen krijg je een rechthoekig assen-stelsel en met axis( equal ) krijg je langs beide assen dezelfde schaal. (Zie help graph2d voor meer mogelijkheden.) Een tak van een hyperbool kan getekend worden door t = [ -2 : 4/25 :2 ]; plot( 2* cosh(t), sinh(t)); De complete hyperbool door plot( 2* cosh(t), sinh(t)); hold on ; plot(-2*cosh(t),-sinh(t)); grid; hold off Wat zijn in dit geval de asymptoten? Een voorbeeld van een drie-dimensionaal plaatje kan als volgt worden verkregen. x=[-:.0 : ] ; y=x; 5
[X,Y] = meshgrid(x,y); Z = (2 * X.* Y)./( X.ˆ 2 + Y.ˆ 2); mesh(x,y,z); surf(x,y,z); % een andere manier om het oppervlak weer te geven; shading flat; surfl(x,y,z); % nog een manier om het oppervlak weer te geven; colormap(gray); % de laatste manier is speciaal voor een zwart-grijs-wit-printer. Zie ook help graph3d of helpwin. Voor een compleet overzicht: gebruik helpdesk met netscape. Opdracht 4. Maak zelf een aardige toepassing van Matlab. Je kunt bijvoorbeeld een mooi plaatje maken, een interessante stelling illustreren, of een mooie toepassing bedenken. 6