Kommentarer till tentan 2000-05-30

1a) Många fantasifulla gissningar här. Jag drog 0.5p om man inte har med "ekvidistanta punkter".

1b) Många som inte kom ihåg definitionerna.
Eftersom 0 < eps <= 1, så är 2 /  eps > 1 (i normen av inversen). Det behövs inget beloppstecken på eps heller. Matrisen är illa konditionerad när eps är nära noll.

1c) Notera att x antar värdena 1, 2, 4, 8, 16 etc, men tabellen ger exp(x) där x = 0, 10, 20, 30, ... Anledningen är att det inte skall bli för enkelt.

1d) Onödigt många missar på detta, vi gjorde ju detta på lab 1. Observera att 1 / Inf = 0 och inte -Inf t.ex. Tänk på gränsvärdet. Observera att sin(1) inte är noll. Det är dessutom inte ens nära noll, eftersom vi arbetar med radianer (sin(1)  = 0.84.... Om man däremot räknar med grader, vilket vi ju nästan aldrig gör, så är sin(1°) = sin(pi / 180) = 0.017...). Slutligen har sin x, x -> Inf inget gränsvärde, utan sin(Inf) = NaN.

1e) Gick bra för många. En del blandade dock ihop detta med egenvärden och egenvektorer. Diagonalen i D är normalt inte egenvärden, eftersom L inte är en ortogonal matris. Här i Matlab:

>> A = [1 1; 1 4]  % bilda A
A =
     1     1
     1     4
>> L = [1 0; 1 1], D = diag([1 3])  % och L samt D
L =
     1     0
     1     1
D =
     1     0
     0     3
>> A - L * D * L'  % kontroll
ans =
     0     0       % stämmer
     0     0

>> [X, V] = eig(A)  % nu egenvektorer/värden
X =
  -9.5709e-01   2.8978e-01  % kolonnerna är egenvektorerna
   2.8978e-01   9.5709e-01  % X är inte triangulär (vilket L är)
V =
   6.9722e-01            0  % och diagonalen egenvärdena
            0   4.3028e+00  % OBS: inte lika med D

>> X' * X                   % X är ortogonal,
ans =
     1     0
     0     1
>> L' * L                   % men det är inte L
ans =
     2     1
     1     1

1f) Gick bättre än väntat, jag trodde att den skulle leda till rätt stora problem.. Många kom på ansatsen x = ej - ek, bra!

1g) Gick hyfsat, skulle ju vara en svårare uppgift. Somliga jobbade en hel del för att lösa minimeringsproblemet givet Q och R. Det behöver man nu inte. Antingen kan man utnyttja härledningen i föreläsningsanteckningarna. Alternativt kan man utnyttja normalekvationerna. A = QR medför att normalekvationerna, A' A x = A' b, blir R' R x = R' Q' b (ty Q' Q = I). Eftersom R är ickesingulär för vi slutligen systemet R x = Q' b.
Det råkar bli samma formel om man utgår från Ax = b, men det är ju ett annat problem.

2. Flera har glömt iterationsindex (som vanligt, fastän jag har påpekat detta flera gånger under kursen). Detta ger ett poängs avdrag.
Samma gäller högerleden i ekvationerna, t.ex. (x + y + z) / 3 = 4. Flera har struntat i högerledet, 4. Jag påpekade även detta under kursens gång. Detta ger ett poängs avdrag.
Man kan förenkla ekvationerna, t.ex. till x + y + z - 12 = 0, xyz - 8 = 0, 1/x + 1/y + 1/z - 3 = 0. Man får då enklare derivator; en del har deriverat fel. T.ex. är inte derivatan av 1 / x lika med ln x utan den är -1 / x2. Rätt många deriverade fel för (xyz)^(1/3). Man hade sluppit detta om man skrivit om ekvationen. Nåväl, derivatan (med avseende på x) är (1/3) (xyz)^(-2/3) yz (glöm inte den inre derivatan).
1 / H = (1/x + 1/y + 1/z) / 3 medför inte att H = (x + y + z) / 3. Om man inte ser detta borde man ändå inse att då vore M = H vilket leder till ett icke lösbart system och till en singulär Jacobian.

Använd vettiga beteckningar. Man kan inte låta x stå både för iterationsvektorn och för den sökta variabeln x.
En del skriver något i stil med:
a(k+1) = a(k) - (något som beror av xk, yk, zk) utan att definiera vad a(k) är. Jag gillar inte att gissa. Du som tenterar skall övertyga mig att du kan lösa uppgiften.

3. Läs uppgiftstexten! Det står att man skall skriva ett Matlabprogram... Det står inte att man skall ta ett steg med Eulers metod (så, om man nu har med det så ger det inga poäng).
Matlabprogrammering har gått halvbra. Jag tycker att den borde ha gått mycket bättre, eftersom alla har labbat på detta (och jag tror att alla som har tentat dessutom är godkända på ode-labben). Ja sade också på föreläsningen att man måste kunna använda ode45 för att lösa ett problem.
Begynnelsevärdesvektorn, y0, måste finnas med i huvudprogrammet och inte i rutinen som man skickar som parameter till ode45.
-2:0.02:0 ger 101 värden, inte 100. Enklare att använda linspace. Några har skrivit -2:100:0 men det ger bara värdet -2.
Tanken var att man skulle använda ode45, med eftersom detta inte står i tentamenstesen så har jag godkänt en implementation av Eulers metod. Jag sa dock under föreläsningen att man aldrig använder Eulers metod i praktiken.

4. a) har nästan alla klarat, och många har även klarat b). I b) har dock somliga först valt vikterna, lite godtyckligt, och sedan bestämt gradtalet. Det står dock att man skall välja vikterna så att gradtalet maximeras. Detta medför att man får lösa ett system av ekvationer.

5. || a ||2 = 1vilket medför att aTa = 1. Jag har dragit 0.5p för detta.
Observera att man inte kan bilda matris-vektor-produkten t = A t utan extra mine. Produkten v = t + A t är dock OK.
En del skriver beräkningen av v = At som At = v, men jag förstår inte varför. I de programspråk (Matlab, C/C++, Fortran, Java, ...) som vi använder, står alltid resultatet till vänster.
En del har skrivit: LU-faktorisera A, och beräkna sedan t = A \ a. Jag har varit snäll vid bedömningen av detta. Om man skriver så här i Matlab beräknas ju en ny LU-faktorisering.
Rätt många har skrivit: lös LU a = a. man har därmed förstört sitt gamla a, så när man sen bildar aTa, får man fel värde.
Några har börjat med att LU-faktorisera A och sedan lösa fyra system. Det skulle svara mot att beräkna A-1a, A-2a, A-3a, A-4a, men man har ju inte de två sista termerna.
6. Flera som inte kan logaritmlagarna, skärpning!
Om man har parametrar i A eller b får man noll poäng på uppgiften (för då vet man inte vad ett linjärt minstakvadraproblem är).
Noll poäng får man också om man har ett felaktigt antal parametrar.
Om man inte har formulerat ett minstakvadraproblem utan ett linjärt ekvationssystem, Ax = b, har jag dragit 1 p.

Back