MALMÖ HÖGSKOLA Centrum för teknikstudier MA119A VT 2010, Yuanji Cheng Viktigt information om labb Vid laborationen gäller följande: 1. Labben görs i grupp av två studenter, och redovisningsuppgifterna skall vara gjorda innan man kommer till labblektionen. Vid problem kan man fråga under övningslektionen. 2. Obligatorisk närvaro. 3. Under laborationslektion skall alla redovisningsuppgifter redovisas. 4. Vid redovisning ska två dokument redovisas: en Matlab m-l som visar kommando för varje uppgifter, och en Word-dokument som innehåller båda kommando och resultat. 5. Vara redo på att svara på frågor kring hur har du löst uppgifter. Laboration 1: Linjär algebra Syftet med denna labb är att lära vissa beräkningsverktyg i datorprogram Matlab för olika uppgifter som uppkommer i kursdelen av linjär algebra. Matlab är ett interaktivt program för numeriska beräkningar och visualisering. Det är också ett programeringsspråk med instruktionsrepertoar liknande den som nns i många andra program. Matlab nns på esta slags datorer, och till fördelarna med programmet hör att det ser i stort sett likadant ut oberoende av på vilket sorts dator man kör det. Börja med att logga in på ditt vanligt konto. Starta sedan Matlab genom att klicka på Matlab-ikonen. Programmet avslutas med kommandot exit. Till att börja med kan man tänka på Matlab som en avancerad räknedosa som beräknar uttryck. Man skriver in vad man vill ha gjort och Matlab svarar. > > 11.5 + 2.3 ans = 13.8 Variabler tilldelas värden med tecknet = och nns sedan kvar i minnet. Prova på att tilldela några variabler värden. > > a = 1; En variabel, t ex a, kan raderas ur minnet med kommandot clear a. Läggs ett semikolon ; till efter en kommandorad, skrivs resultatet inte ut på skärmen. Inom Matlab nns det fem aritmetiska operatorer och dessa utföras i olika prioritetsordningar * + / potens som har den högsta prioriteringen, dvs, prioritet 1. multiplikation och division är prioritet 2 addition och subtraktion har prioritet 3. > > 3*52/4; ans = 18.75 Vid utskrift till skärmen visas tal normalt i så kallad kort decimalform med fyra decimaler, med kommandot format long kan man få att utskriftet blir 14 decimaler. > > b = 5/7 b = 0.7143 > > format long > > b b = 0.714285714285714 Det nns också funktion för att skriva i bråktal > > format rat > > sqrt(49/16) ans = 7/4 I) För att genera en radvektor skriver man t ex > > x = [10.99 12.95 14.90 15] x = 10.99 12.95 14.90 15 För att skriva ut en kolonnvektor i Matlab, använder man tecken ; t ex, > > y = [2; 1; 8] y = 2 1 8 II) För att genera en matris i Matlab skriver man, t ex, > > A = A = 10 5 0 [10 9 5 2 -1 -4 0; 5 3 0 -2 -5 -10 -3; 0 0 0 3 2 0 2] 9 5 2 −1 −4 0 3 0 −2 −5 −10 −3 0 0 3 2 0 2 Addition och substraktion beräknas som vanligt, t ex > > > > > > ans x = [10 -12 y = [-9 1 4 x +y = 1 −11 12 > > x -y ans = 19 −13 4 8 5]; 7]; 12 −2 III) Skalärprodukt x · y kan skrivas med kommandot > > dot(x, y) ans = −35 √ IV) Längden av vektorer beräknas med hjälp av formeln |x| = x · x varför blir det i Matlab > > sqrt(dot(x, x)) ans = 18.248 V) För kryssprodukt kan man göra för vektorer i rymden, t ex > > > > > > ans w = [0 -2 5]; z = [-1 3 7]; cross(w, z) = −29 −5 −2 Eftersom kryssprodukt nns endast för vektorer i rymden, då får man varning om dimension av vektorer inte är 3, t ex > > cross(x, y) ??? Error using ==> cross at 37 A and B must have at least one dimension of length 3. VI) Matris multiplikation kan beräknas också som vanligt, t ex > > > C > A = [0 -2 5; 3 0 4] > B = [-1 3; 2 7; 1 -6] > C= A*B = 1 −44 1 −15 > > D=B*A D = 9 2 7 21 −4 38 −18 −2 −19 VII) Beräkning av determinant av kvadratiska matriser, t ex > > det(C) ans = 29 > > det(D) ans = 0 VIII) Beräkning av invers av kvadratisk matris, t ex > > inv(C) ans = −15/29 44/29 −1/29 1/29 Eftersom inversen nns bara för inverterbar matris, därför inversen av D existerar ej och får en varning vid > > inv(D) Warning: Matrix is singular to working precision IX) Linjära ekvationssytem. För att lösa följande linjärt ekvationssystem, t ex, x + 2y − 3z = 4 3x − 5y + z = −9 2x + 3y − 5z = 7 skriver man först detta på matris form AX = B sedan erhåller lösningen X = A−1 B . > > A =[ 1 2 -3; 3 -5 1; 2 3 5] > > B =[4; -9; 7] > > X =inv(A)*B X = 32/111 221/111 10/111 PS: Lösningen kan även fås genom kommandot > > X = A\B. Testa detta ! OBS: Lösbarhet hos ett linjärt ekvationssystem kan vara: i) lösning saknas, ii) en entydig lösning, iii) oändligt många lösningar. Dessa system av typ iii) kan inte hanteras av Matlab, och vid fallet i) löser Matlab detta med minsta-kvadrat metod, dvs, löser AT AX = AT B, och ger en lösning som är bästa i denna mening |AX − B|2 blir minsta för alla vektor X. Följande ekvationssystemet saknar lösningen x+y = −4 x − 2y = 2 3x + 4y = 1 Om man löser detta system i Matlab, får man > > > S > M = [ 1 2; 1 -2 ; 3 4]; > N = [-4; 2; 1]; > S = M \N = 1.0000 −0.8333 Anm. Vinkel beräkning arccos(x) > > acos (1/13) ans = 1.4938 i radian Exempel: Vinkeln mellan vektorerna u = (1, −2, 3) och v = (4, 1, 0). > > u = [1 -2 3] > > v = [4 1 0] > > a = dot(u, v) a= 2 > > b = sqrt(dot(u, u)) b= 3.7417 > > c = sqrt(dot(v, v)) c= 4.1231 > > vinkeln = acos(a/(b*c)) vinkeln = 1.4408 i radian X) m-l. För redovisnings ändamål kan man skappa en m-l för varje uppgift, sedan kan man återkomma till dessa uppgifter när man vill. XI) Redovisninguppgifter 1) Finn vinkeln mellan vektorerna s = (2, −1) och t = (3, 4). 2) Beräkna volymen till denna parallepipped som spänns upp av vektorerna u = (1, −2, 3), v = (4, 1, 0) och w = (2, −7, 3). 3) Beräkna arean till denna triangel med hörn i punkterna P : (1, −1, 2), Q : (3, 1, 0) och R : (−5, 4, −1). 4) Lös följande ekvationssystem x + y + 2z + 2w = −1 3x + 4y + 7z + 12w = −2 2x + 4y + 3z − 2w = −12 5x + y + 3z − 31w = −20 Är din lösning en riktig lösning eller en minsta-kvadrat lösning ? 5) Lös matrisekvationen 2AX + 3B = 5C, där A= 1 1 −1 0 −1 0 2 2 0 1 −1 0 3 4 5 6 , B= 1 2 −3 0 0 −2 1 5 Ange lösningen bådda i decimaltal och bråktal. , C= 3 0 −7 6 4 −2 1 −3 .